今天,我们非常自豪地宣布 Rust 1.0 版本的发布,这是一个新的编程语言,旨在使构建可靠、高效的系统变得更加容易。Rust 将底层性能控制与高级便利性和安全保证相结合。更好的是,它无需垃圾回收器或运行时即可实现这些目标,使得 将 Rust 库用作 C 的“直接替代品”成为可能。如果您想尝试 Rust,最好的方式是阅读 Rust 书籍的“入门”章节(如果您更喜欢使用电子阅读器,Pascal Hertleif 也维护了非官方电子书版本)。
与其他语言不同的是,Rust 的类型系统代表了 C 和 C++ 程序员数代实践锤炼出的“最佳实践”的提炼和规范化。因此,Rust 对经验丰富的系统程序员和新手都有所裨益:经验丰富的程序员会发现他们节省了原本用于调试的时间,而新手则可以编写底层代码,而无需担心小错误导致神秘崩溃。
Rust 达到 1.0 版本意味着什么?
当前的 Rust 语言是大量迭代和实验的结果。这个过程对我们来说非常顺利:今天的 Rust 比我们最初认为可能实现的要简单且强大得多。但是,所有这些实验也使得维护用 Rust 编写的项目变得困难,因为语言和标准库一直在不断变化。
1.0 版本的发布标志着这种不稳定性的结束。本次发布是我们稳定承诺的正式开始,因此它为构建应用程序和库提供了坚实的基础。从现在起,破坏性变更基本不在范围内(一些小的例外适用,例如编译器错误)。
话虽如此,发布 1.0 版本并不意味着 Rust 语言已经“完成”。我们还有许多改进计划。事实上,Rust 的 Nightly 构建版本已经展示了编译时间的改进(未来还会有更多),并包含了对新 API 和语言特性的工作,例如std::fs和关联常量。
为了确保编译器和语言的改进尽快进入整个生态系统,我们采用了基于火车模型的发布模式。这意味着我们将像 Firefox 和 Chrome 网页浏览器一样,每六周发布一次定期版本。为了启动这一过程,我们今天还同时发布了 Rust 1.1 beta 版本。
Cargo 和 crates.io
构建一个真实的项目不仅仅是编写代码,还包括管理依赖项。Cargo,Rust 包管理器和构建系统,旨在简化此过程。使用 Cargo,下载和安装新库就像在清单文件中添加一行一样简单。
当然,要使用依赖项,首先必须找到它。这就是 crates.io 的作用所在——crates.io 是一个集中式的 Rust 代码包仓库。它使得搜索他人的包或发布自己的包变得容易。
自大约六个月前我们宣布 Cargo 和 crates.io 以来,包的数量一直在稳步增长。尽管如此,现在还处于早期阶段,仍有许多优秀的包有待编写。如果您有兴趣构建一个将在 Rust 世界引起轰动的库,现在正是时候!
开源与开放治理
Rust 从一开始就是一个开源项目。在过去几年里,我们一直在不断探索如何使我们的治理更加开放和社区驱动。自从一年多前引入RFC 流程以来,所有关于 Rust 的重大决定都以 RFC 的形式公开撰写和讨论。最近,我们采纳了新的治理模型,该模型建立了一系列子团队,每个子团队负责特定领域的 RFC。如果您想帮助塑造 Rust 的未来,我们鼓励您参与其中,可以通过将库上传到 crates.io、对 RFC 发表评论或为 Rust 本身贡献代码。
我们要特别感谢以下自上一版本以来做出贡献的各位(完整贡献者列表在此):
Aaron GallagherAaron TuronAbhishek ChandaAdolfo OchagavíaAlex BurkaAlex CrichtonAlex QuachAlexander PolakovAndrea CancianiAndreas MartensAndreas TolfsenAndrei OpreaAndrew PaseltinerAndrew SeidlAndrew StrawAndrzej JanikAram VisserAriel Ben-YehudaAugusto HackAvdi GrimmBarosl LeeBen AshfordBen GesoffBjörn SteinbrinkBrad KingBrendan GraetzBrett CannonBrian AndersonBrian CampbellCarlos GalarzaCarol (Nichols || Goulding)Carol NicholsChris MorganChris WongChristopher ChambersClark GaebelCole ReynoldsColin WaltersConrad KleinespelCorey FarwellDan CallahanDave HusebyDavid ReidDiggory HardyDominic van BerkelDominick AllenDon PetersenDzmitry MalyshauEarl St SauverEduard BurtescuErick TryzelaarFelix S. Klock IIFlorian HahnFlorian HartwigFranziska HinkelmannFuGangqiangGarming SamGeoffrey ThomasGeoffry SongGleb KozyrevGraydon HoareGuillaume GomezHajime MorritaHechHeejong AhnHika HibariyaHuon WilsonIgor StrebezhevIsaac GeJ BaileyJake GouldingJames MillerJames PerryJan AnderssonJan BujakJan-Erik RedigerJannis RedmannJason YeoJohannJohann HofmannJohannes OertelJohn GallagherJohn Van EnkJonathan SJordan HumphreysJoseph CrailJosh TriplettKang SeonghoonKeegan McAllisterKelvin LyKevin BallardKevin ButlerKevin MehallKrzysztof DrewniakLee AronsonLee JefferyLiam MonahanLiigo ZhuangLuke GallagherLuqman AdenManish GoregaokarManuel HoffmannMarin Atanasov NikolovMark MossbergMarvin LöbelMathieu RochetteMathijs van de NesMatt BrubeckMichael AlexanderMichael MaciasMichael ParkMichael RosenbergMichael SproulMichael WoeristerMichael WuMichał CzardybonMickaël SalaünMike BoutinMike SampsonMs2gerNelo OnyiahNicholasNicholas MazzucaNick CameronNick HamannNick PlattNiko MatsakisOakOliver SchneiderP1startPascal HertleifPaul BanksPaul FariaPaul QuintPete HuntPeter MarheinePhil DawesPhilip MunksgaardPiotr CzarneckiPiotr SzotkowskiPoga PoPrzemysław WesołekRalph GilesRaphael SpeyerRemi RampinRicardo MartinsRicho HealeyRob YoungRobin KruppeRobin StockerRory O’KaneRuud van AsseldonkRyan PrichardScott OlsonSean BoweSean McArthurSean Patrick SantosSeo SanghyeonShmuale MarkSimon KernSimon SapinSimonas KazlauskasSindre JohansenSkylerSteve KlabnikSteven AllenSwaroop C HSébastien MarieTamir DubersteinTero HänninenTheo BelaireTheo BelaireThiago CarvalhoThomas JespersenTibor BenkeTim CuthbertsonTincanTing-Yu LinTobias BucherToni CárdenasTshepang LekhonkhobeUlrik SverdrupVadim ChugunovVadim PetrochenkovValerii HioraWangshan LuWei-Ming YangWillWill HipschmanWojciech OgrodowczykXue FuqiaoXuefeng WuYork XiangYoung Wubcooperscritiqjodiwicfendurugareinsgithub-monocultureinrustwetrustjooertkgvklutzykwantamleunggamciumdingernwinpezrobertfossrundrop1sinkuutynopexŁukasz Niemierらいどっと