Fuchsia 編程語言策略:前端用Dart,Go 要退出
谷歌新一代開源操作系統Fuchsia的開發者網站上公佈了一份Fuchsia編輯語言策略,文檔描述了C、C++、Dart、Rust與Go的優劣勢,並明確指定了其中哪些語言將會在Fuchsia開發生態中得到怎樣程度的支持。
該策略文檔描述了Fuchsia 項目在Fuchsia Platform Source Tree(Fuchsia 平台源碼樹)和供終端開發者在這之外構建Fuchsia 開發目標設備軟件時使用和支持的編程語言。
Fuchsia Platform Source Tree 是fuchsia.googlesource.com 上託管的Fuchsia 源碼,終端開發者是指在Fuchsia Platform Source Tree 之外為Fuchsia 編寫軟件的人。與終端開發者相比,Fuchsia Platform Source Tree 可以匯聚對Fuchsia 系統及其基礎技術更大的更改,因為可以執行僅影響Fuchsia Platform Source Tree 的更改,而無需與其他人員進行協調。相反,影響終端開發者的更改需要更多的協調,並且需要更長的執行時間。
谷歌介紹,對終端開發者的支持意味著Fuchsia SDK 需要包含可幫助他們為Fuchsia 開發軟件的工具和庫,包括FIDL(Fuchsia Interface definition language,Fuchsia 接口定義語言)特定語言後端與支持庫等。對異步編程的強大支持則意味著可以使用直線型代碼,例如使用Rust/Dart 等語言的async/await 編寫異步程序。
文檔接下來分別羅列了幾種編程語言,分析了它們的優缺點之後,得出如下結論:
C
- C 被支持用於終端開發者。
- 在Fuchsia Platform Source Tree 中,不鼓勵使用C 的新用法,並且僅批准用於以下領域:
- 用於底層系統編程,包括內核中
- 用於定義到共享庫和其它系統組件的ABI 穩定接口
C++
- C++ 被支持用於終端開發者。
- 批准在整個Fuchsia Platform Source Tree 中使用C++。
Dart
- Dart 被支持用於面向非驅動程序的終端開發者。
- Dart 被批准在Fuchsia Platform Source Tree 中用於用戶界面和無限期運行的程序。
Rust
- 終端開發者不支持使用Rust。
- 除了Zircon 內核,Rust 被批准在整個Fuchsia Platform Source Tree 中使用。
Go
- Go 僅被批准在網絡技術棧中使用,因為網絡棧的遷移需要大量成本。時間准許的話,應該將網絡棧遷移到批准的語言。
- 必須將Fuchsia 中用於目標設備上生產軟件的所有其它 Go 代碼遷移到批准的語言。
總結一下,Go在Fuchsia生態中可能會有些失落,值得注意的是文檔中關於其缺點的介紹:
- 使用垃圾回收來管理內存,這比其它用於管理內存的技術佔用更多的資源
- 運行時環境龐大
- Fuchsia Platform Source Tree 在使用Go 方面具有負面的實施經驗。Fuchsia 項目在Go 中構建的系統組件消耗的內存和內核資源相比使用C++ 或Rust 構建的同類組件更多
- 工具鏈產生大型二進製文件
值得關注的是,文檔中沒有涉及Fuchsia 已經確認支持的Python。不過關於Python的支持細節,支持語言頁面也沒有詳細內容,只有一欄欄 TODO,應該是還沒有做好準備。
而另一方面,此前關於支持JavaScript的傳言,看來也無法得證。