Fuchsia 的開發語言政策與解讀

戀貓de小郭發表於2020-03-10

我在之前釋出過的 《Fuchsia 是什麼?Fuchsia OS 的未來如何?》 中介紹過 Fuchsia 的大體情況,也收到了大家對於 Fuchsia OS 褒貶不一的評價,比如:

Fuchsia 的開發語言政策與解讀

也有不看好未來的評論,比如:

Fuchsia 的開發語言政策與解讀

Fuchsia 的開發語言政策與解讀

其實這些評價都很正常,畢竟一個系統的成功,除了實力之外還受到“天時地利”的影響,但是這不影響我們對它的關注,而 FuchsiaFuchsia Programming Language Policy 也可以幫助我們從另一個角度去認識 Fuchsia 的策略與定位。

Fuchsia Programming Language Policy

Fuchsia 目前主要支援的語言政策有 CC++DartRustGoPython,但是實質上主要的只有 CC++DartRust,其中:

  • C 語言支援被所有終端開發人員使用,但是 Google 不推薦使用 C 語言的新特性,而 C 一般是被用於底層核心開發、 ABI 介面、驅動和系統元件等

FuchsiaC 庫是根據 C11 標準編寫的(有少量例外,例如 unix signal support,與我們的 CABI 並不特別相關),並且 C99 不會是相容目標。

  • C++ 語言支援被所有終端開發人員使用,C++ 在 Fuchsia 原始碼中被廣泛使用

FuchsiaC 的標頭檔案應該和 C ++ 11,C ++ 14 和C ++ 17 標準相容,並且 C 和 C ++ 介面不應混在一個標頭檔案中。

  • Dart 主要是面向非驅動的開發人員,主要用於介面和非永久執行的程式上,而目前 Fuchsia 的大多數使用者介面都是使用 Flutter 構建的。

  • Rust 並不是面向終端開發人員,雖然 Rust 在 Fuchsia 原始碼中被廣泛使用(除了 zircon 核心),但是目前 Rust 沒有開放出來,猜測可能是 Rust 在 Fuchsia 上還不夠穩定,並且目前的終端開發者不需要直接使用到 Rust

  • Go 目前看來是後續不會被繼續在 Fuchsia 中使用,有點被拋棄的味道,目前僅僅還被用於 netstack 相關的程式碼中,但是官方表示後續可能會遷移到其他語言。

Go 的資源佔用比 C++ 和 Rust 更多,而且編譯成本相對較高,執行時環境龐大,理念上不大符合 Fuchsia 輕量級的概念。

  • Python 同樣不會被終端開發人員使用,支援 Python 3 且不相容 Python 2.7 ,目前看來 Python 主要被用於構建,開發工具指令碼上

總結看來 Fuchsia 上主要的開發語言是 C / C++ 和 Dart ,Google 是儘可能地使用自己的親生“孩子”

Google 表示選擇 Rust / Dart 的理由是其 async / await 上對非同步程式設計的強大支援, C / C++ 則是常年必備的高效語言,而從目前 Google 對於 Go 的態度上也可以猜測 Fuchsia 的定位是更輕量級的系統 ,很大可能不會像現階段 Android 那麼“重”,至少不會是為了替換 Android 而被推出

最後,從目前已知資訊可知,大概有 21 個合作伙伴出現在 Fuchsia 的 Gerrit 中,它們主要來自 13 家不同的公司,其中 6 家目前是 Android 的製造商:

  • ARM
  • GlobalEdge Software
  • Huawei
  • Imagination Technologies
  • MediaTek
  • Oppo
  • Qualcomm
  • Samsung
  • Sharp
  • Sony
  • STMicro
  • Unisoc
  • Xiaomi

當然這也只能說明了企業對 Fuchsia 感興趣,實際投入使用還是受各種外部制約,不過作為開源的系統,Fuchsia 也存在被定製 cv 的可能, 作為 Flutter 開發者還是希望 Fuchsia 以後能有一席之地,畢竟新的系統也代表著新的機會。

Fuchsia 的開發語言政策與解讀

相關文章