Fuchsia 编程语言政策

文章目录

  • Fuchsia 编程语言政策
    • 范围
    • 定义
    • 语言
      • C
        • 分析
        • 决定
      • C++
        • 分析
        • 决定
        • 分析
        • 决定
      • Rust
        • 分析
        • 决定
      • Go
        • 分析
        • 决定
      • Python
        • 分析
        • 决定

范围

本文档描述了 Fuchsia 项目在目标设备上为生产软件使用和支持的编程语言,包括在 Fuchsia 平台源代码树内以及在 Fuchsia 源平台树之外为 Fuchsia 构建的最终开发人员。该政策不适用于 (a) 目标设备或主机设备上的开发人员工具,或 (b) 目标设备上未在设备的正常终端用户操作中执行的软件。例如,此策略不适用于 zxdb(调试器),因为 zxdb 是开发人员工具;该策略确实适用于 pkgfs,因为 pkgfs(文件系统)在设备的正常最终用户操作中执行。

定义

Fuchsia 平台源代码树是托管在 fuchsia.googlesource.com 上的源代码。与最终开发人员相比,Fuchsia 平台源代码树可以吸收对 Fuchsia 系统及其底层技术的更大更改,因为仅影响 Fuchsia 平台源代码树的更改可以在不与其他人群协调的情况下执行。

最终开发人员是在 Fuchsia 平台源代码树之外为 Fuchsia 编写软件的人。与仅影响 Fuchsia 平台源代码树的更改相比,影响最终开发人员的更改需要更多的协调和执行时间更长。

支持最终开发人员意味着 Fuchsia IDK 包含帮助人们使用该语言为 Fuchsia 开发软件的工具和库,包括 FIDL 的特定语言后端(和支持库)。支持还意味着一定程度的文档,包括教程和示例,以及来自开发者关系的投资。

对异步编程的强大支持意味着可以使用直线代码编写异步程序(例如,在 Rust 和 Dart 等语言中使用 async/await)。

强封装是面向对象编程语言中的一个艺术术语。这意味着该语言允许类设计者为private类的字段和该类的对象强制实施可见性规则(例如,在 C++ 或 Java 中)。

语言

C

分析

  • 优点:C 是一种广泛使用的语言。该语言具有易于理解的特性,在很长一段时间内一直很稳定,并且过去曾被用于构建类似的系统。该语言具有成熟的工具链和相关的开发人员工具。
  • 优点:C 有一个稳定的 ABI,它让 Fuchsia IDK 包含最终开发人员可以重用的预构建二进制文件。
  • 优点:许多语言可以使用外部函数接口与 C 进行互操作。支持 C 使最终开发人员更容易将这些语言与 Fuchsia 集成。
  • 优点:我们目前的最终开发人员已经在使用该语言。
  • 缺点:对异步编程的支持很弱。
  • 缺点:用该语言编写的程序通常会因该语言缺乏内存安全性而产生安全漏洞。
  • 缺点:用该语言编写的程序通常包含资源泄漏,因为该语言不提供自动释放资源的工具。
  • 缺点:与 C++ 相比,类型安全性较弱。简单地将我们的一些 C 代码重新编译为 C++ 通常会导致编译器错误,这些错误会暴露代码中的潜在错误。

决定

  • 最终开发人员支持 C。(请参阅 支持的 C 版本列表。)
  • 在 Fuchsia 平台源代码树中,不鼓励 C 的新用途。向相关 OWNERS 寻求有关是否将 C 用于新代码的指导。
  • C 被批准用于 Fuchsia 平台源代码树:
    • 用于低级系统编程,包括在内核中,以及
    • 用于定义共享库和其他系统组件的 ABI 稳定接口。

C++

分析

  • 优点:我们当前的许多最终开发人员都广泛使用 C++。
  • 优点:Fuchsia 平台源代码树广泛使用 C++。
  • 优点:C++ 是一种广泛使用的语言。该语言具有易于理解的特性,在很长一段时间内一直很稳定,并且过去曾被用于构建类似的系统。该语言具有成熟的工具链和相关的开发人员工具。
  • 缺点:对异步编程的支持很弱。
  • 缺点:用该语言编写的程序通常会因该语言缺乏内存安全性而产生安全漏洞。

决定

  • 最终开发人员支持 C++。(请参阅 支持的 C++ 版本列表。)
  • C++ 被批准在整个 Fuchsia 平台源代码树中使用。

