Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

展望 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:474947
用户头像

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

关注

评论

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

布隆过滤器:原理与应用

Java随想录

Java redis

ES 关于 remote_cluster 的一记小坑

极限实验室

easysearch

快速切换软件One Switch 激活版中文

胖墩儿不胖y

Mac软件 切换工具 切换软件 快速切换软件

ps滤镜Neural Filters完整版 for Mac 无需登陆Adobe Id

南屿

PS滤镜插件 Neural Filters滤镜 神经滤镜Neural Filters photoshop神经滤镜 Neural Filters下载

国庆假期,我用Flutter写了个我自己都玩不赢的五子棋AI🤣

编程的平行世界

flutter 游戏

稳定币发行服务:为波动的市场带来稳定

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

火山引擎ByteHouse:TB级数据下,如何实现高效、稳定的数据导入

字节跳动数据平台

大数据 数据仓库 云原生 企业号9月PK榜

[大厂实践] 无停机迁移大规模关键流量(下)

俞凡

架构 netflix 大厂实践

如何使用Shardingsphere Proxy分库分表

Kevin_913

数据库 分库分表 中间件 ShardingSphere-Proxy

实测 亚马逊 AI 编程助手 Amazon CodeWhisperer(全网最全)

亚马逊云科技 (Amazon Web Services)

人工智能 存储 亚马逊云科技

打造完美RAW文件处理流程!Adobe Camera Raw插件功能详解!

南屿

Camera Raw激活版 CameraRaw mac版 raw图像 Camera Raw 15

Ae视频特效工具:After Effects 2023激活中文最新版

胖墩儿不胖y

Mac软件 AE 视频特效软件

秋招还没Offer怎么办?

王磊

Java 面试

文心一言 VS 讯飞星火 VS chatgpt (106)-- 算法导论10.1 4题

福大大架构师每日一题

福大大架构师每日一题

深度学习模型部署与优化:策略与实践;L40S与A100、H100的对比分析

GPU算力

功能强大的ftp工具 Viper FTP 免激活最新版

胖墩儿不胖y

ftp Mac软件 ftp传输

深入解析MySQL双写缓冲区

Java随想录

Java MySQL

AE镜头光晕插件Optical Flares汉化版 optical flares插件安装方法(含注册码)

南屿

AE镜头光晕插件 Optical Flares注册码 Optical Flares插件安装

Delicious Retouch 5 (DR 5)汉化激活版 高效解决人像磨皮!

南屿

DR5白金版 PS一键磨皮插件 Delicious Retouch 5 DR5汉化版 Photoshop修图插件

golang面试基础-sync.pool

Quincy

Go golang 面试 基础

逻辑拆解基本功:解锁复杂问题的钥匙

豆哥

思维模型 逻辑 MECE 拆解

精进别学N类法:智力活动对象的MECE细分

豆哥

思维模型 MECE 逻辑拆解

十分钟冥想,与自我深入对话,发现更多的可能性。

叶小鍵

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