我在之前釋出過的 《Fuchsia 是什麼?Fuchsia OS 的未來如何?》 中介紹過 Fuchsia
的大體情況,也收到了大家對於 Fuchsia
OS 褒貶不一的評價,比如:
也有不看好未來的評論,比如:
其實這些評價都很正常,畢竟一個系統的成功,除了實力之外還受到“天時地利”的影響,但是這不影響我們對它的關注,而 Fuchsia
的 Fuchsia Programming Language Policy 也可以幫助我們從另一個角度去認識 Fuchsia
的策略與定位。
Fuchsia Programming Language Policy
Fuchsia
目前主要支援的語言政策有 C
、C++
、Dart
、Rust
、Go
、Python
,但是實質上主要的只有 C
、C++
、Dart
和 Rust
,其中:
- C 語言支援被所有終端開發人員使用,但是 Google 不推薦使用 C 語言的新特性,而 C 一般是被用於底層核心開發、 ABI 介面、驅動和系統元件等。
Fuchsia
中C
庫是根據C11
標準編寫的(有少量例外,例如unix signal support
,與我們的C
庫ABI
並不特別相關),並且C99
不會是相容目標。
- C++ 語言支援被所有終端開發人員使用,C++ 在
Fuchsia
原始碼中被廣泛使用。
Fuchsia
中C
的標頭檔案應該和 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
以後能有一席之地,畢竟新的系統也代表著新的機會。