Rust 的 2016 年规划,1.0 之后会如何发展?

这周以来 Rust1.0 发布已经三个月了。随着开始向着下一个 1.0 版本迈进,我们很乐意地回顾 1.0 版本,并且讨论一下明年 Rust 的发展。

关于1.0版本

Rust 1.0 专注于稳定性,社区性和明确性。

稳定性,我们已经在先前的说明文档中对于发布渠道和稳定化过程作了不少的讨论。

社区性 这已经成为 Rust 语言的强项之一。 但在 1.0 版本发布之前,我们介绍并改善了 RFC 过程,最后与子团队管理 RFC 过程的每个特别的部分。社区规模的讨论对于高品质 1.0 版本的发布必不可少。

在 1.0版 本之前为了达到明确性而所作出的所有这些改善意味着:
  1. 不带有垃圾回收机制的内存安全
  2. 不存在数据竞争的并发性
  3. 不需要开销的提取
  4. 不存在停滞的稳定性

总之,Rust 是让人兴奋的,因为它是允许肆意发挥而没有任何担心,并且在你从来没接触过的环境下做这些。放下 Ruby 或是 python 这些语言,让你第一次进军系统编程。

这是 Rust 1.0,但是下一个版本将会带来什么?

我们从这里走向哪儿

在和这些核心团队、早期的生产用户和广泛的社区的多次讨论之后,我们已经认识到了许多能提高的地方,并将在下一步做出一些修改,在以下三个方面:

在基础方面加倍;

在关键特征反面零缺陷;

扩大使用 Rust 的地方。

让我们对这三个类别中庞大的计划拭目以待。

加倍下注: 基础设施投资

Crater

对于 Rust,基础的稳定性承诺是能在版本间“轻而易举地”升级。为了兑现这个承诺,我们需要检测引发代码在编译中停止工作的 bug。自然地,编译器有它自己的大型测试套件,但是那仅仅是代码中的小片段,它就在那,“自然而然地存在在那”。Crater 是一个工具,目标是通过 crates.io 结束测试编译所有能找到的包,并让我们更加清楚地了解代码停止编译都是否是在最近发生的。

Crater 很快就变成为一个不可或缺的工具。我们经常比较最近的稳定版本和其他版本,并且我们使用crater 去检查进行中的分支和评估改变带来的影响。

有趣地是,我们常常发现代码停止编译的时候,不是因为在编译中存在 bug,而是因为我们修复了一个bug,代码对老的行为产生了依赖。在这种情况下,使用 crater 能帮助我们改进体验,它会建议我们在警告中逐步缓慢地修复。

在未来的一年,我们计划采用以下方式去改进 crater:

将范围扩展到 Linux 之外的其他平台,并可以在那些平台上运行测试套件和类库。

让使用更方便: 放弃 @crater: test 注释,试验 PR。

制作一个版本工具,让它的作者可以看到他们改的代码对下游代码产生的影响。 

除了crates.io,可以从其他地方取得代码。

增量编译

Rust 原本就有一个“crate-wide”编译模型。这意味着 Rust 编译器能一次性读取在你的 crate 中的所有源文件。先进行语法检查然后交由 LLVM 进行优化。这种方法对进行深度优化是有好处的,因为它能够让 LLVM 完全进入整个代码集,使得内联更强,分析更精确等等。然而这可能意味着这种转变很低:甚至只要你编辑了一个函数,我们都会重新对所有代码进行编译。当项目变得庞大时,这就会造成负担。

增量编译的目标是,利用 Rust 编译器具备立即保存副产品并使用这些副产品的机制来改变这一不利的状况。用这种方法,当你在调试一个问题或者调整代码路径时,你只要重新编译你改变了的部分,这样将使得“编辑-编译-测试”循环要快得多。

这个工程的一部分在于重构这个编译器以介绍一个新的中间代表性编译器,我们称之为 MIR。MIR 是一个更为简单的和从 Rust 更为复杂特性的代码中凝练出的更底层的编译器,这使得这个编译器的剩余部分更加简单。这是语言改变的重要使能器,如同非词汇寿命期那样(下一部分会谈到)。

IDE整合

