写点什么

展望 2016 年的 Rust 语言

  • 2015-08-19
  • 本文字数:2178 字

    阅读完需:约 7 分钟

2006 年,编程语言工程师 Graydon Hoare 利用业余时间启动了 Rust 语言项目。该项目充分借鉴了 C/C++/Java/Python 等语言的经验,试图在保持良好性能的同时,克服以往编程语言所存在的问题。其最大的特点在于保持较高的运行效率、深入的底层控制和广泛应用范围的同时,解决了传统 C 语言和 C++ 语言中的内存安全问题。2009 年, Mozilla 接手 Rust 项目,创建了以 Graydon 为首的专业全职开发团队,并且开放了该项目的源代码。2012 年 1 月,第一个面向公众的预览版本——v0.1 发布。经历了大刀阔斧的 10 年发展,Rust 在 2015 年 5 月份正式发布 1.0 版本。z 之后,Rust 开始遵守 SemVer 2.0 规范,进入稳步发展的阶段。那么,作为一个正在崛起的语言,Rust 在 2016 年将会向何处发展呢?

目前,Rust 以其无虚拟机、无垃圾收集器、无运行时、无空指针 / 野指针 / 内存越界 / 缓冲区溢出 / 段错误、无数据竞争等特点已经吸引了广大开发人员的广泛关注。但是,作为一门新兴的语言,Rust 仍然有很多地方需要完善。据 Rust 核心开发团队透露,Rust 在 2016 年的发展主要包括加大在框架上的投入、完善关键特性和扩展应用领域等三个方向。

首先,在加大在框架上的投入方向,Rust 团队准备在 Crater 工具、增量编译和 IDE 集成三个方面着手开始。作为测试编译器的工具, Crater 目前已经成为 Rust 社区不可或缺的工具。它能够有效发现编译器中存在的问题。此外,Rust 开发团队还经常使用 Crater 来比较稳定版与开发版的不同以及评估不同改变所带来的影响。对于如此重要的工具,Rust 团队未来将会扩展其对 Linux 外其他平台的覆盖度,使得 Crater 更简单易用,并包含除 crates.io 以外其他源的代码。而且,该团队还计划制作一个适用于库作者的版本(使得库的变化对下游代码的影响可以很容易被观察到)。在增量编译方面,Rust 才刚刚起步。之前,Rust 编译器会把所有的代码作为输入,经过类型检查后发送给 LLVM 进行优化。这种方式在带来深度优化的同时,也使得每次编译都非常耗时,加大了代码调试的难度。未来,Rust 团队将在支持增量编译方面努力。而且,增量编译工作还包括了重新构造编译器,来引进一种新的中间层表示—— MIR 。MIR 是一种更加简单和底层的 Rust 代码形式,能够使得 Rust 编译器更加简单。最后,Rust 团队还试图扩展 Rust 编译器,使其可以与 IDE 或者其他工具更深入的集成。

完善关键特性方向包括了标准化、改善借用检查器(Borrow Checker)以及完善插件稳定性三个方面。在 Rust 语言设计之初,其试图试图实现的目标就包括用户不为不使用的东西付费和用户所使用的东西肯定是最好的这两个方面。目前,Rust 1.0 已经实现了第一个目标。但第二个目标还未实现。为此,Rust 团队准备在标准化方面进行努力。标准化就是允许用户在有需要时提供多个、相互重叠的 trait 实现,从而使得每个实现都有更加专业的应用范围。此外,标准化还能改善代码的重用性。作为某种意义上 Rust 的核心,借用检查器通过抓取 use-after-free 类似的问题保证了编译器在没有垃圾收集器情况下的内存安全。但是,目前的借用检查器偶尔还存在误检测的情况。Rust 团队计划通过重构借用检查器,使其能够以细粒度范围(移动到 MIR 所移动的一步)查看代码,从而解决该问题。最后,目前 Rust 的很多 crate 都使用了高度不稳定的编译器插件,非常容器引起编译器出现问题。Rust 团队计划提出一个新的插件设计框架,使其更加鲁棒,并能够提供内置纯净的宏扩展支持。

最后,扩展 Rust 的应用领域方向包括交叉编译、安装 Cargo 以及追踪钩 (tracing
hook) 三个方面。尽管目前的 Rust 能够支持交叉编译,但该过程需要大量的人工参与。Rust 团队正试图自动化交叉编译的流程,使得用户只需要下载一个对应版本的预编译 libstd 库,然后执行编译 / 安装即可。此外,Cargo 缺乏安装可执行文件的方法。Rust 团队希望能够使用 cargo install 这样的命令,来实现 Linux 中 make install 的功能。在追踪钩方面,Rust 团队深谋远虑。使用 Rust 一个最高级的方法就是把 Rust 代码嵌入到用 Ruby 或 Python 等高级语言编写的系统中。这种嵌入法一般通过为 Rust 代码提供一个 C 语言的 API 来完成。这种方法在目标平台运行传统 GC 等这种 C 语言友好的内存管理机制时十分高效。然而,与一个使用更高级 GC 的环境进行集成将会十分困难。与这些引擎进行集成需要非常小心进行代码编写工作。否则,非常小的错误都可能导致系统崩溃。为了把 Rust 引入到更高级 GC 的环境中,Rust 团队计划扩展编译器的能力,使其能够产生追踪钩。这些钩子就可以被 GC 用来搜索堆栈和识别 root,大大简化与高级 VM 集成代码的编写工作。

