Fuchsia 的开发语言政策与解读

2020-03-20 12:13:45 浏览数 (1)

我在之前发布过的 《Fuchsia 是什么?Fuchsia OS 的未来如何?》 中介绍过 Fuchsia 的大体情况,也收到了大家对于 Fuchsia OS 褒贬不一的评价,比如:

也有不看好未来的评论,比如:

其实这些评价都很正常,毕竟一个系统的成功,除了实力之外还受到“天时地利”的影响,但是这不影响我们对它的关注,而 Fuchsia 的 Fuchsia 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 以后能有一席之地,毕竟新的系统也代表着新的机会。

0 人点赞