作者|张汉东
规划|蒂娜
全文目录:
开启新征程:Rust 2024版全球企业如何采用RustRust开源生态开发综述
本文是《Rust Language 2022年度回顾》的第一部分,内容包括:开启新征程:Rust 2024版,全球企业如何采用Rust。第二部分:https://www.infoq.cn/article/hioW21XT8opvbip3hs5F.
开启新征程:Rust 2024 EditionRust 2021 Edition发布后,官方开始制定Rust 2024 Edition的路线图。Rust版是每三年出版一次的大版。2022年4月,官方博客公布了Rust 2024路线图。让我们知道Rust的下一个愿景是什么。
Rust 2024:广泛使用Rust的目标是成为一种语言,让每个人都有能力构建可靠高效的软件。Rust不仅需要用优秀的库和工具设计和实现一门优秀的语言,还需要维护一个优秀的支持社区。
Rust 2024版的目标是广泛使用,也就是越来越多的人开始使用Rust。为了实现这一目标,2024版需要注意以下三个关键点:
拉平Rust语言的学习曲线。让Rust更容易为新用户和现有用户所用,更容易解决问题。这会吸引更多新的Rust用户。增强Rust用户之间的合作。让Rust项目(语言项目本身)的贡献者更容易拉平学习曲线。建立了庞大的Rust用户团队的公司报告称,Rust工程师的典型岗位时间约为3-6个月。当然,人一旦学会了锈,一般都会喜欢。即便如此,很多人表示在使用时感觉到“认知开销”,“学习曲线”仍然是不使用Rust的最常见原因。事实是,即使在你理解了Rust借用检查器是如何工作的之后,在你的Rust程序可以被编译之前,仍然有许多“小细节”需要被正确地处理。
Rust 2024的目标是让开发者能够直接关注问题领域的“内在复杂性”,尽可能避免来自Rust的“意外复杂性”。
实现这一愿景的计划是关注四个高层次的目标(按照从宽泛到精确的顺序):
* *更准确的分析,更少的繁琐:* *通过改进借用检查器和类型推断,编译器可以更好地识别代码何时正确。识别并消除“模板”模式,例如不得不到处复制和粘贴同一套where子句。* *更轻松地表达自己:必要时扩展语言,让开发人员直接表达他希望代码做什么。在某些情况下,这采用了语法糖的形式(比如let-else),但在其他情况下,这可能意味着扩展类型系统以能够描述新的模式(比如泛型关联类型)。改进异步支持:将我们的异步/等待支持扩展到当前的“MVP”之外,以包括异步fn、异步drop in trait和支持异步愿景文档路线图所需的其他功能。提高dyn Trait的可用性:* *拓宽可以使用dyn的Trait集合,让dyn的使用更接近泛型的使用。增强Rust用户之间的合作。Rust结合了强大的扩展机制,如所有权和借用,底层系统控制和进程宏,使其成为编写库的优秀语言。而且,多亏了Cargo,在一个程序中使用一个库只需要几行代码。尽管如此,仍有许多事情是图书馆作者不能或不能轻易做到的。例如,他们无法控制用户看到的错误消息或部署需要特别选择的“不稳定”功能。Rust 2024希望通过帮助管理功能生命周期或扩展库的功能,建立一个使库作者能够更好地服务用户的功能。
Rust 2024希望在生态系统中追求更多可以探索的改变。实现这一愿景的计划重点是四类工作:
功能生命周期:当功能从实验阶段过渡到最终完成阶段时,帮助库作者支持该功能。帮助库作者管理他们的开发生命周期和发展。更丰富的抽象:扩展允许库作者表达更丰富的抽象。例如,支持GAT允许开发人员编写更通用的库。定制开发人员体验:许可证库作者可以定制开发人员体验,例如,定制用户在没有实现trait或引入定制lints时收到的错误消息。互操作性:可以很容易地协调库生态系统,使库一起工作,而不用将它们绑定在一起。库作者可以根据需要编写可移植到多个环境中或特定于一个环境的代码。让Rust项目的贡献者更加方便。Rust语言本身也是一个Rust项目。虽然Rust语言项目非常活跃,但是当潜在贡献者想要为Rust项目做出贡献时,他们可能无法弄清楚他们感兴趣或想要做出贡献的某些事情的状态。所以Rust官方团队需要一个系统,让这些贡献者可以很容易的知道Rust项目的状态,更容易的找到贡献点。
Rust 2024实现这一愿景的计划是专注于四类工作。
一眼看出情况。潜在的贡献者可以很容易地确定语言团队正在积极地做什么,以及这些设计已经取得了多大的进展。我希望每一个跟踪问题都能够清楚地识别出需要哪些‘后续步骤’来推动这个特定功能的完成,并确保这些步骤被清晰地记录下来,以供可能的贡献者参考。明确业主,明确沟通。Rust的运作是一致的,但这并不意味着每个人都必须知道所有的细节。所以需要一个系统,对要完成的工作有明确的拥有者,最好是不在郎团队的拥有者。简单的分工会导致以后的冲突,所以我们也需要经常的沟通和更新,保证大家能尽快了解事情的整体发展方向,提出问题。高效开放的流程和工具支持。官方团队一直在寻找改善运营的方法。他们注意到的一件事是,由机器人或其他工具支持的流程通常工作得更好。全球企业如何采用Rust2022是Rust language稳定版正式发布以来的第七个年头。自Rust发布以来,一直受到开发者的欢迎。在Stackoverflow对180个国家超过73000名开发者的民意调查中,Rust已经连续七年获得最受欢迎的编程语言,87%的开发者希望使用Rust。
2022年也是Rust基金会成立后的第二年。2021年2月9日Rust基金会成立之初,创始白金会员只有五家:Mozilla、亚马逊、华为、谷歌、微软。截止到今天(2022年12月),已有39家不同领域的头部公司成为Rust基金会成员,共同推动Rust在各自领域的落地。
2022年,除了Rust基金会的成员公司,还有很多公司开始使用Rust。包括初创企业,用Rust从零开始打造产品;也有成立多年的老公司,利用铁锈提高产量。Rust开发者的数量也逐渐增加。根据开发者调查和分析公司SlashData发布的题为《第22个开发者国家状况》的报告,从2020年的Q1到2022年的Q1,Rust language的开发者用户数量从60万飙升至220万。2022年11月TIOBE编程语言榜单中,Rust语言进入前20。
可以说2022年是Rust开始被广泛使用的第一年。在本文中,我们来盘点一下Rust在全球商业化领域的应用现状。
Rust Foundation成员的应用程序清单Rust Foundation成员,尤其是白金成员,正在投资Rust的可持续性,他们认为应该使用这种语言来构建可持续、安全和节能的解决方案。
白金会员如何在AWS中应用Rust?铁锈迅速成为大规模基础设施建设的关键。鞭炮是一种开源虚拟化技术,支持AWS Lambda和其他无服务器产品。2018年公开发布。AWS使用Rust提供亚马逊简单存储服务(亚马逊S3)、亚马逊弹性计算云(亚马逊EC2)、亚马逊CloudFront等服务。2020年,用Rust编写的基于Linux的容器操作系统Bottlerocket推出。亚马逊EC2团队使用Rust作为新AWS Nitro系统组件的首选语言,包括Nitro Enclaves(用于处理机密数据的隔离EC2环境)等敏感应用程序。
此外,在过去的一年里,亚马逊Prime Video使用WASM和egui更新了超过8k种设备类型的应用程序,并向数百万客户提供内容(如游戏机、电视、机顶盒和流媒体)。他们认为对Rust和WebAssembly的投资已经有了回报。经过一年的开发,已经编写了37000行Rust代码,显著提高了性能、稳定性、CPU消耗,降低了内存占用。
谷歌将Rust应用于Chromium、Android和Fuchsia OS,其中Chrome对Rust的支持是实验性的。开发者可以使用Rust为Android和Fuchsia OS开发组件,Rust代码在Android和Fuchsia OS中的使用超过了一定的比例,尤其是在Fuchsia OS中,Rust代码的比例已经超过了50%。因为有很多内部的Cpp代码,Google和Meta(原脸书)联合开发了cxx,用于和Cpp的安全交互。今年10月,谷歌推出了基于开源RISC-V芯片的嵌入式系统新安全操作系统KataOS。Sparrow是KataOS的参考实现,运行在seL4上,几乎完全用Rust编写。这个操作系统不适合台式机或者智能手机,而是物联网,可能用于智能家居。目标是为嵌入式硬件或边缘设备构建一个可验证的安全操作系统,例如用于捕捉图像的联网相机,这些图像在设备上或云中进行处理,以进行机器学习。在最新版本的Android 13中,谷歌也宣布Android 13中约21%的新原生代码(C/C /Rust)是Rust。AOSP大约有150万行Rust代码,涵盖了新的功能和组件。而且,到目前为止,在Android的Rust代码中发现的内存安全漏洞为零。为了实现在Android范围内提高安全性、稳定性和质量的目标,Android团队表示需要能够在代码库中任何需要本地代码的地方使用Rust。
华为的目标是引领通信系统软件向安全可信方向演进,其中Rust language正在发挥巨大作用。华为希望通过部分C/C代码的迁移,保证高性能和更高的安全性。在这个过程中,它为开发者提供了一套自动化工具:基于开源的C2Rust翻译工具,首先从C代码生成Rust代码,然后通过源到源转换工具自动重构。在华为,Rust库也是基于Actor的并发编程模式开发,方便程序员充分利用Rust的语言特性,如async/await,开发异步程序。华为也为Rust社区贡献了许多重要功能。比如Rust编译器已经提交了一系列代码,使得Rust编译器目标可以支持ARM AArch64 32位大端变体ILP32芯片组,华为的通信产品就采用了这种芯片组。这些改进使华为和朋友们能够在这些常见的网络硬件架构上执行Rust原生程序。这些代码已经通过华为的Rust专家Amanieu d'Antras提交给LLVM编译器、libc库、Rust编译器等开源社区。华为国内工程师李原也为Rust做出了很多贡献,包括修复了几个当前并行编译导致的程序错误。(比如迭代器死机场景下串并行模式的行为一致性,并行编译中死锁处理的ICE问题),多个编译进程频繁锁同步导致并行编译效率低下的问题(比如生成属性号,生成生命周期依赖分析表等)。),并优化编译器中多个诊断信息的生成。(比如查询中布局的深度限制,错误使用语句的提示信息,let语句中默认类型的提示信息等。),并在2022年,李原发起重启Rust编译器并行编译工作组,准备为加速Rust编译器并行编译做出贡献。
Meta(原脸书)于2016年开始使用Rust,即该语言1.0版本发布一年后。Rust是Diem(以前的Libra)稳定货币区块链、Mononoke源代码控制服务器和Meta的“区块链新安全编程语言”Move中使用的主要语言。选择Rust而不是C是Meta的一个重大决定,因为它的大部分后端代码都是用C编写的,这使它成为一个显而易见的选择。根据Meta的说法,在Mononoke被认为是成功的之后,Rust的采用获得了强劲的势头,吸引了具有Python和JavaScript背景的工程师。现在Rust和Hack、C、Python一起,是主要支持的服务器端语言。Meta现在建议使用Rust来编写命令行界面(CLI)工具和“性能敏感的后端服务”。Meta还为Rust建立了专门的新手训练营,培养Rust工程师。Meta对Rust生态学的重要贡献之一是cxx,用于Rust和Cpp之间的安全交互。2022年7月,Meta首次宣布Rust成为Meta支持的面向服务器的编程语言。
微软拥有世界上最大的C/C代码库之一。从Windows和Office到Azure Cloud,它所有的核心产品都在上面运行。2019年以来,微软一直在寻找一种内存安全的语言,同时推出了Rust进行尝试。然后在GitHub上开放了Rust for Windows库,供Rust开发者无缝使用Windows API。此外,Azure孵化的团队DeisLabs开始尝试用Rust构建Krustlet,让开发者在Kubernetes中运行多个WebAssembly模块的服务。微软Azure 2022首席技术官马克鲁西诺维奇(Mark Russinovich)表示,不应该在新项目中使用C和C。“现在是时候停止使用C/C来启动任何新项目,而将Rust用于那些需要非g C语言的场景了。为了安全可靠,业界应该声明这些语言已经被抛弃了。”他在推特上说,他表达的是个人观点,不是微软的新政策。
2022年,DeisLabs的初创团队离职后,成立了Fermyon,专注于WebAssembly云产品。
JFrog于2022年9月宣布加入Rust基金会成为白金会员。JFrog提供了一个DevOps平台,支持很多主流编程语言。JFrog加入了Rust Foundation,通过与Rust社区和Rust Foundation合作来帮助保护软件供应链。JFrog将识别并消除Rust平台和生态系统的安全威胁,并纠正Rust平台问题以防止进一步的风险。随着物联网、云计算和大数据的出现,网络安全的威胁越来越大。在过去的两年里,Rust编程语言的使用量增加了两倍,达到了220万开发者。JFrog与非营利组织的合作反映了其从最近采用的覆盖组织软件供应链的安全解决方案中受益的战略。
金牌会员如何申请加拿大跨国电商公司RustShopify于2022年12月宣布加入Rust基金会,成为该基金会的首位金牌会员。Shopify在服务器上一直使用Ruby语言。从2021年开始,Shopify团队开始使用Rust实现YJIT,这是CRuby的一个新的实时(JIT)编译器,今年被合并到Ruby 3.1中。在最近的一次性能测试中,YJIT比Ruby解释器CRuby快38%。
此外,Shopify还决定使用Rust作为公司的系统编程语言,比如编写高性能的web服务器。在Shopify看来,Rust的一致性、性能、社区生态、生产力、安全性和互操作性是他们采用Rust进行系统编程的原因。
银牌会员和普通赞助商如何使用RustRust基金会?银牌会员逐渐增多,目前已经达到28家。这些公司分布在各个领域。此外,还包括三家非会员普通赞助商。他们的申请信息会统计在文末的“Rust在其他领域的应用”一节。
2022年的Rust初创产品也可以算作Rust的创业元年。因为今年有几家采用Rust的创业公司获得了巨额融资。
Fermyon是首当其冲的Fermyon技术。今年10月,Fermyon宣布获得2000万美元A轮融资。并发布了Fermyon云平台。
Fermyon Cloud旨在让基于WebAssembly的应用和微服务的部署变得快速而简单。使用Fermyon的Spin build工具(基于Rust实现)对WebAssembly的应用进行编译和打包,然后就可以立即部署到Fermyon Cloud上。Fermymon的工具链处理将应用程序代码投入生产所需的所有基础架构配置和部署步骤,因此应用程序开发人员不需要了解底层基础架构的任何信息。
WebAssembly源于浏览器,针对高安全性和低资源消耗进行了优化。通过将WebAssembly引入服务器环境,应用程序可以享受同样的优化,同时使用公共代码库部署到各种环境:云、边缘、物联网或任何组合。基于这些概念,Fermyon将WebAssembly引入数据中心和云中。Fermyon希望实现类似Java的“一次编写,随处运行”的承诺,同时拥有Heroku的易用性。通过将开发人员从过多考虑基础设施中解放出来,它有助于消除应用程序开发中的摩擦。
“借助Fermyon Spin,开发人员可以快速创建WebAssembly微服务应用。现在有了Fermyon Cloud,开发人员可以在不到两分钟的时间内从头开始实施和部署应用程序。这就是云端WebAssembly的承诺:快速开发、快速部署、快速执行。”Fermyon的联合创始人兼首席执行官马特布彻(Matt Butcher)在一份声明中表示。
Warp,新的终端,虽然有很多常用的终端模拟器,比如Rust实现的高性能跨平台现代终端模拟器alacritty。但他们的内核其实是传统的终端模拟器。现代开发人员必须使用终端来做许多事情,从构建代码、执行和部署、与版本控制系统交互到与云交互。作为开发者不可或缺的工具,在开发需求日益增加的时代,目前的终端模拟器已经无法帮助开发者提高工作效率。
而Warp的出现,让我看到了下一代终端模拟器的进化。Warp于2022年4月5日推出公测,并宣布获得2300万美元资金。它试图通过建立一个新的旨在提高开发人员生产力的命令行终端来改变这种情况。
Warp是Rust语言实现的。使用Rust技术栈(包括WebAssembly)也方便搭建跨平台支持。底层使用Metal (Mac的Mac GPU API)直接用GPU渲染UI。之所以使用GPU进行渲染,是因为团队希望摆脱CPU上的许多软件和架构瓶颈,以适应更高分辨率的显示。选择Metal作为GPU API而不是OpenGL,是因为Warp以MacOS为第一平台。Xcode中的金属调试工具非常优秀,可以让Warp团队检查纹理资源,轻松测量帧率、GPU内存大小等重要指标。Mac平台现在是大多数开发者选择的一个重要的生产力工具。
但目前Rust对GPU的支持还不完善,没有合适的开箱即用的UI库。团队考虑了Azul和Druid,但两者都处于实验阶段,因此团队决定与Atom Editor的联合创始人Nathan Sobo合作,使用一个受Flutter启发的Rust UI框架,该框架应该会在不久的将来开源。未来会支持更多的渲染后端,比如OpenGL和WebGL(wasm会支持)。同时,我们还与Nathan合作,在Warp中构建了一个文本编辑器。Warp还分叉了Alacritty的模型代码,用来处理数据模型,为Warp接口中的块实现提供帮助。
可见,Warp作为一个商业产品,并没有开源其产品的所有代码。但在产品实现的过程中,他们通过解决Rust GUI和GPU渲染的相关问题,沉淀了一些工具和库,这些工具和库将以开源的方式贡献给社区。虽然开源社区对走PLG路线很重要,但并不意味着所有产品都是盲目开源的。还是要根据自己的商业模式和产品形态做出最好的取舍。
数据库领域的初创公司今年数据库领域的初创公司可以算是一个集群。
2022年4月,Rust社区知名开发者Jon Gjengset宣布成为ReadySet公司的联合创始人,准备将自己博士论文中关于Noria数据库的研究成果实现到ReadySet中,为数据库提供SQL缓存引擎,可以帮助开发者在不改变代码、不切换数据库的情况下构建高性能的实时应用。该公司目前在首轮融资中筹集了2900美元。
2022年4月,已经融资数千万美元的奇点数据(Singularity Data)奇点数据初创公司宣布了RisingWave,这是一个由开源Rust实现的云原生SQL支持的流数据库。RisingWave于2021年初在Cpp中创建,7个月后在Rust中重写。对于早期创业公司来说,这是一个疯狂的决定。尤其是在竞争激烈的环境下,对于科技创业公司来说,时间几乎就是一切。
流媒体服务实时事件流媒体公司InfinyOn筹集了500万美元的种子资金,由Gradient Ventures和Fly Ventures领投,Bessemer Venture Partners和TSVC参与。InfinyOn使用的是Rust开发的动态数据可编程平台Fluvio。凭借超过1000个Github star,Fluvio在开发者和开源社区中越来越受欢迎。
“Java时代构建的遗留数据平台将生成大型二进制文件,需要大量内存,从边缘到核心的操作极具挑战性。这些也缺乏实时决策的在线处理能力,”英飞凌联合创始人兼首席技术官Sehyo Chang说。“我们通过消除对ETL工具的需求来简化数据架构,提供更具成本效益的平台,将内存减少多达80倍,并通过内存安全解决方案提供最大的安全性。”
“我们整合了来自不同来源的医疗保健数据:物联网、患者和医生的输入。有了InfinyOn,我们可以使用现代化的工具快速高效地完成这项工作。是用Rust写的,比卡夫卡更容易让团队融合。”Nammu首席执行官克里斯布鲁克(Chris Brucker)说。
InfinyOn可以轻松提取、整形和转换来自多个来源的数据,并实时计算结果。尽管仍处于测试阶段,早期采用者已经在InfinyOn的概念验证中看到了相对于替代解决方案的显著优势。除了易用性和开发速度,与其他供应商相比,供应商的总拥有成本也大幅降低。
Rust其他应用领域软件定义汽车:Rust的关键作用关键词:软件定义汽车
Autosar——,汽车标准组织,成员包括福特、通用、宝马、博世、大众、丰田、沃尔沃等。宣布在其功能安全工作组(WG-SAF)中成立一个新的小组,以探索如何在其参考平台之一中使用Rust。SAE国际也成立了一个工作组来研究汽车工业中安全相关系统的生锈问题。5月,Autosar和Rust团队有过一次交流,讨论Safe Rust能否在汽车领域构建一个合规的安全子集,讨论内容是二茂铁Rust安全子集。
随后Autosar官网撤回了成立新的铁锈工作组的消息,或许是在等待二茂铁生锈的结果。此外,今年9月,沃尔沃汽车公司的技术专家和系统架构师朱利叶斯古斯塔夫森(Julius Gustavsson)接受了采访,他坦言希望在沃尔沃推动Rust开发。
二茂铁Rust的安全子集Ferrocene Systems和AdaCore在今年2月宣布,他们将联合开发符合安全要求的防锈工具链Ferrocene——,以支持各种受监管市场的需求,如汽车、航空电子设备、太空和铁路。这意味着二茂铁Rust编译器将根据各种安全标准被认证为ASIL的D级(D代表汽车危险的最高程度),这项工作最终将包括必要的动态和静态分析工具的开发和资格认证。亚铁系统和AdaCore也在寻找安全认证的库,包括语言支持(libcore)或其他用户库。我们的目标是瞄准与这些市场相关的各种架构和操作系统。这一愿景需要时间来实现,亚铁系统和AdaCore已经准备好开始关注某些方面。最终,我们的目标是像其他任何与高完整性应用程序开发相关的编程语言一样完全支持Rust。二茂铁语言规范目前正在制定中,预计年底发布。
其他公司都是Rust基金会的白银会员,ARM也致力于在软件定义的汽车中推广Rust。
即时消息:三马关键词:即时消息
Threema是一个跨平台、私有、安全和开源的即时通讯工具。
密码管理工具:1密码关键词:跨平台。
1Password长期以来一直使用Rust构建其Windows客户端。2019年,其支持浏览器扩展的逻辑引擎从Go移植到Rust,随后开始了Rust的跨平台应用实践。直到2022年11月,1Password还开放了其Typeshare库,该库可以跨多种语言生成一致的类型模式。Typeshare可以帮助开发者跨语言无缝共享数据类型,是跨平台安全开发的利器。
GUI:目标Qt市场关键词:Qt,GUI
全球知名的Qt咨询和UI/UX设计服务公司tQCS的两位合作伙伴加入了Rust Foundation的银牌会员。它们是:
KDAB:他在嵌入式系统、3D图形以及跨桌面、嵌入式和移动平台的工作方面拥有多年的经验。KDAB是Qt项目的主要贡献者。Slint:它大大简化了替代Qt需求的嵌入式平台的GUI开发。支持Rust/Cpp/Javascript,有友好的UI标记语言。它的创始人也来自于Qt项目的主要贡献者和QtQml引擎的主要开发者。云存储:Dropbox关键词:云存储
Dropbox是最早使用Rust并取得成功的公司之一。Dropbox的一些文件同步引擎使用Rust。一个新的视觉交流工具Dropbox Capture旨在使团队能够轻松地使用屏幕记录、视频消息、屏幕截图或gif异步共享他们的工作。
边缘计算:Cloudflare关键词:边缘计算,无服务器
Cloudflare在核心边缘逻辑中使用Rust,用不安全的内存代替C。Cloudflare worker支持Rust和WebAssembly。今年9月,Cloudflare也宣布正在使用Rust实现一个可以替代Nginx的代理服务器Pingora。
华特迪士尼公司关键词:WebAssembly,渲染引擎。
迪士尼公司正在使用Rust构建其NCP GUI框架,从迪士尼的招聘信息中可以得出这个结论。根据公司2021年发布的资料《迪士尼应用开发工具包(ADK)简介》,Rust的使用主要是搭建原生客户端平台v2 (NCPv2)的框架,代号为“m5”。他们选择Rust,以WebAssembly (WASM)为目标,以简化Web部署和应用程序的可更新性,超越任何限制更新基于C的运行时能力的固件更新周期。这个项目已经进行了快三年,现在已经到了所有平台,从手持终端到电视和网页,都使用同一个渲染引擎来渲染自己的动画的地步。
特斯拉关键词:高性能机器人模拟器,固件验证
尽管马斯克今年2月在推特上宣布自己是Rust language的粉丝,但他也承认特斯拉主要使用Cpp和Python。不过从今年11月发布的Rust的两个职位来看,特斯拉也开始采用Rust。其中一项就是特斯拉机器人仿真引擎团队的招募,寻找Rust开发者,扩展用Rust编写的高性能机器人仿真引擎。另一个是Rust固件验证工程师,但这个职位的要求只是“有任何Rust经验者优先,但非必要”。
Tweedegolf:宇宙飞船与航天公司关键词:PTP,卫星,宇宙飞船,太空。
锈这次是真的要上天了。Gama将发射太阳帆飞船,是公开将Rust送入太空的公司之一。应该是这家提供软件服务的公司:Tweedegolf,也是Rust Foundation的白银会员。在他们的开源仓库里,有一个Rust实现的PTP(精确时间协议)库,一般用于卫星时间源,比NTP更精确。但这是一个PoC实现。不知道这次发射的飞船上有没有用。从另一个项目,嵌入式开发板pcf85063a(一般用于定时闹钟)的rust驱动程序来看,天堂里的Rust程序很可能与精确定时有关。
伽马太阳帆的卫星于2023年1月3日由SpaceX猎鹰9号成功送入轨道。
荷兰光年太阳能汽车公司采用Rust,荷兰光年公司将于今年晚些时候开始向客户交付全球首款量产太阳能汽车。
据Tweedegolf公司博客网站报道,光年公司软件架构师Jorrit在Tweedegolf公司组织的高科技行业Rust的线下会面,分享了光年公司如何在光年公司核心平台的开发中使用Rust。或许是出于隐私考虑,分享的视频和ppt资料并没有发布。
文件数据存储:Qumulo关键词:混合云文件数据管理
Qumulo(混合云文件数据管理领域的领导者)和西部数据是合作企业。通过部署基于西部数据UltrastarTM大容量硬盘和高性能固态硬盘的Qumulo可扩展文件数据平台,IHME(卫生指标与评估研究所)每天可处理高达2PB的数据,促进公共疫情研究、统计和预测。Qumulo赞助了RustConf 2022会议。
老牌数据库公司:postgresql关键词:数据库,PostgreSQL
PostgreSQL赞助了RustConf 2022大会,在PostgreSQL中没有发现使用Rust的痕迹。不过GitHub里有一个专门用Rust写PostgreSQL扩展的项目pgx,核心开发者Ana博客也有很多相关文章。
企业数据分析:Redjack关键词:数据分析
Redjack自称是美国国家情报局的技术,每年监控和保护超过8%的互联网公共IP空间和超过100万亿的商业通信。改善运营数据使组织能够提高分析的速度和准确性,从而实现大规模运营的安全性和灵活性。Redjack还赞助了RustConf 2022大会,由此推断该公司也有采用Rust的可能性。
数据科学和人工智能
Rust基金会的白银会员还包括数据科学和人工智能领域的公司:
警惕,以传统标记解决方案无法达到的速度和规模为AI标记数据。汽车物联网关键词:物联网
Wyliodrin使用Rust、Tock OS和Android来保护设备,构建安全高效的系统。将Rust嵌入式实时操作系统Tock OS推向商业应用。该公司还加入了Rust基金会的银牌会员。
消息推送服务提供商:OneSignal关键字:消息推送
消息服务提供商OneSignal于2017年开始使用Rust,提供Rust客户端,支持推送通知、电子邮件、短信和应用内自助客户参与解决方案。
自动货运列车:并行系统关键词:自动货运列车
自动化货运列车Parallel Systems认为货运的未来是铁路,因此开发了在铁路上运行的零排放自动化电动货运。Rust语言是公司在技术栈中的通用语言。该公司还赞助了RustConf 2022会议。
Rust开发工具、平台和工具链支持关键词:开发工具
一些有用的开发工具是基于Rust实现的,比如:
基于机器学习的自动代码开发工具Tabnine。开源安全,Rust基金会的白银会员,致力于为Rust生态的推广贡献力量。目前主要赞助GCC Rust的实现。到2022年12月,GCC Rust的前端将并入GCC 13!Embecosm,提供开源软件工具链和嵌入式操作系统服务。Embecosm也是GCC Rust前端的赞助商。Grafbase,构建和部署GraphQL后端的服务平台。Rust for Linux,Linux 6.1内核版本合并了最初的Rust基础架构,为以后的内核驱动和其他内核代码启用Rust编程语言打下了良好的基础。11月11日,Rust for Linux向上游内核提交了大量补丁代码。一旦所有这些Rust基础设施到位,我们将看到在更突出的现实世界驱动程序开始过渡到Rust代码之前,需要多长时间才能获得新的硬件支持或在Rust中重写现有的C驱动程序代码。Linux内核中Rust的第一批主要用户之一预计将是苹果M1/M2图形的DRM驱动程序。安全监控关键词:资产安全、事件监控。
该领域目前包括Rust基金会白银会员中的以下公司:
Spectralops,用于监控、分类和保护代码、资产和基础设施,以防止暴露的API密钥、令牌、凭证和高风险安全错误配置。哨兵,应用监控平台。软件咨询关键词:软件咨询
目前也有一些铁锈咨询公司。以下公司加入了Rust Foundation的白银会员:
Knoldus,亚铁系统mainmatterTag1游戏和渲染引擎关键词:游戏
Rust在游戏领域还在发展。游戏公司动视暴雪作为总赞助商加入了Rust基金会,并于2021年发布了由动视暴雪旗下工作室Treyarch撰写的《游戏工具Rust编程语言》研究报告。自2018年以来,Treyarch一直在逐步将Rust融入我们的工具和管道中。
另一家值得关注的游戏公司是Embark,它赞助了rust的游戏引擎Bevy和Fyrox,并开放rust-gpu,让Rust成为一流的gpu着色器语言和生态系统。
电子商务关键词:电子商务
Rust也用在电子商务领域。
美国最大的家具电子商务公司Wayfair旗下的开源项目震颤已经进入CNCF。去年九月,举行了一个小型的在线震颤会议。自2018年以来,震颤一直在wayfair的生产环境中运行,每天处理10兆数据,或每分钟100亿条消息,每秒1000万个指标。震颤降低了成本、复杂性,巩固和简化了运行环境,从而激发了SRE的乐趣,减少了NOC的工作量,降低了运行成本。Rust为Wayfair节省了数千个内核和数万亿字节的内存。英国二手车电商网站cargurus也成为了Rust基金会的普通赞助会员。Web3和区块链关键词:Web3,同态加密,隐私计算,区块链,数字货币,零知识证明。
Rust已经成为Web3和区块链领域的主流语言。在这些领域,有许多我们熟悉的公司和项目:
Diem原名Libra,曾是脸书的稳定货币项目,但现在已被Silvergate Capital Corporation收购。Aptoslabs和sui这两个超级新的公共连锁店都是Diem团队成员离职创业的两个项目。它们的共同点是都使用Rust实现的Move语言作为智能契约语言。Parastate,博卡生态多链智能合约平台,是Rust Foundation的白银会员。为数据科学和人工智能构建开源同态加密解决方案的Zama是Rust基金会的白银会员。Keyrock部署了专有的、高度可扩展的数字资产做市技术,是Rust基金会的白银会员。物质实验室,扩展以太坊的零知识证明。日本区块链科技孵化器TECHFUND也加入了Rust Foundation的银牌会员。其他人。总结Rust是一种通用语言,多样性也是Rust语言的设计原则之一。本文试图列举Rust在各个领域的成功应用案例,帮助人们了解Rust适合落地的业务场景,并探讨Rust众所周知的开源生态项目,让大家了解Rust目前的发展状况。
但是这篇论文还远远没有涵盖Rust应用的所有角落,还有我们看不到的地方,Rust正在被默默采用。国内几乎没有使用Rust的公司,国内也有公司准备逐步采用Rust,但进展缓慢。
铁锈就像一场“春雨”,随风潜入夜色,润物细无声。感谢阅读。
本文转载自:
https://www.infoq.cn/article/z4MCCu8W62Je7d2fED7p全文目录:
开启新征程:Rust 2024版全球企业如何采用RustRust开源生态开发综述
本文是《Rust Language 2022年度回顾》的第一部分,内容包括:开启新征程:Rust 2024版,全球企业如何采用Rust。第二部分:https://www.infoq.cn/article/hioW21XT8opvbip3hs5F.
开启新征程:Rust 2024 EditionRust 2021 Edition发布后,官方开始制定Rust 2024 Edition的路线图。Rust版是每三年出版一次的大版。2022年4月,官方博客公布了Rust 2024路线图。让我们知道Rust的下一个愿景是什么。
Rust 2024:广泛使用Rust的目标是成为一种语言,让每个人都有能力构建可靠高效的软件。Rust不仅需要用优秀的库和工具设计和实现一门优秀的语言,还需要维护一个优秀的支持社区。
Rust 2024版的目标是广泛使用,也就是越来越多的人开始使用Rust。为了实现这一目标,2024版需要注意以下三个关键点:
拉平Rust语言的学习曲线。让Rust更容易为新用户和现有用户所用,更容易解决问题。这会吸引更多新的Rust用户。增强Rust用户之间的合作。让Rust项目(语言项目本身)的贡献者更容易拉平学习曲线。建立了庞大的Rust用户团队的公司报告称,Rust工程师的典型岗位时间约为3-6个月。当然,人一旦学会了锈,一般都会喜欢。即便如此,很多人表示在使用时感觉到“认知开销”,“学习曲线”仍然是不使用Rust的最常见原因。事实是,即使在你理解了Rust借用检查器是如何工作的之后,在你的Rust程序可以被编译之前,仍然有许多“小细节”需要被正确地处理。
Rust 2024的目标是让开发者能够直接关注问题领域的“内在复杂性”,尽可能避免来自Rust的“意外复杂性”。
实现这一愿景的计划是关注四个高层次的目标(按照从宽泛到精确的顺序):
* *更准确的分析,更少的繁琐:* *通过改进借用检查器和类型推断,编译器可以更好地识别代码何时正确。识别并消除“模板”模式,例如不得不到处复制和粘贴同一套where子句。* *更轻松地表达自己:必要时扩展语言,让开发人员直接表达他希望代码做什么。在某些情况下,这采用了语法糖的形式(比如let-else),但在其他情况下,这可能意味着扩展类型系统以能够描述新的模式(比如泛型关联类型)。改进异步支持:将我们的异步/等待支持扩展到当前的“MVP”之外,以包括异步fn、异步drop in trait和支持异步愿景文档路线图所需的其他功能。提高dyn Trait的可用性:* *拓宽可以使用dyn的Trait集合,让dyn的使用更接近泛型的使用。增强Rust用户之间的合作。Rust结合了强大的扩展机制,如所有权和借用,底层系统控制和进程宏,使其成为编写库的优秀语言。而且,多亏了Cargo,在一个程序中使用一个库只需要几行代码。尽管如此,仍有许多事情是图书馆作者不能或不能轻易做到的。例如,他们无法控制用户看到的错误消息或部署需要特别选择的“不稳定”功能。Rust 2024希望通过帮助管理功能生命周期或扩展库的功能,建立一个使库作者能够更好地服务用户的功能。
Rust 2024希望在生态系统中追求更多可以探索的改变。实现这一愿景的计划重点是四类工作:
功能生命周期:当功能从实验阶段过渡到最终完成阶段时,帮助库作者支持该功能。帮助库作者管理他们的开发生命周期和发展。更丰富的抽象:扩展允许库作者表达更丰富的抽象。例如,支持GAT允许开发人员编写更通用的库。定制开发人员体验:许可证库的作者可以定制开发人员体验,例如,定制当trait未实现或引入定制lints时用户收到的错误消息。互操作性:可以很容易地协调库生态系统,使库一起工作,而不用将它们绑定在一起。库作者可以根据需要编写可移植到多个环境中或特定于一个环境的代码。让Rust项目的贡献者更加方便。Rust语言本身也是一个Rust项目。虽然Rust语言项目非常活跃,但是当潜在贡献者想要为Rust项目做出贡献时,他们可能无法弄清楚他们感兴趣或想要做出贡献的某些事情的状态。所以Rust官方团队需要一个系统,让这些贡献者可以很容易的知道Rust项目的状态,更容易的找到贡献点。
Rust 2024实现这一愿景的计划是专注于四类工作。
一眼看出情况。潜在的贡献者可以很容易地确定语言团队正在积极地做什么,以及这些设计已经取得了多大的进展。我希望每一个跟踪问题都能够清楚地识别出需要哪些‘后续步骤’来推动这个特定功能的完成,并确保这些步骤被清晰地记录下来,以供可能的贡献者参考。明确业主,明确沟通。Rust的运作是一致的,但这并不意味着每个人都必须知道所有的细节。所以需要一个系统,对要完成的工作有明确的拥有者,最好是不在郎团队的拥有者。简单的分工会导致以后的冲突,所以我们也需要经常的沟通和更新,保证大家能尽快了解事情的整体发展方向,提出问题。高效开放的流程和工具支持。官方团队一直在寻找改善运营的方法。他们注意到的一件事是,由机器人或其他工具支持的流程通常工作得更好。全球企业如何采用Rust2022是Rust language稳定版正式发布以来的第七个年头。自Rust发布以来,一直受到开发者的欢迎。在Stackoverflow对180个国家超过73000名开发者的民意调查中,Rust已经连续七年获得最受欢迎的编程语言,87%的开发者希望使用Rust。
2022年也是Rust基金会成立后的第二年。2021年2月9日Rust基金会成立时,
只有 Mozilla、Amazon、华为、谷歌、微软五家创始白金成员,截止到今天(2022.12 月)已经有 39 家不同领域的头部公司成为了Rust 基金会成员,共同推动 Rust 在各自领域的落地。
2022 年在 Rust 基金会成员公司之外,也有不少公司开始使用 Rust。其中包含初创企业,使用 Rust 从头构建产品;也有成立多年的老牌公司,使用 Rust 来改进生产。Rust 开发者数量也逐渐增多。据开发者调查分析公司 SlashData 发布了一份题为“第 22 届开发者国家状况”的报告指出,从 2020 年 Q1 季度到 2022 年 Q1 季度,Rust 语言的开发者用户量从 60 万猛增到了 220 万。TIOBE 编程语言排行榜 2022 年 11 月榜单中,Rust 语言进入了前 20 。
可以说,2022 年是 Rust 语言开始广泛应用的元年。本文就让我们来盘点一下 Rust 在全球商业化领域的应用状态。
Rust 基金会成员应用盘点
Rust 基金会成员投资 Rust ,尤其是白金成员们,是在投资 Rust 的可持续性,他们认为应该使用这种语言来构建可持续且安全节能的解决方案。
白金成员如何应用 Rust
在 AWS,Rust 已迅速成为大规模构建基础设施的关键。Firecracker是一种开源虚拟化技术,为AWS Lambda和其他无服务器产品提供支持,它于 2018 年公开发布。AWS 使用 Rust 来交付Amazon Simple Storage Service (Amazon S3)、Amazon Elastic Compute Cloud (Amazon EC2)、Amazon CloudFront等服务。2020 年,推出了Bottlerocket,这是一个用 Rust 编写的基于 Linux 的容器操作系统。 Amazon EC2 团队使用 Rust 作为新AWS Nitro 系统组件的首选语言,包括敏感应用程序,例如Nitro Enclaves(用于处理机密数据的隔离 EC2 环境)。
此外,过去一年,Amazon Prime Video 使用了 WASM 和 egui 为超过 8k 多种设备类型更新其应用向数百万客户提供内容(例如游戏机、电视、机顶盒和流媒体等)。他们认为对 Rust 和 WebAssembly 的投资得到了回报,经过一年的开发,共编写了 37,000 行 Rust 代码,显著地提高了性能、稳定性和 CPU 消耗并降低了内存利用率。
Google 将 Rust 应用于Chromium、 Android 和 Fuchsia OS 中,其中 Chromium 对 Rust 支持是实验性的。开发者可以使用 Rust 为 Android 和 Fuchsia OS 开发组件,并且 Rust 在 Android 和 Fuchsia OS 内部代码使用超过了一定的比例,尤其是 Fuchsia OS 中 Rust 代码占比已经超过 50%。因为其内部 Cpp 代码比较多,所以 Google 联合 Meta (原 Facebook) 一起开发了 cxx 用于和 Cpp 安全交互。在今年 10 月份,Google 又推出基于开源 RISC-V 芯片的嵌入式系统的新型安全操作系统 KataOS。Sparrow 是 KataOS 的参考实现,它运行在seL4 之上,几乎完全用 Rust 编写。该操作系统不适用于台式机或智能手机,而是用于物联网,可能用于智能家居。目标是为嵌入式硬件或边缘设备构建可验证的安全操作系统,例如用于捕获图像的网络连接相机,这些图像在设备上或云中处理以进行机器学习。在最新发布的 Android 13 版本中,Google 也宣布在 Android 13 中,大约 21% 的新原生代码(C/C++/Rust)是 Rust。AOSP 中大约有 150 万行 Rust 代码,涵盖新功能和组件。并且,迄今为止,在 Android 的 Rust 代码中发现的内存安全漏洞为零。 为了实现提高 Android 范围内的安全性、稳定性和质量的目标,Android 团队表示需要能够在代码库中需要本地代码的任何地方使用 Rust。
华为的目标是引领通信系统软件向安全可信演进,其中 Rust 语言正在发挥很大的作用。华为希望通过部分 C/C++ 代码的迁移,在保证高性能的同时,拥有更高的安全性。在此过程中, 为开发者提供一套自动化工具支持:基于开源的 C2Rust 转译工具, 首先从 C 代码生成 Rust 代码, 然后通过源到源变换工具自动重构。在华为内部还基于 Actor 的并发编程模式开发了 Rust 库,方便程序员充分利用 Rust 的语言特性, 例如async/await等开发异步程序。华为也为 Rust 社区贡献了许多重要的功能特性。例如,为 Rust 编译器提交了一系列代码,使得 Rust 编译目标可以支持ARM AArch64 32位大端变体ILP32芯片组, 用于华为的通信产品中。 这些改进使得华为和友商可以在这些常用网络硬件架构上执行 Rust 原生程序。这些代码已经通过华为的 Rust 专家Amanieu d\’Antras 提交给了 LLVM 编译器, libc 库, 以及 Rust 编译器等开源社区。华为国内工程师 李原 也为 Rust 做了很多贡献,其中包括修复了多个当前并行编译导致的程序错误,(比如串行并行模式在迭代器 panic 场景的行为一致性、并行编译死锁处理的 ICE 问题)、分析并优化了多个编译过程中频繁锁同步导致并行编译效率降低的问题(比如生成 attributes 编号、生成生命周期依赖分析表等等)、优化了编译器中多处诊断信息的生成,(比如查询中 layout 深度限制、错误 using 语句的提示信息、let 语句中默认类型的提示信息等),并且在 2022 年李原主导发起重启 Rust 编译器并行编译工作组,准备为加速 Rust 编译器并行编译做出贡献。
Meta(原 Facebook )从 2016 年开始使用 Rust,也就是该语言的 1.0 版发布一年后。Rust 是它用于 Diem(以前的 Libra)稳定币区块链、Mononoke 源代码控制服务器和 Meta 的“用于区块链的新的安全编程语言” Move的主要语言。 选择 Rust 而不是 C++ 对 Meta 来说是一个重大决定,因为它的大部分后端代码都是用 C++ 编写的,这使其成为显而易见的选择。 据 Meta 称,在 Mononoke 被认为取得成功后,Rust 的采用势头强劲,吸引了具有 Python 和 JavaScript 背景的工程师。 现在,Rust 与 Hack、C++ 和 Python 一起成为主要受支持的服务器端语言。 Meta 现在建议将 Rust 用于编写命令行界面 (CLI) 工具和“性能敏感的后端服务”。 Meta 内部也针对 Rust 建立了专门的新手训练营,用于培养 Rust 工程师。Meta 对 Rust 生态的重要贡献之一是 cxx ,用于 Rust 和 Cpp 之间的安全交互。在 2022 年 7 月,Meta 首次宣布 Rust 成为 Meta 支持服务器端使用的编程语言。
Microsoft 拥有世界上最大的 C/C++ 代码库之一。从 Windows 和 Office 到 Azure 云,其所有核心产品都在其上运行。从 2019 年开始,微软开始寻找内存安全的语言,与此同时,引入了 Rust 进行尝试。随后在 GitHub 上开源了 Rust for Windows 库 ,供 Rust 开发者们无缝地使用 Windows API。此外,Azure 孵化的团队 DeisLabs 开始尝试用 Rust 构建 Krustlet 来允许开发人员在 Kubernetes 中运行多个 WebAssembly 模块的服务。2022 年微软 Azure首席技术官 Mark Russinovich 表示,C 和C++不应该用于新项目。“是时候停止使用 C/C++ 启动任何新项目,并将 Rust 用于那些需要非 GC 语言的场景。为了安全性和可靠性,业界应该宣布这些语言已被弃用”。他在 Twitter 上表示,表达的是个人观点,而不是微软的新政策。
2022 年 DeisLabs 初创团队离职后出来创业创建了 Fermyon 公司 ,专注于 WebAssembly 云产品。
JFrog 于 2022 年 9 月宣布加入了 Rust 基金会成为白金会员。JFrog 提供了一个DevOps 平台 ,并且支持多种主流编程语言。JFrog 加入 Rust 基金会的目的就是为了与 Rust 社区和 Rust 基金会合作,帮助保护软件供应链。JFrog 将识别并消除 Rust 平台和生态系统面临的安全威胁,并修正 Rust 平台问题以防止进一步的风险。随着物联网(IoT)、云计算和大数据的出现,网络安全威胁也越来越大。在过去两年中,Rust 编程语言的使用量增加了两倍,达到 220 万开发人员。JFrog 与非营利组织的合作反映了其从最近采用的覆盖组织软件供应链的安全解决方案中获益的战略。
金牌成员如何应用 Rust
Shopify 是加拿大跨国电商公司,在 2022 年 12 月份宣布加入 Rust 基金会,成为基金会第一个金牌会员。 Shopify 在服务端一直使用 Ruby 语言,从 2021 年开始,Shopify 团队开始使用 Rust 实现YJIT,这是一种新的 CRuby 即时 (JIT) 编译器 ,到今年合并到了 Ruby 3.1 版本中。在最近的一次性能测试中,YJIT 的性能比 Ruby 解释器 CRuby 快了 38%。
除此之外, Shopify 也决定采用 Rust 作为公司的系统编程语言,比如编写高性能网络服务器。在 Shopify 看来,Rust 的一致性、性能、社区生态、生产力、安全和互操作性是他们采用 Rust 用于系统编程的原因。
银牌会员及普通赞助商如何应用 Rust
Rust 基金会的银牌成员逐渐增多,目前已经达到了 28 家公司。这些公司分布在各个领域。此外,还包括三家非会员普通赞助商。在文后的「Rust 其他领域应用」小节将统计他们的应用信息。
Rust 初创产品
2022 年也可以算作是 Rust 创业元年。因为今年陆续有好几家采用 Rust 的创业公司拿到了巨额融资。
Fermyon
首当其冲的是 Fermyon 技术公司。在今年十月份,Fermyon 宣布拿到了 2000 万美元的 A 轮融资。并且发布了 Fermyon Cloud 平台。
Fermyon Cloud 旨在使基于 WebAssembly 的应用程序和微服务的部署变得快速和容易。使用 Fermyon 的 Spin 构建工具(基于 Rust 实现),为 WebAssembly 编译和打包应用程序,然后可以立即将其部署到 Fermyon Cloud。Fermymon 的工具链处理将应用程序代码投入生产所需的所有基础设施配置和部署步骤,使应用程序开发人员无需了解有关底层基础设施的任何信息。
WebAssembly 起源于浏览器,针对高安全性和低资源消耗进行了优化。通过将 WebAssembly 引入服务器环境,应用程序可以享受相同的优化,同时使用通用代码库部署到各种环境:云、边缘、物联网或任何组合。Fermyon 以这些概念为基础,将 WebAssembly 引入数据中心和云端。Fermyon 希望实现类似于 Java 的“一次编写,随处运行”的承诺,同时又具有 Heroku 的易用性。它使开发人员无需过多考虑基础架构,从而有助于消除应用程序开发中的摩擦。
“使用 Fermyon Spin,开发人员可以快速创建 WebAssembly 微服务应用程序,现在使用 Fermyon Cloud,开发人员可以在不到两分钟的时间内从零开始实现并部署应用程序。这是 WebAssembly 在云中实现的承诺:快速开发、快速部署、快速执行。”,Fermyon 的联合创始人兼首席执行官 Matt Butcher 在一份声明中如是说。
新终端 Warp
虽然现在的常用的终端模拟器也有很多好用的,比如 Rust 实现的高性能跨平台现代化终端模拟器 alacritty 。但它们的内核其实还是一个传统的终端模拟器。现代开发者,要使用终端做很多事,从构建代码、执行和部署,与版本控制系统交互到与云端交互等。作为开发者日常离不开的工具,在当下日益增长的开发需求的时代,现在的终端模拟器却没有帮助开发者提升更多工作效率。
而 Warp 的出现,让我看到了终端模拟器进化的下一代形态。Warp 在 2022 年 4 月 5 号推出其公开测试版并宣布获得 2300 万美元的资金,它正试图通过构建一个旨在提高开发人员生产力的新命令行终端来改变这一现状。
Warp 选择使用 Rust 语言来实现。使用 Rust 技术栈(包括 WebAssembly)也方便构建跨平台支持。在底层,使用 Metal (Mac 的 GPU API)直接用 GPU 进行 UI 渲染。之所以使用 GPU 进行渲染,是因为团队想摆脱 CPU 上面的许多软件和架构瓶颈,来适应更高分辨率的显示器。选择 Metal 而不是 OpenGL 作为 GPU API,因为 Warp 把 MacOS 作为第一个平台。Xcode 中的 Metal 调试工具非常出色,使 Warp 团队能够检查纹理资源并轻松测量帧速率和 GPU 内存大小等重要指标。Mac 平台现在也是大多数开发者选择的重要生产力工具。
但是,目前 Rust 对 GPU 支持并不是很完善,没有开箱即用的合适的 UI 库。团队考虑过 Azul和Druid,但这两者都处于实验阶段,所以团队决定和 Atom 编辑器联合创始人 Nathan Sobo 合作,使用他创建的一个受 Flutter 启发的 Rust UI 框架,不久后应该会开源。在未来,会支持更多的渲染后端,比如 OpenGL 和 WebGL(会通过 wasm 支持)。同时也和 Nathan 合作,在 Warp 中构建了一个文本编辑器。Warp 也 fork 了 Alacritty 的模型代码,用于处理数据模型,为 Warp 界面中的块实现提供了帮助。
看得出来,Warp 作为一个商业产品,它并没有将其产品的全部代码进行开源。但他们在实现产品过程中,通过解决 Rust GUI 和 GPU 渲染相关的问题,沉淀出一些工具和库,会以开源的方式贡献给社区。虽说要走 PLG 路线,开源社区非常重要,但也并不是说盲目地之间把产品全部开源出来。还是要根据自己的商业模式和产品形态做出最好的权衡。
初创数据库领域公司
今年在数据库领域的初创公司可以算得上是扎堆出现了。
在 2022 年 4 月,Rust 社区知名开发者 Jon Gjengset 宣布成为 ReadySet 公司的联合创始人,准备将其博士论文中的 Noria 数据库研究成果进行落地为 ReadySet ,为数据库提供 SQL 缓存引擎,可帮助开发人员构建高性能的实时应用程序,而无需更改代码或切换数据库。该公司目前 A 轮融资 2900 w 美元。
在 2022 年 4 月,已经融资千万美元的数据库初创企业 Singularity Data Singularity Data(奇点无限公司)宣布开源 Rust 实现的云原生的支持 SQL 的流式数据库 RisingWave 。RisingWave 于 2021 年初开始用 Cpp 创建,在七个月之后用 Rust 重写。对于早期创业公司来说,这是一个疯狂的决定。特别是在竞争激烈的环境中,对科技初创公司来说,时间几乎就是一切。
流媒体服务
实时事件流媒体公司 InfinyOn 筹集了 500 万美元的种子资金,由 Gradient Ventures 和 Fly Ventures 领投,Bessemer Venture Partners、TSVC 等参投。InfinyOn 使用由 Rust 开发的动态数据可编程平台 Fluvio 。Fluvio 拥有超过 1,000 个 Github star,在开发人员和开源社区中越来越受欢迎。
“在 Java 时代构建的遗留数据平台会生成大型二进制文件,需要大量内存,并且从边缘到核心的操作具有挑战性。这些也缺乏实时决策的在线处理能力,”InfinyOn 的联合创始人兼首席技术官 Sehyo Chang 说。“我们通过消除对 ETL 工具的需求来简化数据架构,提供更具成本效益的平台,内存减少高达 80 倍,并通过内存安全解决方案提供最大的安全性。”
“我们整合来自不同来源的医疗保健数据:物联网、患者和医生的输入。借助 InfinyOn,我们可以使用现代工具快速高效地完成这项工作。它是用 Rust 编写的,与 Kafka 相比,这使得团队更容易集成。” Nammu 首席执行官 Chris Brucker 说。
InfinyOn 可以轻松地从多个来源提取、整形和转换数据,并实时计算结果。虽然仍处于 Beta 阶段,但早期采用者已在 InfinyOn 的概念验证中看到了与替代解决方案相比的显着优势。除了易用性和开发速度之外,与其他供应商相比,供应商还看到了总拥有成本的显着降低。
Rust 其他领域应用软件定义汽车:Rust 的关键作用
关键字:软件定义汽车
汽车标准组织 Autosar——其成员包括福特、通用、宝马、博世、大众、丰田、沃尔沃等——在 4 月份宣布在其功能安全工作组 (WG-SAF) 中成立一个新的子组,以探索 Rust 如何能够用于其参考平台之一。SAE International 还 成立了一个工作组 来研究汽车行业中与安全相关系统的 Rust 。在 5 月份 Autosar 和 Rust 团队进行了一次交流 ,探讨 Safe Rust 在汽车领域是否可以构造一个合规的安全子集,讨论内容就是 Ferrocene Rust 安全子集。
随后 Autosar 官网撤销了成立新的 Rust 工作组的新闻,也许是要等待 Ferrocene Rust 的成果。另外,在今年 9 月份,Volvo 汽车公司的技术专家和系统架构师 Julius Gustavsson 接受了采访,他坦言,想在 Volvo 中推动 Rust 开发。
Ferrocene Rust 安全子集
Ferrous Systems 和 AdaCore 在今年 2 月份宣布,他们将联手开发 Ferrocene——一种符合安全要求的 Rust 工具链,旨在支持各种受监管市场的需求,例如汽车、航空电子设备、太空和铁路。这意味着根据各种安全标准对 Ferrocene Rust 编译器进行汽车安全性等级 ASIL 的 D 级(D 代表最高程度的汽车危险)认证,这项工作最终将包括必要的动态和静态分析工具的开发和资格认证。Ferrous Systems 和 AdaCore 也在寻找经过安全认证的库,包括语言支持 (libcore) 或其他用户库。我们的目标是针对与这些市场相关的各种架构和操作系统。这一愿景需要时间才能实现,而 Ferrous Systems 和 AdaCore 准备从关注某些特定方面开始。最终,我们的目标是像支持任何其他与高完整性应用程序开发相关的编程语言一样全面地支持 Rust。Ferrocene 语言规范目前正在制定中,预计年底发布。
其他公司
在 Rust 基金会银牌会员中还有 ARM 也在致力于推动 Rust 在软件定义汽车中落地。
即时通信: Threema
关键字:即时通信
Threema 是一款跨平台、隐私安全且开源的即时通信工具。
密码管理工具: 1Password
关键字:跨平台
1Password 很早就使用 Rust 来构建其 Windows 客户端。在 2019 年将其支持浏览器扩展的逻辑引擎从 Go 移植到了 Rust ,然后就开始了 Rust 跨平台的应用实践。直到 2022 年 11 月,1Password 也开源了其跨多种语言生成一致的类型模式 的 Typeshare 库。Typeshare 可以帮助开发者实现跨语言无缝同步共享数据类型,这是跨平台安全开发的利器。
GUI :目标 Qt 市场
关键字: Qt、GUI
全球知名 Qt 咨询和 UI/UX 设计服务公司 tQCS 的合作伙伴有两家都加入了 Rust 基金会银牌会员。分别是:
KDAB :在嵌入式系统、3D 图形以及跨桌面、嵌入式和移动平台的工作方面拥有多年经验, KDAB 是 Qt 项目的主要贡献者。Slint: 极大地简化了取代 Qt 需求的嵌入式平台的 GUI 开发。支持 Rust/Cpp/Javascript ,有设计友好的 UI 标记语言。其创始人同样来自 Qt 项目主要贡献者,QtQml 引擎的主要开发者。云存储: Dropbox
关键字:云存储
Dropbox 是最早使用 Rust 并取得成功的公司之一。Dropbox 将 Rust 用于其部分文件同步引擎。以及一个新的视觉交流工具 Dropbox Capture ,旨在使团队能够轻松地使用屏幕记录、视频信息、屏幕截图或 GIF 来异步分享他们的工作。
边缘计算:Cloudflare
关键字:边缘计算、serverless
Cloudflare 在其核心边缘逻辑中使用 Rust 来替代内存不安全的 C。Cloudflare worker 支持 Rust 和 WebAssembly 。在今年 9 月份,Cloudflare 还宣布正在用 Rust 实现一款可以替代 Nginx 的代理服务器 Pingora 。
迪士尼公司(Walt Disney Company)
关键字:WebAssembly 、渲染引擎
迪士尼公司正在用 Rust 构建其 NCP GUI 框架,从迪士尼的这一职位招聘信息中可以得出这一结论。从该公司 2021 年发布的信息“介绍 Disney+ 应用程序开发工具包 (ADK)”来看, 使用 Rust 主要是构建代号为“m5”的 Native Client Platform v2 (NCPv2) 框架。他们选择了 Rust,以 WebAssembly (WASM) 为目标,以便在限制更新基于 C 的运行时的能力的任何固件更新周期之外简化 Web 部署和应用程序可更新性。该项目已经持续进行了快三年了,现在已经达到了从手持终端到电视,网页等全平台使用同一个渲染引擎来渲染它们的动画。
特斯拉
关键字:高性能机器人模拟器、固件验证
虽然马斯克在今年 2 月份于推特上面宣称他是 Rust 语言的粉丝,同时也承认特斯拉主要使用 Cpp 和 Python 。但从今年 11 月份发布的两个 Rust 职位来看,特斯拉也开始采用了 Rust 。其中一个是特斯拉机器人模拟引擎团队的招聘,正在寻找 Rust 开发人员来扩展用 Rust 编写的高性能机器人模拟引擎。另外一个是 Rust 固件验证工程师 ,但该职位对于 Rust 的要求只是“有任何 Rust 经验者优先,但不是必需的”。
Tweedegolf : 与太空公司宇宙飞船
关键字:PTP、卫星、宇宙飞船、太空
这次 Rust 真的要上天了。Gama 将发射太阳帆宇宙飞船️,并且是公开将 Rust 送入太空的公司之一。提供软件服务的应该是这家公司:Tweedegolf ,该公司也是 Rust 基金会银牌会员。他们的开源仓库里有一个 Rust 实现的 PTP (精确时间协议) 库,这个 PTP 一般用在卫星的时间源,比 NTP 更精确。但这个是 PoC 实现,不知道这次发射的飞船上有没有用。从另外的项目 嵌入式开发板 pcf85063a (一般用于计时闹钟)rust 驱动来看,这次上天的 Rust 程序很可能和精确计时相关。
Gama 太阳帆的卫星于 2023 年 1 月 3 日由 SpaceX 猎鹰 9 号成功送入轨道。
荷兰 Lightyear 太阳能汽车公司采用 Rust
荷兰 Lightyear 公司将在今年晚些时候开始向客户交付全球首款可量产的太阳能汽车
在 Tweedegolf 公司的博客网站上透露,由 Lightyear 公司的软件架构师 Jorrit 在 Tweedegolf 公司组织的高科技行业 Rust 线下聚会分享了 Lightyear 公司如何在 Lightyear 核心平台的开发中使用 Rust 。 可能是隐私原因,并没有放出该分享的视频和 ppt 资料。
文件数据存储: Qumulo
关键字:混合云文件数据管理
Qumulo(混合云文件数据管理领域领导者) 和 西部数据 这两家公司是合作企业,通过部署基于西部数据 UltrastarTM 大容量 HDD 和高性能 SSD 的 Qumulo 可扩展文件数据平台,IHME(健康指标与评估研究所)每天可处理高达 2PB 数据,推进公共流行病研究、统计和预测。 Qumulo 赞助了 RustConf 2022 大会。
老牌数据库公司: PostgreSQL
关键字:数据库、postgresql
PostgreSQL 赞助了 RustConf 2022 大会,没有发现 PostgreSQL 公司内部有使用 Rust 的痕迹。但是在 GitHub 有一个致力于用 Rust 编写 PostgreSQL 扩展的项目 pgx,其中核心开发者 Ana 博客也有很多相关文章。
企业数据分析:Redjack
关键字:数据分析
Redjack 号称来自美国国家情报机构的技术,每年监控和保护超过 8% 的互联网公共 IP 空间和超过 100 万亿次商业通信,提高可操作的数据使组织能够提高分析的速度和准确性,从而实现大规模运营的安全性和弹性。Redjack 也赞助了 RustConf 2022 大会,以此推断 该公司也有采用 Rust 的可能性。
数据科学与人工智能
数据科学、AI
Rust 基金会银牌会员中也包括数据科学和人工智能领域的公司:
Watchful,以传统标签解决方案无法实现的速度和规模为 AI 标记数据。汽车物联网
关键字: IoT
Wyliodrin 使用 Rust , Tock OS 和 Android 保护设备并构建安全高效的系统。将 Rust 嵌入式实时操作系统 Tock OS 推入商业应用中。该公司也加入了 Rust 基金会银牌会员。
消息推送服务商:OneSignal
关键字:消息推送
消息推送服务商 OneSignal 在 2017 年就开始使用 Rust 了,提供了 Rust Client 来支持推送通知、电子邮件、短信和应用内自助式客户参与解决方案。
自动化货运列车:Parallel Systems
关键字:货运自动化列车
自动化货运列车 Parallel Systems,相信货运的未来是铁路,所以研发了零排放的自动化电动货运跑在铁路上,Rust 语言是该公司技术栈的通用语言。该公司也赞助了 RustConf 2022 大会。
Rust 开发工具、平台与工具链支持
关键字:开发工具
基于 Rust 实现了一些好用的开发工具,比如:
tabnine,一款基于机器学习的代码自动完成开发工具。Open Source Security ,该公司加入了 Rust 基金会银牌会员,致力于为 Rust 生态推广做出贡献,目前主要是赞助 GCC Rust 的实现。截止到 2022 年 12 月,GCC Rust 前端将在 GCC 13 中合并!Embecosm ,提供开源软件工具链和嵌入式操作系统服务。Embecosm 也是 GCC Rust 前端的赞助商。grafbase,构建和部署 GraphQL 后端的服务平台。Rust for Linux,Linux 6.1 内核版本合并了初始的 Rust 基础设施,为未来的内核驱动程序和其他内核代码启用 Rust 编程语言打好了基础。在 11 月 11 号,Rust for Linux 又提交了很多补丁代码到上游内核中。一旦所有这些 Rust 基础设施就位,我们将看到在更突出的现实世界驱动程序开始过渡到 Rust 代码之前需要多长时间,以获得新的硬件支持或在 Rust 中重写现有的 C 驱动程序代码。Rust 在 Linux 内核中的首批主要用户之一预计将是 Apple M1/M2 图形的 DRM 驱动程序。安全监控
关键字: 资产安全、事件监控
该领域目前在 Rust 基金会银牌会员中包括以下公司:
Spectralops,监控、分类和保护代码、资产和基础设施,以防止暴露的 API 密钥、令牌、凭证和高风险安全错误配置。Sentry,应用程序监控平台。软件咨询
关键字: 软件咨询
目前也涌现出一些 Rust 咨询公司,下面是加入 Rust 基金会银牌会员的公司:
knoldus,Ferrous SystemsmainmatterTag1游戏 与 渲染引擎
关键字: 游戏
Rust 在游戏领域目前还在发展中。游戏公司动视暴雪作为普通赞助商加入了 Rust 基金会,并且在 2021 年发布了一份由动视暴雪旗下工作室 Treyarch 撰写的 「用于游戏工具的 Rust 编程语言 」 调研报告。 Treyarch 自 2018 年以来, 一直在逐步将 Rust 集成到我们的工具和管道中。
另外还有一家值得关注的游戏公司是 Embark,该公司赞助了 Rust 游戏引擎 Bevy 和 Fyrox,并且开源了 rust-gpu 致力于使 Rust 成为 GPU 着色器的一流语言和生态系统。
电商
关键字:电商
Rust 也被用于电商领域。
美国最大的家具电商公司 Wayfair 旗下的开源项目 Tremor,已经进入 CNCF。去年 九月份还召开了一次小型的线上的 Tremor Conf 。从 2018 年开始, tremor 就是跑在了 wayfair 生产环境中,每天处理 10 兆字节的数据,或每分钟 100 亿条消息,每秒 1000 万个指标。tremor 降低了成本,减少了复杂性,巩固和简化了操作环境,以激发 SRE 的乐趣,减少 NOC 的工作量,并降低运营成本。Rust 为 Wayfair 省掉数千个核心和TB级的内存的成本cargurus ,英国的一家二手车电商网站,也成为了 Rust 基金会普通赞助商成员。Web3 与 区块链
关键字:Web3 、同态加密、隐私计算、区块链、数字货币、零知识证明
Rust 在 Web3 和 区块链领域已经成为了主流语言。在这些领域耳熟能详的公司和项目很多:
Diem ,前身叫 Libra ,曾经是 Facebook 的稳定币项目,但是现在已经被 Silvergate Capital Corporation 收购。超新公链aptoslabs 和 sui,都是 Diem 团队成员离职创业的两个项目,它们的共同点是都使用 Rust 实现的 Move 语言作为智能合约语言。parastate,波卡生态多链智能合约平台,是 Rust 基金会银牌会员。Zama,为数据科学和 AI 构建开源同态加密解决方案,是 Rust 基金会银牌会员。Keyrock ,部署了专有且高度可扩展的数字资产做市技术,是 Rust 基金会银牌会员。matter-labs ,扩展以太坊 零知识证明 。日本区块链技术孵化公司 TECHFUND ,也加入了 Rust 基金会银牌会员。其他。小结
Rust 是一门通用的语言,并且多样化也是 Rust 语言的设计原则之一。本文试图通过罗列 Rust 在各个领域的成功应用案例,来帮助人们了解 Rust 适合落地的业务场景,以及 挖掘 Rust 开源生态知名项目,让大家了解 Rust 目前的发展状况。
然而,本文远远未能覆盖 Rust 应用的全部角落,还有我们看不到的地方,正在默默地采用 Rust 。本文也几乎没有罗列国内使用 Rust 的公司,但国内也有公司准备逐步采用 Rust ,只是进展比较慢。
Rust 就像一阵“春雨”,随风潜入夜,润物细无声。感谢阅读。
本文转载来源:
https://www.infoq.cn/article/z4MCCu8W62Je7d2fED7p