写点什么

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

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

    阅读完需:约 15 分钟

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

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

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

编辑 | 蔡芳芳


“用 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:5012895
用户头像
蔡芳芳 InfoQ主编

发布了 791 篇内容, 共 515.4 次阅读, 收获喜欢 2762 次。

关注

评论 1 条评论

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

金沙账号审核不通过维护不给提现风控怎么回事?怎么办

过山太阳

内容审核 提现不了

HashMap将cpu打满始末

hashmap 线程安全 cpu 100% cpu飙满

重新学习了一遍ThreadLocal

熊斌

学习

oeasy教您玩转 linux 010212 管道 pipe

o

【高并发】面试官:讲讲什么是缓存穿透?击穿?雪崩?如何解决?

冰河

缓存 穿透 击穿 雪崩 签约计划第二季

记录问题 INSERT INTO table ... SELECT ... FROM dual WHERE not exists (...)问题

转山转水

sql SQL语法 sql查询

区块链激励层——区块链生态建设的驱动力量

CECBC

区块链技术 驱动力量

浮点数的秘密

C语言与CPP编程

c c++ 编程语言 浮点数

我们该怎么保护手机屏幕前的父母?

徐说科技

手机 短视频

LeetCode 169. Majority Element

liu_liu

算法 LeetCo

不草率,你只管下载资料,剩下的交给「哇哦」

小Q

Java 学习 架构 面试 分布式

华为与第四范式,正在酝酿一个帮企业跳出AI悖论的“秘密计划”

脑极体

不使用Raft算法,就能简单做集群leader选举

架构师修行之路

分布式 架构师

业务架构学习内容有哪些?

周金根

BIZBOK 业务架构

我理解的面向对象(ObjectiveSql 实践)

Braisdom

Java ORM框架 ORM

为什么每个微服务要有自己独立的数据库?

码猿外

数据库 架构 微服务

Golang领域模型-实体

奔奔奔跑

架构 微服务 领域驱动设计 DDD Go 语言

SpringCloud轻松集成Dubbo实现RPC调用

Barry的异想世界

微服务 dubbo nacos RPC spring cloud alibaba

Go: 理解 Sync.Pool 的设计

陈思敏捷

sync sync.pool pool Go 语言

以大数据为依托提升基层治理效能

CECBC

大数据 信息化管理

认证、授权、鉴权和权限控制

哈库拉玛塔塔

spring security 用户权限 鉴权 权限

week11--作业

Geek_165f3d

计算机的时钟(三):向量时钟

ElvinYang

一文带你了解微服务架构和设计(多图)

Phoenix

架构 分布式 微服务

从一段 Dubbo 源码到 CPU 分支预测的一次探险之旅

yes

dubbo cpu

Spring Security 主要类解释

哈库拉玛塔塔

springsecurity

企业中台化落地:从战略分析到战术实践及架构演进过程

Barry的异想世界

架构设计 策略模式 模板方法模式 中台架构 领域驱动设计DDD

布式系统消息异常该何去何从

架构师修行之路

分布式 异步

spark总结

纯纯

Java四种引用类型:强引用、软引用、弱引用、虚引用

简爱W

区块链应用层——生态体系的上层建筑

CECBC

区块链技术 生态体系

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