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