写点什么

争议与热度并存,越来越多开发者正在抛弃他们的旧语言转向 Rust

  • 2024-02-05
    北京
  • 本文字数:4614 字

    阅读完需:约 15 分钟

争议与热度并存,越来越多开发者正在抛弃他们的旧语言转向 Rust

采访嘉宾 | 王兴、李原、侯培新

编辑 | 蔡芳芳


“用 Rust 重写”的表情包广为流传,是 Rust 空前影响力的证明。


如果要选出过去一年开发者群体关注度最高的编程语言,可能非 Rust 莫属。从正式发布 1.0 版本之后的 2016 年至今,Rust 已经连续 8 年在 Stack Overflow 开发者年度调查报告中被评为“最受欢迎”编程语言。也有关注其他编程语言的社区专家向我们反馈,在微信群里经常看到“使用 Rust 重写”的表情包,这也从一个侧面反映了 Rust 的影响力。


本次年度技术盘点与展望,InfoQ 邀请了多位在华为从事 Rust 开发工作的技术专家,与我们一同回顾 Rust 编程语言过去一年在功能特性、应用场景、社区生态等方面取得的进展。

争议和冲突不断,不妨碍 Rust 加速“出圈”


如果要回顾 2023 年 Rust 编程语言的大事件,第一个被提起来的一定是 5 月份 RustConf 2023 Keynote 事件。当时,JeanHeyd Meneide 在网站上发布了一篇文章 《I Am No Longer Speaking at RustConf 2023》 正式拒绝参加 RustConf 2023 并且不再演讲,在社区中激起千层浪花(详见 InfoQ 报道1)。由于 JeanHeyd 计划演讲的部分内容是得益于 Rust 基金会的赞助,Rust 基金会也第一时间在官方 Blog 上对事件做出了回应,并开始讨论是否未来由 Rust 基金会来主办 RustConf,以避免这类乱象。6 月份 Rust 社区宣布调整组织架构,成立新的顶级治理机构:领导委员会(Rust Leadership Council)。由 Rust 各团队成员合力创建一份新的、名为 “ Rust 领导理事会” 的 RFC 草案,并确立了以下内容:移除 Rust 核心团队,由各团队出一个代表,成立一个顶级的治理团队“领导委员会”。


Rust 领导委员会将从 Top-level 的角度协调整个社区的工作,同时 2023 年由领导委员会选举了 5 名社区专家进入到了 Rust 基金会的董事会、代表社区和董事会一起工作。此外 Rust 基金会引入了新的会员类型 Associate Membership Tier, 非盈利组织、高校和科研机构可以作为成员加入到基金会,进一步提升社区成员的多样性。


虽然以上举措旨在解决社区纷争,但纷争并没有就此完全终结(详见 InfoQ 报道 2),不过这并不影响 Rust 社区以惊人的速度发展。


据了解,作为 Rust 生态基础工具包的聚集地,Crates.io 网站上 Rust 第三方库在 2023 年突破了 500 亿下载次数。


JetBrain 发布的 《2023 开发者生态系统现状》调研报告也证明了 Rust 的持续加速“出圈”:在今年最受欢迎的编程语言中,Rust 创造了新的使用记录,其用户群在过去五年中稳步增长,有望凭借其严格的安全性和内存所有权机制取代 C++;此外,Rust 今年首次取代 Go 成为希望迁移到其他语言的开发者的首选,而 Go 用户也是第一批准备采用 Rust 的人,JetBrains 数据表明,有六分之一的 Go 用户正在考虑采用 Rust。多年来,Rust 一直是最流行的学习语言之一 ,2023 年 Rust 首次占据榜首,即有最多开发者计划未来 12 个月内从原来使用的编程语言迁移到 Rust 编程语言。



透过上述纷争我们可以看到当前整个 Rust 生态的现状:Rust 编程语言由社区驱动前行, 虽然有不同意见和争吵,但同时也保持着强大的发展动力和潜力。候培新表示,Rust 基金会会一直与 Rust 社区保持紧密合作,通过各种方式支持推动 Rust 生态继续扩大,被更多的开发者使用。


