1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

科技 Fuchsia 编程语言策略:前端用 Dart,Go 要退出

本帖由 漂亮的石头2020-02-26 发布。版面名称:新闻聚焦

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

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

    [​IMG]

    该策略文档描述了 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,应该是还没有做好准备。​

    [​IMG]

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