分析

  • 优点:我们目前的最终开发人员已经在使用该语言。
  • 优点:Fuchsia 的大部分用户界面都是使用 Flutter 构建的,而 Flutter 使用的是 Dart。
  • 优点:可以使用直线代码编写异步程序。
  • 优点:使用这种语言的人效率很高。
  • 优点:Fuchsia 项目有机会影响语言的发展。
  • 优点:该语言提供内存安全保证,从而降低了以该语言开发的软件存在安全漏洞的风险。
  • 缺点:该语言使用垃圾收集来管理内存,这比其他管理内存的技术更耗费资源。
  • 缺点:该语言具有大量的运行时环境。
  • 缺点:工具链强制在二进制大小、性能和启动延迟之间进行权衡,这比工具链为其他语言提供的权衡更糟糕。

决定

  • Dart 支持面向非驱动程序的最终开发人员。
  • Dart 被批准在 Fuchsia 平台源代码树中用于用户界面和不会无限期运行的程序。

Rust

分析

  • 优点:Fuchsia 平台源代码树在使用 Rust 方面有着积极的实施经验。
  • 优点:该语言提供内存安全保证,从而降低了以该语言开发的软件存在安全漏洞的风险。
  • 优点:可以使用直线代码编写异步程序。
  • 优点:Fuchsia 项目有机会影响语言的发展。
  • 缺点:Rust 不是一种广泛使用的语言。语言的属性还没有被很好地理解,选择了一个不寻常的语言设计点(例如,借用检查器)并且只存在了相对较短的时间。
  • 缺点:我们当前的最终开发人员都没有使用 Rust。

决定

  • 最终开发人员不支持 Rust。
  • Rust 被批准在整个 Fuchsia 平台源代码树中使用,但以下情况除外:
    • 内核. Zircon 内核是使用一组受限制的技术构建的,这些技术已经建立了在生产操作系统中使用的行业跟踪记录。

Go

分析

  • 优点:Go 是 Google 内部广泛使用的语言。
  • 优点:gVisor 使用该语言实现了一个网络堆栈,并且该网络堆栈已与 Fuchsia 集成。
  • 优点:使用这种语言的人效率很高。
  • 优点:Fuchsia 项目有机会影响语言的发展。
  • 优点:该语言提供内存安全保证,从而降低了以该语言开发的软件存在安全漏洞的风险。
  • 优点:该语言具有广泛的库生态系统,可能对 Fuchsia 有用。
  • 缺点:该语言使用垃圾收集来管理内存,这比其他管理内存的技术更耗费资源。
  • 缺点:该语言具有大量的运行时环境。
  • 缺点:Fuchsia 平台源代码树在使用 Go 时有过负面的实施经验。Fuchsia 项目在 Go 中构建的系统组件比 Fuchsia 项目使用 C++ 或 Rust 构建的对应物(或替代品)使用了更多的内存和内核资源。
  • 缺点:工具链生成大型二进制文件。

决定

  • Go 未获批准,但以下情况除外:

    • 网络堆栈。将 netstack 迁移到另一种语言需要大量投资。在时间充裕的情况下,我们应该将 netstack 迁移到认可的语言。
  • 在 Fuchsia 平台源代码树中对目标设备上的生产软件的所有其他使用必须迁移到批准的语言。

Python

分析

  • 优点:该语言被广泛使用。
  • 优点:该语言用于 Fuchsia 的许多开源依赖项的构建系统中。
  • 优点:使用这种语言的人效率很高。
  • 优点:该语言拥有强大的贡献者和库生态系统,可能对 Fuchsia 有用。
  • 优点:该语言提供内存安全保证,从而降低了以该语言开发的软件存在安全漏洞的风险。
  • 缺点:该语言使用垃圾收集来管理内存,这比其他管理内存的技术更耗费资源。
  • 缺点:该语言具有大量的运行时环境。
  • 缺点:该语言在性能上与 C++、Rust 或 Dart 没有竞争力。
  • 缺点:通常在执行期间而不是静态地检测到编程错误。
  • 缺点:该语言缺乏强大的封装性。

决定

  • 最终开发人员不支持 Python。

  • Python 3 被批准在 Fuchsia 平台源代码树中用于以下目的:

    • 建造
    • 主机工具
  • Python 2.7 已弃用,Fuchsia 平台源代码树中的现有用途必须迁移到批准的语言。

  • Fuchsia Programming Language Policy