李原表示,在他个人的社区交流开发过程中,没有人对纷争有过多的关注。他认为这和 Rust 社区以技术为根本、项目演进采取由下至上、以技术驱动为主的社区氛围和传统有着重要的关系。当然,社区也采取了动作,比如以各个团队技术代表来重组领导小组,来避免日后再次出现类似的纷争。在王兴看来,每个社区都有适合自己的治理方式,虽然 Rust 社区遇到了一些问题,但只要社区的目标是持续解决开发者的问题,最终开发者还是会支持这门语言的发展。


面对冲突不断的 Rust 社区,曾有人向 Rust 的创造者 Graydon Hoare 提出这样一个问题:“你有没有想过在 Rust 项目中 BDFL(终身扮演仁慈的独裁者?)”而如果他真的这样做了,Rust 项目的发展会不会更好?Graydon Hoare 在自己的博客文章和关联的 Reddit 评论区回应了这个问题,他认为如果是由他来治理的话,方向肯定会很不一样,但是 Rust 就不太可能像现在这样“出圈”。同时,尽管如今的 Rust 跟 Graydon Hoare 最初想象中的 Rust 存在巨大差异,但他也对 Rust 语言如今获得的成功抱有巨大的成就感和满足感。

Rust 正在走进越来越多企业和场景


作为 Rust 基金会创始成员和一以来编程语言潮流的引领者,谷歌和微软在 Rust 的采用上先行一步。


在 2022 年 Linus 接受 Rust 作为 Linux Kernel 的第二编程语言时,社区反馈褒贬不一,持各种意见的人都在观望如何把 Rust 编写的内核模块运用到生产上。当 2023 年 12 月谷歌提交 Android Binder 进入内核,越来越多开发者相信 Linus 的决定是正确的。Android 13 新增 Native 代码中 Rust 的比例已经接近 20% ,在 Android 14 中预计接近 25% ,谷歌不仅在 Android 中大量采用内存安全的 Rust 编程语言,也在 Chromium 中引入 Rust ,让浏览器变得更加安全。


而微软不仅提供了 windows-rs 帮助开发者使用 Rust 开发 Windows 的程序,更在 Windows 11 Insider Preview Build 25905 版本中发布了用 Rust 编写的 Windows 内核。当然这不是完全替代,而是部分用 Rust 开发,其中包含了一个 GDI 引擎的实现。相信未来微软会越来越多地在 Windows 上使用 Rust ,以打造一个更加安全的操作系统。


而在国内,华为内部也有了越来越多使用 Rust 的场景,比如在嵌入式、云服务、中间件等领域都有 Rust 的应用;又如由华为开源并捐赠给开放原子开源基金会的 OpenHarmony 项目实现了与 Rust 互相支持,并基于 Rust 重写了上传下载等模块,性能显著提升。在和国内很多头部互联网公司交流的过程中,王兴也看到大家在积极拥抱 Rust,并且很多公司已经有了不少 Rust 资产。比如 Vivo 就在近期推出了基于 Rust 语言的 BlueOS 操作系统。可以看到,2023 年 Rust 支持的操作系统和体系架构变得更加丰富,在 musl、移动平台等场景的支持上也取得了明显的进步。


采用“技术采用生命周期”来评估 Rust 的发展现状,王兴认为 Rust 目前处于早期大众阶段,而李原则略微保守一点,他认为处 Rust 在早期采用到早期大众的过渡阶段。


在王兴看来,大多数有一定技术能力的公司已经度过了试水阶段,使用 Rust 作为一门主力开发语言是一件正在发生的事情。国外谷歌、微软等公司在 Rust 发展上的声量显然比国内公司大不少,但国内公司的进展也超出了王兴的想象,他认为或许差距并没有想象中那么大。


