重回正轨的Rust真的要火了吗开源中国

北京中西青春痘医院 https://m-mip.39.net/baidianfeng/mipso_8743276.html

大东

本月初,Mozilla联合微软、谷歌、AWS、华为四大技术厂商创立Rust基金会的消息成为社区热门话题,也让Rust这门近年兴起的编程语言热度持续升温。

回顾OSC近两年来对Rust语言的相关跟踪报道,我们整理了Rust语言从诞生至今的发展趋势。大厂不断押注,民间呼声高涨,这门以取代C/C++为目标而诞生的语言,真的要火了吗?

起源

Rust语言最初只是Mozilla员工GraydonHoare在年创建的一个业余项目。在年时,Mozilla的研发团队在Firefox的开发过程中遇到了瓶颈。作为一个大型的自研浏览器项目,Firefox底层实现主要用C++编写。尽管团队拥有最佳的实践经验和丰富的工程技术人才,但是在编写浏览器内核这样拥有如此复杂的高性能、并行化和内存安全要求的代码时,仍然很容易出错。据统计,Firefox中有超过70%的漏洞与内存安全有关。

正是在这种情况下,时任Mozilla工程师的GraydonHoare毛遂自荐,掏出了自己捣鼓了4年的新语言Rust。在JS之父BrendanEich和DaveHerman等人的帮助下,经过团队的进一步打磨,Rust语言也从最初的个人项目变成一个日趋成熟的现代化编程语言。年,Mozilla正式宣布将推出基于Rust语言开发的新浏览器引擎Servo,这是一个以内存安全性和并发性为首要原则而构建的浏览器引擎,同时也是Rust语言在一个完整大型项目中的首秀。

早期的Rust被Graydon描述为“寒武纪思想和狂野实验的碰撞”。秉持着“大力出奇迹”的思想,Graydon从C++、OCaml、Haskell、Erlang、ML、C#、Ruby等编程语言中吸取了大量的灵感,这些语言中的先进概念先后被加入Rust的特性中,这也反映了当时参与打磨Rust语言的工程师人数众多。尽管业内人士对Mozilla倾尽全力打造的这门雄心勃勃的新语言颇为赞赏,但当时的大多数人并不看好Rust这门新语言的发展前景。

年,Mozilla发布了Rust的首个稳定版本v1.0,成为Rust一个重要的里程碑。不久之后,Firefox于年首次在生产环境中发布了第一个由Rust编写的组件。从这时起,Rust开始在业内引起了广泛的注意,尤其是其特性中令人印象深刻的安全性。

作为推出用来替代C/C++的编程语言,Rust与C/C++的区别在于其强大的安全保障。除非通过使用“unsafe”关键字明确选择使用,否则Rust完全是内存安全的。在系统编程中,有时开发者必须执行无法静态验证为安全的操作。Rust为开发者提供了将这些操作包装在安全抽象的工具中,这意味着Rust编译器可以静态地强制执行那些曾经属于代码注释或约定的操作。必须显式地标记内存不安全操作,从而极大地减少了内存安全漏洞出现的频率。

大厂支持

正是得益于注重内存安全的特性,Rust语言近年来接连获得国内外多家大厂的公开支持。

年,微软宣布将探索使用Rust编程语言作为C、C++和其他语言的替代方案,以此来改善应用程序的安全状况,并进行了一些使用Rust重写Windows系统组件的实验。

据悉,自年以来,微软安全响应中心(MSRC)已对所有报告过的微软安全漏洞进行了分类。根据他们提供的数据,所有微软年度补丁中约有70%是针对内存安全漏洞的修复程序。这样高的百分比是因为Windows和大多数其他微软产品主要使用C和C++编写,这两种“内存不安全”(memory-unsafe)的编程语言允许开发人员对内存地址进行细粒度控制,并且可以执行代码。管理内存执行的开发人员代码中的一个漏洞可能导致一系列内存安全错误,攻击者可以利用这些错误带来危险和侵入性后果,例如远程代码执行或权限提升漏洞。

▲微软每年约有70%的漏洞仍然是内存安全问题

于是,探索使用诸如Rust之类的内存安全(memory-safe)语言被提上日程。此外,微软还在去年宣布正在开发基于Rust的安全编程语言Verona,并由C#项目经理MadsTorgensen与MicrosoftResearchCambridge研究软件工程师JulianaFranco进行维护。

同年,另一家互联网大厂AWS在其开源博客上发文宣布赞助Rust语言,并陆续使用Rust编写了多款产品。其中,最新的一款产品是基于Linux的容器操作系统—Bottlerocket。除了提供赞助外,AWS还开始大量招聘Rust社区贡献者,支持Tokio(一个用Rust为各种设备编写应用程序的运行时)项目的开发。去年年末,AWS更是将Rust编译器团队负责人纳入麾下,进一步壮大了其内部的Rust团队。

AWS方面透露,他们正在建立一个Rust和Tokio团队以支持其长期计划。AWS的开源执行官MattAsay表示,“鉴于我们对Rust的依赖,我们需要深厚的内部Rust专业知识,就像我们对Java和其他基础技术的需求一样。”