从以上分析可以看出,Rust 在 2016 年仍将会有长足的发展。而且,从 Rust 语言的首届会议 RustCamp 2015 来看,Rust 社区未来也会更加活跃。目前,Rust 已经应用到 OpenDNS 和 Skylight 等生产环境,以及浏览器引擎 Servo 和 Rust 编译器等项目。Rust1.0 版本代码贡献者庄晓立在一次访谈中表示,Rust 未来一定会继续沿着“确保内存安全、无运行开销、高效实用”的既定方向持续发展。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-08-19 08:474713
用户头像

发布了 268 篇内容, 共 128.0 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

探讨React Native与小程序结合的技术架构

xuyinyin

1688代采系统到底牛在哪?揭秘核心功能和技术硬骨头

代码忍者

非凸科技走进北大汇丰,揭秘数智交易前沿技术与人才密码

非凸科技

天润云2024财报:AI收入增长72.5%,营收毛利再创新高!

天润融通

CAD中对象的等分操作方法

极客天地

从Curl到文档发布:Apipost让接口调试与文档协同更优雅

数据追梦人

布鲁可第3届BFC创作赛第2季度「破茧赛季」正式启幕,赛事体系迎来新升级

财见

SpringAI用嵌入模型操作向量数据库!

王磊

CAD中绘制带宽度属性的多段线方法

极客天地

电机控制的数字化升级:基于DSP和FPGA的仿真与实现

DevOps和数字孪生

SpringAI用嵌入模型操作向量数据库!

伤感汤姆布利柏

推荐 5 个 火火火火 的CMS开源.Net项目

不在线第一只蜗牛

.net 开源

新闻速递丨Altair与JetZero达成战略合作,共拓翼身融合飞机技术新纪元

Altair RapidMiner

仿真 hyperworks 航空航天 CFD FlightStream

OASA 厂商三未信安完成与 Anolis OS 及其衍生版适配,密码卡性能与稳定性获验证

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥生态

【征程 6】工具链 VP 示例为什么能运行

地平线开发者

自动驾驶 算法工具链 地平线征程6 底层软件

轻帆云智能ITSM应用最佳实践,助力IT共享服务中心高效运营

云智慧AIOps社区

通义灵码助力技术求职:如何成为笔试面试冲刺的“超级助手”

阿里巴巴云原生

阿里云 云原生

BSO收购InterCloud,强化高性能云连接解决方案

财见

AI思维导图生成器哪个好?5个导图软件大盘点!

职场工具箱

思维导图 办公软件 AI软件 AIGC 思维导图软件

Mac电脑必备文件管理器推荐,MacBook文件资源管理软件哪家强?

阿拉灯神丁

MacBook CleanMyMac Mac软件 文件管理软件 Path Finder

什么是DNS劫持?DNS劫持如何预防和应对?(国科云)

国科云

通义灵码助力技术求职:如何成为笔试面试冲刺的“超级助手”

阿里云云效

阿里云 云原生

国产化替代是个伪命题?被误解多年的开源软件,如今怎么样了

禅道项目管理

信创 企业安全 开源软件 项目管理软件 国产化替代

2025年3月文章一览

codists

Python

SITA收购CCM,通过将旅游技术与高端设计相结合

财见

SysOM AI 可观测体系:零侵入、低开销,让系统透明化

OpenAnolis小助手

AI 运维 操作系统 龙蜥社区 AI可观测

携手龙蜥,Alinux 最佳 AI 镜像服务商公布,堡塔、飞致云等 6 家企业实力登榜

OpenAnolis小助手

AI 操作系统 龙蜥社区 Alibaba Cloud Linux

MindSpeed细粒度DualPipe通信掩盖,实现AllToAll和EP通信双掩盖,内存优化40%

科技热闻

如何编写更好的单元测试

俞凡

最佳实践 软件测试

ShareSDK全面适配鸿蒙NEXT

MobTech袤博科技

sharesdk mobtech 鸿蒙 os

数字货币交易所开发中的常见问题与解决方案

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

展望2016年的Rust语言_语言 & 开发_张天雷_InfoQ精选文章