李原则认为,近年来 Rust 的使用者确实在快速增长,越来越多的公司开始采用 Rust 做开发。然而 Rust 本身还需要更加正规化以支持大规模开发的需求,比如语言需要规范文件,配套工具需要快速及安全的协议,项目构建效率需要提升等等。国内外的差异主要在使用人数和职业开发者数量上,但发展阶段没有明显差距,都处于逐步成熟和扩张的阶段。


值得一提的是,2023 年 11 月,对于任何一个编程语言都至关重要的厂商 JetBrains 加入 Rust 基金会成为银牌成员。不仅仅是加入,JetBrains 还带来了为 Rust 编程语言打造的 IDE——Rust Rover,与此同时 JetBrains 的下一代编辑器 Fleet 也是使用 Rust 编程语言开发的。这既是 Rust 生态扩大的一个体现,也预示着未来 Rust 生态和应用场景进一步扩大的可能。

2023 年语言本身值得关注的变化


从 Rust 编程语言本身的技术特性看,2023 年有几个变化值得关注。


第一点是性能提升,除了通过完善编译时常量表达式特性来获得更多运行时性能优化,Rust 在编译性能、三方库获取性能方面也取得了明显进步。尤为重要的一点是,Rust Nightly 版本中引入了并行编译的技术,开始着手解决编译速度的问题。在侯培新看来,这标志着 Rust 编程语言更多进入到生产环境进行大型项目的开发,编译速度已经成为影响开发效率的关键问题。


第二点是 Rust 语言规范化。2023 年,Rust 社区 Language Team 下成立了 Specification Team, 由 Mara Bos 和 Felix Klock 任 Team Leader,开始了 Rust 编程语言规范的编写工作。侯培新认为,这是一个标志着 Rust 逐渐成熟的里程碑事件,且不提一个规范对于语言本身的重要性,它对于商业发展也起到了至关重要的作用。2023 年 11 月, 德国公司 Ferrous Systems 宣布使用了 Rust 编译器的一个子集通过了 ISO 26262 和 IEC 61508 的认证,打开了 Rust 编程语言进入汽车和工业自动化领域的大门。可预见 Rust 社区官方的 Specification 将大力推动 Rust 进入更多的商业领域,为 Rust 的大规模应用铺平道路。


第三点是安全性补齐短板,Rust 2023 年通过支持更多安全编译场景如异步 trait 方法、优化编译告警如默认关闭 debug 信息等,优化了用户的体验,使用户得以更好地获取 Rust 安全性的优点。


上述变化实际上反映出了 Rust 的主要演进方向:首先是降低整体学习曲线,使语言的学习和使用更为简单方便;其次是配套工具更加成熟及正规化。而这两个演进方向背后的根本原因,正是因为 Rust 的主要用户已经从较少数的技术爱好者变成了诸多企业规模开发中的开发者。


为了让更多人学习和使用 Rust ,Rust 基金会在 2023 年 11 月启动了 Developer Training 和 Certification Program ,以帮助开发者跨过学习曲线成为合格的 Rust 开发者。


李原表示,降低学习曲线、适配更广泛的场景以优化开发者体验仍将是 Rust 社区未来重点投入的方向。2024 年最值得期待或者说最有可能出现重大突破的方向包括:语言规范化 RFC 将会逐步成型;嵌入式场景的支持将会快速成熟;诸多提升构建效率的方法如并行编译前端、默认 LLD 链接器支持等将会取得重大进展,等等。

大模型时代 Rust 的机会


提及 Rust 在大模型时代的发展趋势,王兴和李原都认为,大模型时代的到来对于 Rust 的推广会起到正向作用。


在王兴看来,Rust 在大模型本身的训练和使用中的应用还有待观察,但在大模型时代,学习 Rust 的开发者能够借助大模型更容易地理解 Rust(比如帮你指出为啥编译不过?:)),这对 Rust 来说是一个好消息。同时大模型也有助于熟练的 Rust 开发者提高生产力,王兴进一步解释道:“当前大模型的能力来讲,AI 对高水平编程开发者来讲是更好的武器,他们具备更好的能力从 AI 中得到更好的结果,也具备能力判断结果的正确性。编程的过程可能比以往会更贴进核心的逻辑和抽象,细节和体力活 AI 可能要和语言的语法糖来竞赛来看谁更适合解决。”