与Mozilla合作密切的谷歌也已经开始在那些对内存安全和性能要求极高的设置中使用了Rust,包括将其用在关键的Chrome浏览器和Android系统中。去年,谷歌工程师分析了自年以来在Chrome稳定版分支中修复的个安全错误。并发现,在这些被标记为“高”或“严重”等级的所有安全漏洞中,大约70%是内存管理和安全问题,这个数据与Firefox和微软统计的数据基本吻合,说明内存安全漏洞已经是传统编程语言开发环境中的一个普遍性问题。

今年2月8日,华为、微软、AWS、谷歌和Mozilla五大公司联合成立Rust基金会,再次将Rust推向了一个全新的高度。

社区认可

除了大厂入局以外,来自民间的呼声也让Rust近年来持续升温。

年9月,Linux内核维护者Greg表示愿意接受用Rust开发Linux驱动,到去年7月,LinusTorvalds回应称可以默认启用Rust支持,这个全球最大的开源社区对新语言Rust表现出了极大的包容与积极的接纳态度。

在八月底举办的LinuxPlumbers大会上,关于Linux内核上游对Rust的开放程度成为了最热门的讨论话题。Rust语言团队的联合负责人Thomas和Gaynor,以及Linux内核开发者JoshTriplett等人参与了这场讨论,并向大家展示了截至目前的一些研究成果、想法,还有遇到的问题。

而在学术研究界,科学家们也正在转向使用Rust。去年5月,位于美国马萨诸塞州波士顿Dana-Farber癌症研究所的生物信息学家HengLi在计算生物学任务中测试了多种语言,其中涉及解析万个序列记录的大规模计算任务。测试结果显示,Rust力压C语言成为效率最高的编程语言。“当我们要使用多个线程编写高性能程序,同时又需要它非常快速且节省内存,那么Rust是理想的选择。”Li说。

▲Rust在学术界增长仅次于Python

加利福尼亚大学戴维斯分校的生物信息学家LuizIrber使用Rust来对名为Sourmash的工具进行重新编码,该工具可以进行基因组搜索和分类分析,从而简化研究流程。

自年以来,Rust已经连续5年获得StackOverflow评选的最受欢迎编程语言。

叫好声中的隐忧

然而,与大厂入局、民间呼声高涨的情况相反,Rust实际的用户增长数据却远没有想象中的那般美好。

根据最新的TIOBE编程语言排行榜数据显示,Rust的占比仅为0.49%,排名第30位。这个排名甚至还不如Julia、D语言,更别提早已跻身榜单前15位的Go了。

有意思的是,去年在Rust获得StackOverflow最受欢迎编程语言时,有97%的受访者表示并未使用过Rust,他们对Rust语言的喜爱,仍停留在“想学习”的阶段。

造成Rust语言这般“叫好不叫座”的原因,很大程度上归咎于其长期为人诟病的学习难度问题。在Rust官方的一次调查中,当受访者被问及对于提升Rust的采用率有何建议时,许多人提到的一个方案是降低Rust的学习难度。再具体到特定主题的难度时,许多人认为Rust的“生命周期(Lifetimes)”难度最高,其次是Ownership,61.4%的受访者表示,生命周期的使用既棘手又非常困难。而这两个功能又恰恰是Rust内存安全特性的核心。

除了普及速度缓慢以外,Rust团队本身在年也遭遇了诸多变故。

去年4月,Rust核心开发团队成员SteveKlabnik在博客中透露Rust文档团队自从年8月以来就再也没有举行过文档小组会议,目前也仅剩他一人还在坚持写文档。这对于亟需降低学习曲线难度、优化官方文档的Rust团队来说可谓是雪上加霜。

而仅仅4个月之后,Mozilla宣布由于疫情压力进行组织调整,裁员约人,其中就包括一些Rust项目和Rust社区的活跃成员。尽管Rust官方解释称这些贡献者是以个人的身份参与社区贡献,改变雇主并不会对社区成员的身份造成影响,但这些裁员对Rust项目本身依然产生了很多不确定性和混乱,甚至有网友猜测Mozilla或将放弃Rust这颗冉冉升起的编程语言新星。

未来可期

经历了“动荡”的,如今Mozilla联合四大厂商创立Rust基金会,让Rust的发展重回正轨,同时也终于打消了外界的种种猜疑。

对于Rust社区来说,大厂的参与能够让项目的研发和推广免去资金之忧,并拥有更大的市场潜力;另一方面,在多方参与的基金会管理模式下,也能确保Rust不会过分依赖任何一个赞助商,在开放治理的模式下维持开源社区的活力。

无论如何,更高的市场渗透率、更稳定的库、更好的平台支持等,才是开发者所希冀的。对于用户来说,生产力才是工作的重要目标,Rust究竟能不能火依然取决于它的生态成熟度。

告别动荡的,刚刚成立基金会并趋于稳定的Rust在年还将给开发者带来什么呢?(反正Rust1.50.0稳定版是已经出来了。)相信年末的编程语言排行榜会给我们答案。




转载请注明:http://www.aierlanlan.com/cyrz/2957.html