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 语言构建的目标设备上的生产软件都必须迁移到批准的语言。
发布了73 篇原创文章 · 获赞 2 · 访问量 1436

猜你喜欢

转载自blog.csdn.net/weixin_39658118/article/details/104530466