李原同样认为大模型的出现对于 Rust 的推广来说意义重大,他表示:“初学者可以通过将需求告知大模型、将其他语言交给大模型翻译等途径快速获得较高质量的 Rust 代码,这很大程度上降低了 Rust 的学习曲线。而未来场景化的大模型软件的大量涌现,此时也是使用 Rust 代码替代传统 C/C++ 语言的重要机会。”


正如候培新所说,在 2024 年,可以期待 Rust 生态系统会继续蓬勃发展, 随着企业和开源社区对 Rust 的持续兴趣和投资,Rust 应用领域可能会进一步扩大,覆盖更多技术领域,吸引更广泛的开发者群体,期待 Rust 重塑软件生态。


采访嘉宾介绍:


  • 李原  Rust 编译器 committer

  • 王兴  华为 OpenHarmony Rust 技术专家

  • 侯培新  Rust 基金会董事


如果你觉得本文对你有帮助,或者你对 Rust 未来发展有自己的思考,欢迎在文末留言告诉我们!


InfoQ 2023 年度技术盘点与展望专题重磅上线!与 50+ 头部专家深度对话,探明 AIGC 创新浪潮下,重点领域技术演进脉络和行业落地思路,点击订阅/收藏内容专题~


2024-02-05 09:5013311
用户头像
蔡芳芳 InfoQ主编

发布了 801 篇内容, 共 555.7 次阅读, 收获喜欢 2790 次。

关注

评论 1 条评论

发布
用户头像
我不信,华为是自研语言 自研系统 不可能用rust [/狗头]
2024-02-05 21:25 · 湖北
回复
没有更多了

【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(文件处理指令-上)

洛神灬殇

Linux 技术分享 后端领域‘’ 2024年第十九篇文章

一个很热的国产低代码开发平台

2D3D前端可视化开发

物联网 低代码开发平台 数字孪生 前端设计 可视化开发

光纤的连接

小齐写代码

别再因为React、Vue吵了,真的毫无新意!

伤感汤姆布利柏

千万级高性能长连接Go服务架构实践

百度Geek说

golang 架构 高并发 长连接 企业号 1 月 PK 榜

LiveVideoStack人物专访:深耕多媒体二十载,他怎么看未来的视频云?

阿里云视频云

云计算 视频云 多媒体

测试管理进阶 | 如何打造一份出彩的工作汇报!

测试人

软件测试 测试 自动化测试 测试开发 测试管理

微服务的拆分规范和原则

伤感汤姆布利柏

【年后跳槽必看篇-非广告】Kafka核心知识点-第二章

派大星

Java 面试

【第七在线】智能商品计划:让供应链管理更加智能、高效

第七在线

每个开发人员都应该知道的13个Nodejs库

南城FE

JavaScript 前端 nodejs

从 2.x 到 3.x,TDengine 在 3D 打印技术中的应用实践

TDengine

tdengine 时序数据库

实战Arthas:常见命令与最佳实践

Java随想录

Java 工具 Arthas 线上问题排查

一览2023 Web3 风云录

TechubNews

web3 香港Web3

Jira 私有化部署即将停服,你准备好了吗?

极狐GitLab

IPQ5018: Low-Cost OFDMA Supported WiFi 6 IIoT Solution DR5018

wallyslilly

ipq5018

动态规划-序列比对-Smith-Waterman

alexgaoyh

Java 动态规划 编辑距离 序列比对 Smith-Waterman

奖金 30 万!OurBMC 开源大赛等你来战

OurBMC

开放原子大赛 BMC全栈技术 ourBMC 飞腾服务器故障诊断

Dart代码混淆

雪奈椰子

争议与热度并存,越来越多开发者正在抛弃他们的旧语言转向 Rust_编程语言_蔡芳芳_InfoQ精选文章