Go和TinyGo是两种不同的Go语言编译器,它们之间有以下几点区别:
-
目标平台:
- Go:Go语言编译器主要面向通用计算机平台,如Windows、Linux、macOS等。
- TinyGo:TinyGo专注于支持嵌入式系统和物联网设备等资源受限的平台,如微控制器、嵌入式设备、WebAssembly等。
-
性能:
- Go:Go编译器生成的可执行文件通常较大,运行速度较快,适合在通用计算机上运行。
- TinyGo:TinyGo针对嵌入式系统做了优化,生成的可执行文件更小,运行速度可能会受到一定影响,但更适合在资源受限的环境下运行。
-
语言特性支持:
- Go:Go语言拥有完整的标准库和语言特性,适合构建各类应用程序。
- TinyGo:由于针对嵌入式系统,TinyGo对部分Go语言特性和标准库进行了裁剪,不支持所有Go标准库,但提供了适用于嵌入式系统的替代方案。
-
编译器实现:
- Go:Go编译器是使用Go语言本身实现的。
- TinyGo:TinyGo是一个基于LLVM的Go编译器前端,通过LLVM将Go代码编译为目标平台的机器码。
总的来说,Go适合构建通用计算机上的应用程序,而TinyGo则更适合用于嵌入式系统和物联网设备等资源受限的平台。选择使用哪种编译器取决于你的目标平台和需求。
参数:
- https://tinygo.org/
- https://tinygo.org/docs/reference/lang-support/stdlib/
- https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes.html#attributes
- https://mp.weixin.qq.com/s/7K2sSPpindL1ZL0ZbjjxnA
- https://github.com/alibaba/higress/blob/5fbfbe0e4a1bf5fa6979179b82f435dcc5680630/plugins/wasm-cpp/extensions/sni_misdirect/plugin.cc#L51