谷歌Fuchsia操作系统对编程语言的支持决议相关推荐

  1. linux系统支持多种硬件平台吗,linux操作系统对硬件的要求是多少

    你们知道在Linux中操作系统对硬件的要求多吗,是多少?下面是学习啦小编带来的关于linux操作系统对硬件的要求是多少的内容,欢迎阅读! linux操作系统对硬件的要求是多少? Linux操作系统对硬 ...

  2. 谷歌 Fuchsia OS 进入开发者测试阶段,它真的会代替安卓吗?

    作者 | Evana Margain 译者 | 明明如月 整理 | 夕颜,责编 | 唐小引 出品 | CSDN(ID:CSDNnews) 在过去的 8 到 10 年里,移动市场一直被两个我们都熟悉的系 ...

  3. openresty完全开发指南_谷歌 Fuchsia OS 进入开发者测试阶段,它真的会代替安卓吗?...

    作者 | Evana Margain 译者 | 明明如月 整理 | 夕颜,责编 | 唐小引 出品 | CSDN(ID:CSDNnews) 在过去的 8 到 10 年里,移动市场一直被两个我们都熟悉的系 ...

  4. fuchsiaos和鸿蒙os区别,谷歌Fuchsia OS和华为鸿蒙系统(HarmonyOS)没有必然联系

    谷歌Fuchsia OS和华为鸿蒙系统(HarmonyOS)都是属于新一代的操作系统,这两个系统都不基于Linux,更不基于安卓(Android).基于这个思路,有人认为它们有一些联系,或者说在开发构 ...

  5. 谷歌第一个开源编程语言_我的第一个开源冒险

    谷歌第一个开源编程语言 by Anthony Ng 由Anthony Ng 我的第一个开源冒险 (My First Open Source Adventure) ✨✨灵感✨✨ (✨✨ Inspirat ...

  6. 新版谷歌Chrome取消对PPAPI插件支持后,浏览器网页打开编辑保存微软Office、金山WPS文档解决方案

    最近陆续看到一些大学发布公告,谷歌Chrome取消了对PPAPI插件支持,导致某些在线Office厂家产品将无法在谷歌Chrome107及以上版本运行,被迫更换360浏览器或者使用低版本Chrome浏 ...

  7. 一周看点 | Docker创始人再创业;谷歌Fuchsia OS负责人离职;淘宝小范围内测微信支付;蒋凡卸任淘宝董事长...

    Docker创始人再创业 Solomon Hykes和他在Docker的同事一起创立了Dagger,日前刚刚完成了2000万美元的A轮融资.Dagger要帮助DevOps工程师们将自己的管道编写成CU ...

  8. 鸿蒙系统的战略意义,方正证券:鸿蒙操作系统对华为的意义

    金融界网5月25日消息,方正证券认为鸿蒙操作系统对华为的意义主要在于以下三点: 1.是华为汽车的战略支点: 2.是华为手机+IoT的延续: 3.是战略升华的落脚点. 第一层:是华为汽车的战略支点. 华 ...

  9. 谷歌钦定的编程语言Kotlin大揭秘

    第一时间关注程序猿(媛)身边的故事 谷歌钦定的编程语言Kotlin大揭秘 语法+高级特性+实现原理:移动开发者升职加薪宝典! 谷歌作为世界级的科技公司巨头,强悍的技术研发与创新能力使其一直是业界的楷模 ...

最新文章

  1. java web 调用hadoop_Java及Web程序调用hadoop2.6
  2. HTML5背后的故事
  3. Python模块学习——optparse
  4. [云炬创业学笔记]第一章创业是什么测试6
  5. AWK如何打印从某一列到最后一列的内容
  6. 原生APP与移动Web App的比较
  7. 使用git时ssh提示“Load key /home/devid/.ssh/id_rsa: bad permissions”的解决办法
  8. 4位加法器的设计代码verilog_一个简单的8位处理器完整设计过程及verilog代码
  9. 深入Javascript中apply、call、bind
  10. 【甘道夫】HBase基本数据操作的详细说明【完整版,精绝】
  11. 80后屌丝站长自曝日赚6000(纯分享贴)
  12. 微星P55-主板是怎样造出来的
  13. win10系统中如何把自带的IE11降级回IE8?
  14. DB2活动日志满的原因、分析、处理与避免
  15. 数据库之考勤管理系统
  16. 【JavaMap接口】HashMap源码解读实例
  17. 【错误】Non-static method*** cannot be referenced from a static
  18. python抢火车票 短信通知
  19. 《操作系统》-吸烟者问题
  20. 20款 密码破解工具

热门文章

  1. 在android手机上运行PHP 1
  2. win11安装wsl2及linux系统安装anaconda cuda tensorrt
  3. 云计算与大数据平台课堂作业
  4. xiuno论坛部署及常见问题处理
  5. 多商家入驻分销平台基本功能设计
  6. MOOS程序解析记录(1)
  7. Java 实现PDB数据库中蛋白质部分序列与Uniport数据库中相应的全长序列的最优匹配
  8. 实施ERP系统后需要维护吗?
  9. 一、达梦数据库的安装
  10. 卡巴斯基和Endtab.org开设新课程教授用户如何防范人肉搜索