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