google新操作系統Fuchsia

前言

Fuchsia,是由Google公司開發的繼Android和Chrome OS之後的第三個系統,已在Github中公開的部分源碼可以得知。Google對於Fuchsia的說明是“Pink(粉紅)+Purple(紫色)=Fuchsia(燈籠海棠,一個新的操作系統)”。

開發語言

谷歌新一代開源操作系統 Fuchsia 的開發者網站上公佈了一份 Fuchsia 編輯語言策略,文檔描述了 C、C++、Dart、Rust 與 Go 的優劣勢,並明確指定了其中哪些語言將會在 Fuchsia 開發生態中得到怎樣程度的支持。
在這裏插入圖片描述

C

優點:

  • C 是一種廣泛使用的語言。該語言具有易於理解的特性,已在很長一段時間內保持穩定,並且過去已用於構建類似的系統。該語言具有成熟的工具鏈和相關的開發人員工具;
  • C 具有穩定的 ABI,它使 Fuchsia SDK 包含預編譯的二進制文件,供最終開發人員重新使用;
  • 許多語言可以使用外部函數接口與 C 互操作。支持 C 可使最終開發人員更輕鬆地將這些語言與 Fuchsia 集成在一起;
    我們目前的終端開發人員已經在使用該語言。

缺點:

  • 對異步編程的支持很弱;
  • 用該語言編寫的程序通常會由於缺乏內存安全性而導致安全漏洞。
  • 用該語言編寫的程序通常包含資源泄漏,因爲該語言不提供自動釋放資源的功能。
  • 與 C++ 相比,類型安全性較弱。簡單地將某些 C 代碼重新編譯爲 C++通常會導致編譯器錯誤,這些錯誤會掩蓋代碼中的潛在錯誤。

最終決定:

  • 支持終端開發人員使用 C 語言,這裏顯示了支持哪個版本 https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/docs/concepts/api/c.md#Language-versions。
  • 在 Fuchsia 平臺源代碼樹中,不鼓勵使用 C 開發新功能。
  • 允許在以下情況下,在 Fuchsia 平臺源代碼樹中使用 C:
  • 低級系統編程,包括內核中的編程。
  • 定義共享庫和其他系統組件的 ABI 穩定接口。

C++

優點:

  • 目前許多終端開發人員都在廣泛使用 C++。
  • Fuchsia 平臺源代碼樹廣泛使用 C++。
  • C++是一種廣泛使用的語言。語言本身易於理解(譯註:這個大家認可嗎?),經過長時間的沉澱非常穩定,並且過去已用於構建類似的系統。C++具有成熟的工具鏈和相關的開發人員工具。

缺點:

  • 對異步編程的支持很弱。
  • 用 C++語言編寫的程序常常會因爲語言缺乏內存安全性而導致安全漏洞。

最終決定:

  • 支持終端開發人員使用 C++。
  • 允許在 Fuchsia 平臺源代碼樹中使用 C++。

Dart

優點:

  • 目前許多終端開發人員都在使用 Dart。
  • Fuchsia 的大部分用戶界面都是使用 Flutter 構建的,而 Flutter 使用的是 Dart。
  • 可以使用線性流程的代碼編寫異步程序。
  • 使用 Dart 編程的生產力很高。
  • Fuchsia 項目有機會影響 Dart 語言的發展。
  • Dart 語言提供了內存安全保證,降低了使用該語言開發的軟件存在安全漏洞的風險。

缺點:

  • Dart 語言使用垃圾回收來管理內存,佔用的資源比其他內存管理技術更多。
  • Dart 語言的運行時環境很大。
  • 工具鏈迫使我們必須在可執行文件大小、性能和啓動延遲之間進行權衡,這比其他語言的工具鏈造成的權衡更糟。

最終決定:

  • 支持 Dart,主要供非驅動程序的終端開發人員使用。
  • 在 Fuchsia 平臺源代碼樹中,允許使用 Dart 開發用戶界面和非常駐程序。

Rust

優點:

  • Fuchsia 平臺源代碼樹在使用 Rust 方面有很多積極的實現經驗。
  • Rust 提供了內存安全保證,降低了使用該語言開發的軟件存在安全漏洞的風險。
  • 可以使用線性流程的代碼編寫異步程序。
  • Fuchsia 項目有機會影響 Rust 語言的發展。

缺點:

  • Rust 不是一種廣泛使用的語言。語言的特性尚未得到很好地理解,該語言選擇了不尋常的語言設計點(例如,借用檢查器),而且歷史相對較短。
  • 目前我們的終端開發人員都沒有使用 Rust。

最終決定:

  • 不支持終端開發人員使用 Rust。
  • 允許在 Fuchsia 平臺源代碼樹中使用 Rust,但以下情況除外:
  • kernel:Zircon 內核是使用一組受限制的技術構建的,這些技術在建立生產操作系統方面有良好的記錄。

Go

優點:

  • Go 是 Google 內部廣泛使用的語言。
  • gVisor 已使用該語言實現了網絡堆棧,並且該網絡堆棧已與 Fuchsia 集成在一起。
  • 使用 Go 語言編程的生產力很高。
  • Fuchsia 項目有機會影響 Go 語言的發展。
  • Go 語言提供了內存安全保證,降低了使用該語言開發的軟件存在安全漏洞的風險。
  • Go 語言有具有廣泛的庫生態系統,對 Fuchsia 非常實用。

缺點:

  • Go 語言使用垃圾回收來管理內存,佔用的資源比其他內存管理技術更多。
  • Go 語言的運行時環境很大。
  • Fuchsia 平臺源代碼樹在使用 Go 方面具有負面的實現經驗。在 Fuchsia 項目,用 Go 構建的系統組件佔用的內存和內核資源比 C++或 Rust 等更多。
  • 工具鏈會產生較大二進制文件。

最終選擇:

  • 不支持終端開發人員使用 Go,但以下情況除外:- 網絡棧。將網絡棧遷移到另一種語言上需要大量投資。如果時間允許,我們應該將網絡棧遷移到批准的語言。
  • 其他在 Fuchsia 中使用 Go 語言構建的目標設備上的生產軟件都必須遷移到批准的語言。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章