Go和TinyGo

张占岭發表於2024-03-08

Go和TinyGo是兩種不同的Go語言編譯器,它們之間有以下幾點區別:

  1. 目標平臺

    • Go:Go語言編譯器主要面向通用計算機平臺,如Windows、Linux、macOS等。
    • TinyGo:TinyGo專注於支援嵌入式系統和物聯網裝置等資源受限的平臺,如微控制器、嵌入式裝置、WebAssembly等。
  2. 效能

    • Go:Go編譯器生成的可執行檔案通常較大,執行速度較快,適合在通用計算機上執行。
    • TinyGo:TinyGo針對嵌入式系統做了最佳化,生成的可執行檔案更小,執行速度可能會受到一定影響,但更適合在資源受限的環境下執行。
  3. 語言特性支援

    • Go:Go語言擁有完整的標準庫和語言特性,適合構建各類應用程式。
    • TinyGo:由於針對嵌入式系統,TinyGo對部分Go語言特性和標準庫進行了裁剪,不支援所有Go標準庫,但提供了適用於嵌入式系統的替代方案。
  4. 編譯器實現

    • 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

相關文章