谷歌Fuchsia编辑语言策略介绍

电子说

1.3w人已加入

描述

谷歌新一代开源操作系统 Fuchsia 的开发者网站上公布了一份 Fuchsia 编辑语言策略,文档描述了 C、C++、Dart、Rust 与 Go 的优劣势,并明确指定了其中哪些语言将会在 Fuchsia 开发生态中得到怎样程度的支持。

谷歌

该策略文档描述了 Fuchsia 项目在 Fuchsia Platform Source Tree(Fuchsia 平台源码树)和供终端开发者在这之外构建 Fuchsia 开发目标设备软件时使用和支持的编程语言。

Fuchsia Platform Source Tree 是 fuchsia.googlesource.com 上托管的 Fuchsia 源码,终端开发者是指在 Fuchsia Platform Source Tree 之外为 Fuchsia 编写软件的人。与终端开发者相比,Fuchsia Platform Source Tree 可以汇聚对 Fuchsia 系统及其基础技术更大的更改,因为可以执行仅影响 Fuchsia Platform Source Tree 的更改,而无需与其他人员进行协调。相反,影响终端开发者的更改需要更多的协调,并且需要更长的执行时间。

谷歌介绍,对终端开发者的支持意味着 Fuchsia SDK 需要包含可帮助他们为 Fuchsia 开发软件的工具和库,包括 FIDL(Fuchsia Interface definition language,Fuchsia 接口定义语言)特定语言后端与支持库等。对异步编程的强大支持则意味着可以使用直线型代码,例如使用 Rust/Dart 等语言的 async/await 编写异步程序。

文档接下来分别罗列了几种编程语言,分析了它们的优缺点之后,得出如下结论:

C

C 被支持用于终端开发者。

在 Fuchsia Platform Source Tree 中,不鼓励使用 C 的新用法,并且仅批准用于以下领域:

用于底层系统编程,包括内核中

用于定义到共享库和其它系统组件的 ABI 稳定接口

C++

C++ 被支持用于终端开发者。

批准在整个 Fuchsia Platform Source Tree 中使用 C++。

Dart

Dart 被支持用于面向非驱动程序的终端开发者。

Dart 被批准在 Fuchsia Platform Source Tree 中用于用户界面和无限期运行的程序。

Rust

终端开发者不支持使用 Rust。

除了 Zircon 内核,Rust 被批准在整个 Fuchsia Platform Source Tree 中使用。

Go

Go 仅被批准在网络技术栈中使用,因为网络栈的迁移需要大量成本。时间准许的话,应该将网络栈迁移到批准的语言。

必须将 Fuchsia 中用于目标设备上生产软件的所有其它 Go 代码迁移到批准的语言。

总结一下,Go 在 Fuchsia 生态中可能会有些失落,值得注意的是文档中关于其缺点的介绍:

使用垃圾回收来管理内存,这比其它用于管理内存的技术占用更多的资源

运行时环境庞大

Fuchsia Platform Source Tree 在使用 Go 方面具有负面的实施经验。Fuchsia 项目在 Go 中构建的系统组件消耗的内存和内核资源相比使用 C++ 或 Rust 构建的同类组件更多

工具链产生大型二进制文件

值得关注的是,文档中没有涉及 Fuchsia 已经确认支持的 Python。不过关于 Python 的支持细节,支持语言页面也没有详细内容,只有一栏栏 TODO,应该是还没有做好准备。

谷歌

而另一方面,此前关于支持 JavaScript 的传言,看来也无法得证。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分