一流 IDE 的支持能使得 Rust 更加富有成效。直到现在开拓型的工程如 Racer,Visual Rust 和 Rust DT 都在没有编译器的支持下进行大部分的工作。我们计划延展这个编译器以请允许和 IDE 及其它工具更深层次的整合,这个计划起初关注两个 IDE,并从那里发展起来。

聚焦: 缩小主要功能的差距


Specialization

按照Stroustrup说的,零成本(zero-cost)的抽象理念可以拆解成两个目标:

• 不会用到的,就不需要为其付出。

•需要用到的,务必做到最好。


Rust 1.0 基本上达到了第一个目标,包括语言功能和标准库两方面。但是还没有完全实现第二个目标。例如下面的trait:

pub trait Extend<A> {
    fn extend<T>(&mut self, iterable: T) where T: IntoIterator<Item=A>;
}

Extend 这个trait很好的对任意类型的迭代器插入一个 collection 进行了抽象。不过对于目前的trait来说,这也意味着每个 collection 只能提供一种可以支持所有迭代器类型的实现,也就是循环的调用.next()。其实有时你可能会有更好的办法,例如只需要调用 memcpy。

为了弥补这个差距,我们提出了一个 specialization,允许你提供多重的,叠加的trait实现,只要一个比另一个更具体。除了为 Rust 提供更完备的零成本抽象化需要的工具之外,specialization 还包含了代码重用的改进。详情参考这个 the RFC。

Borrow checker 的改进


某种意义 上borrow checker 是 Rust 的核心;它是编译器的一部分,通过截获“访问已释放内存”或者类似的 bug,能够让我们在不用垃圾收集的情况下对内存进行安全 的存取。不过有些不是 bug 的情况,borrower checker 偶尔“截获”到,例如下面的例子:

match map.find(&key) {
    Some(...) => { ... }
    None => {
        map.insert(key, new_value);
    }
}

上面的代码片段一点问题也没有,不过因为 map 变量是从 match 借用(borrow)的,当 insert 改变 map 的时候,目前的 borrow checker 会认为有问题。我们计划很快解决这个问题,办法是通过重构 borrow checker,在更细粒度的(无词法的)区间去检查代码 – 在迁移到之前提到的MIR之后,这一步也成为可能。

插件

如果你有兴趣使用 Nightly 的 channel,目前你可以为 Rust 做很多确实很优雅的事情 。例如,regex crate 提供的宏可以在编译时把正则表达式转换成对应的机器码。再如 rust-postgres-macros crate,可以在编译时检查 SQL 语句的语法。这些 crate 用到了一个编译器的插件系统,这个插件系统很不稳定,并且暴露出太多的编译器内部细节。我们计划提出一个新的插件系统的设计,这个插件系统会更稳定,并且内置了对安全的宏扩展的支持。

Rust 应用领域分支:把 Rust 带到新的领域。

交叉编译:

虽然目前的 Rust 能够支持交叉编译,但该过程需要大量的人工参与配置。我们已启动交叉编译按钮。编译 Rust 代码到另一目标应该是足够简单:

1:只需要下载一个目标对应版本的预编译 libstd 库

2:执行 cargo build --target=foo

3:没有第 3 步

Cargo install

Cargo 和 crates.io 已经是分发 Rust 库很棒的工具。但是它缺乏安装可执行文件的方法。 RFC120 0https://github.com/rust-lang/rfcs/pull/1200 描述了一个简单的选项支持 Cargo,就是 cargo install 命令。很像常规的 make install,cargo install 将安装执行路径到你的环境变量,使你能运行它。这可以作为一个简单的分发渠道,对于编写工具的 Rust 开发者(那些可能熟悉运行 cargo)是特别有用的。

跟踪挂钩

使用 Rust 的一个最为有前景的方法是把像 Ruby 或者 Python 那样的高级语言写成的 Rust 代码“嵌入”到系统中去。这一嵌入式通常是给予 Rust 代码一个 C 语言的 API 接口方式进行的,并且当其目标是运行一个“C友好型”的内存管理规划,像引用计数或者保守的 GC 那样,工作进来是相当合理的。

在使用更加先进的 GC 环境上进行整合可能相当具有挑战性。或许最突出的例子是像 V8 (使用 node.js)的 JavaScript 引擎和 SpiderMonkey (使用 Firefox 和 Servo)。整合这些引擎需要非常细心的代码以保证所有的目标都被正确地植入了;一点点的错误将导致崩溃。这正是 Rust 的几种内存管理的问题所将要予以排除的。

为了把 Rust 引入到更高级 GC 的环境中,Rust 团队计划扩展编译器的能力,使其能够产生追踪钩。这些钩子就可以被 GC 用来搜索堆栈和识别 root,大大简化与高级 VM 集成代码的编写工作。当然,设计将尊重锈病的“你用什么则支付什么”的政策,使得没有 GC 集成的代码不受影响。

结语:RustCamp(Rust 营地)2015 年和 2016 年的 Rust 社区

我们最近召开了有 160人 参加的第一届 RustCamp 大会。看到如此多的 Rust 社区成员令人惊讶,从我们的火热线上空间氛围转化到友好的面对面活动。大会当天从 Nicholas Matsakis 和 Aaron Turon 核心团队对我们未来展望开始。演讲幻灯片在此http://rustcamp.com/schedule.html(连同其他几个演讲会谈)。更新:现在你也可以在这 http://confreaks.tv/events/rustcamp2015 看到演讲内容!

如今有一个确定的主题:Rust 的最大的潜力在于解放新一代的系统编程人员。并且这并不仅仅是语言本身,而只是因为这样的一个社区文化,就如他们所说的:“难道不清楚堆和栈之间的区别吗?不要担心 Rust 是一个最好的方法去学习它,而且我愿意展示给你怎样去使用 Rust。”

我们在上文中提出的技术工作的大纲对我们在 2016 年的版本是很重要的,但是在我们的审核和社区团队方面的工作也一样重要,还有所有那些不辞辛劳和满腔热情地欢迎着来自不同背景的人加入到 Rust 社区中人的工作同样对这个版本很重要。因此,我们最大的愿望是,在 Rust 的下一个年份随着它的社区的成长,它将继续保有着它现在所具有的海纳百川的精神。

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-10-23 03:33:20

Rust 的 2016 年规划,1.0 之后会如何发展?的相关文章

2016大数据企业排行榜揭示中国数据发展

文章讲的是2016大数据企业排行榜揭示中国数据发展,7月14日,首席数据官联盟在京发布了2016年<中国大数据企业排行榜>.据悉,本次排行榜由北京大学电子政务研究院.中国新一代IT产业推进联盟共同指导,由首席数据官联盟专家组依据大数据企业评价指标体系对国内大数据企业进行综合评定而成. ▲现场出席专家以及企业代表合影 据了解,此次<中国大数据企业排行榜>得到业界的大力支持,发布会由中华网.中关村智能硬件产业联盟.北京优智活孵化器协办.机械工业信息中心处长白涌如.北京大学电子政务研究院

《中国人工智能学会通讯》——2.38 2016 年值得期待的 5 大机器人发展 趋势

2.38 2016 年值得期待的 5 大机器人发展 趋势 中国机器人.快递无人机以及互相学习的机器会是 2016 年的发展大趋势.这一年会不会成为无人机送包裹的第一年,或者说成为你在工作或家里拥有一个机器人的第一年呢?我们在 2015 年看到机器人和人工智能方面的巨大进展.而在 2016 年我们会看到以下这些. 1 . 中国的机器人变革 世界最大的经济体中国已经开始着手尝试在工厂中使用先进的制造型机器人了.中国政府希望在全球工人薪资上涨.制造业变得更有效率.技术更为先进的情况下,这一点能够帮助维

Web2.0肯定会蓬勃发展

今年很多的企业成功融资,也有企业仍处在迷惘之中.不过在宏观经济保持平稳快速发展下,2008年互联网企业会呈现一个良好的趋势,而Myspace所处的Web2.0肯定会蓬勃发展,发展速度也会越来越快.今年可能会有很多的企业抓住机会,建立自己的关键用户群,成为一个可信赖并具有扩展性的社区,不再是纯粹性的简单的娱乐.交流,而是真正把自己的生活建在社区中. 在中国走向国际化的大背景下,MySpace自身的国际化特征是我们很大的机遇.尤其借2008年奥运的东风,许多外国朋友会对中国很感兴趣,MyS-pace

工信部:大数据十三五规划年内将出台 助信息安全发展

11月28日从工信部获悉,11月25日,大数据与信息安全企业家峰会在北京召开.工信部信息化和软件服务业司司长谢少锋出席并讲话.谢少锋指出,信软司牵头组织编制的<大数据产业发展规划(2016-2020年)>也将在年内出台. 谢少锋指出,随着信息技术的发展,数据已成为国家基础性战略资源,是拉动技术进步和产业发展的强大引擎,也必将催生数字经济时代的到来.党中央国务院高度重视大数据在经济社会发展中的作用,党的十八届五中全会提出"实施国家大数据战略",2015年9月,国务院正式发布&

2016年容器虚拟化将是数据中心发展的必然趋势吗?

很难预测2016年数据中心最重大的事件是什么.大数据?超级融合?混合云?我认为今年容器将会以更早.更快速的方式占领数据中心. 与其他技术比如大数据需要规划愿景以及提前投资不同,容器是在应用封装.部署以及托管之后顺其自然的下一个步骤,理念或愿景不需要做出重大调整.在容器内开发并部署应用要比构建一个虚拟设备更加快速.简单.容器化架构还具有令人瞩目的运维与经济效益,许可成本更低或者免费.物理资源使用效率更高.扩展性更好.服务可靠性更高.展望未来,容器虚拟化将帮助组织更好地利用混合云或跨越多云环境. 最

2016年下半年10个重要的可视化发展

为了标记可视化领域每一年年中及年末的发展里程碑,我对该领域内最近6个月的可视化作品进行了回顾,并编制了一些最重要的开发作品集.这些是主要的项目.事件.新网站发展趋势,域内名人乃至一些宏观的观察,它们或者是起到有助于该领域内进一步发展的重要作用而让我感受到冲击,或者是那些我就是非常喜欢的东西.下面就是我所编制的作品全集. 在今年早些时候,我发布了2016上半年的作品集(这里是文摘早先发布的文章),现在我想回顾的是2016下半年的作品.读者您认为今年最重要的可视化发展是哪些呢?我期待着听取您的意见.

2016年安捷伦科技将重点发展六大领域

2016年1月26日, 安捷伦科技有限公司(以下简称:安捷伦科技)在北京什刹海之源举办了"安捷伦科技2016新春媒体联谊会".安捷伦科技大中华区化学分析市场部经理祝立群.食品市场经理陈玉红和安捷伦科技中国有限公司公共事务部总监卢开宇等安捷伦中国区团队部分成员出席了此次宴会.仪器信息网等数十家媒体应邀参加了此次宴会. 安捷伦科技大中华区化学分析市场部经理祝立群 祝立群首先回顾了过去一年影响安捷伦科技发展的一些重要市场事件,如2015年3月安捷伦科技成为分析仪器行业首家受邀出席博鳌论坛的企

2016“长风论坛”:3D打印技术的发展 从人才培养的四方面说起

近几年3D打印技术在传统教学中已悄然兴起,在工程设计.历史.车辆工程等专业得到了不同程度的应用.但尽管这样,3D打印技术在国内市场的发展过程中也有许多不容忽视的困境.教学平台的缺乏.师资力量的薄弱等都制约了技术的更快普及和发展. 为提高3D打印人才培养质量,实现工业转型升级过程中3D打印人才需求,11月27日,工信部人才交流中心与中国盐城市盐都区委.盐都区人民政府共同举办的"长风论坛"在江苏省盐城市召开,共同探讨时下3D打印在教学.人才培养等方面的问题. 人社部直属中国人事科学院研究员

2016年上半年光伏企业沉浮录

眨眼间2016年已经过去大半,这半年以来光伏行业不但发展迅速,而且实现了全产业链的爆发.而由于抢装潮的出现,对于光伏企业来说,这是风和日丽的半年.2016年开始到现在,大部分的光伏企业都取得了良好的发展.但是光伏市场毕竟是一个大舞台,既然有企业高歌猛进,当然也会有企业深陷低谷.今天就让我们来看看,在2016年究竟是哪些光伏企业扭亏为盈,前景向好?又有哪些企业由于命运多舛而苦苦挣扎? 重组风波:英利能否东山再起 即使头顶着光伏组件出货量全球第一的光环,背负巨大产能过剩危机的光伏巨头英利依然逃不过连