GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

Rust 语言 2017 路线图半年回顾

2017 年 7 月 11 日

近日,Rust 核心团队成员 Nicholas Matsakis 在 Rust 官方博文上发表了一篇博文,介绍2017 年Rust 路线图上各项计划的进展情况。

学习曲线

Rust 应该有一条较低的学习曲线。Matsakis 指出,让 Rust 更容易学习的最简单方法是改进讲授 Rust 的方法。为此,他们致力于开发一个“Rust”官方图书的全新版本,目前已经完成草稿。该版本以Ownership 为中心,然后扩展到Rust 的其他方面,如错误处理、测试、匹配、模块,等等。此外,他们还致力于一些旨在提升语言工效学的语言改进,其中包括长期的提案,如非词汇生命期 impl Trait,也包括一些新的想法,如最近获得通过的有关 trait 别名的 RFC。

编辑 - 编译 - 调试

他们通过各种方法提升编译器性能。其中一个最简单的方法是 Rust 1.16 发布的cargo check命令,该命令会跳过代码生成,只查找错误。由于代码生成通常占去了 50% 以上的编译时间,所以这在编写新代码的早期阶段非常有用。当然,你最终需要运行代码,为此你需要完整编译。为了加快编译速度,他们在努力改进编译器,实现增量编译,预计下个月可以完成。除此之外,他们还在做着其他优化编译时间的努力,其中最重要的要数 perf.rust-lang.org网站的上线运行。该网站将跟踪每个编译优化 PR 的效果。

IDE

Rust 应该提供一个基本但可靠的 IDE。自去年 RustConf 大会首次推出以来,Rust 语言服务(RLS)增长迅速。现在,它可以支持大多数基本的 IDE 操作,如“转到定义”、“查找所有使用”以及代码补全。目前,他们的重点是简化 RLS 的安装(如通过rustup 直接安装)以及修复Bug。如果想试用RLS,那么最简单的方法是使用 VSCode 插件

Crates 获取

随着 crates.io 生态系统规模的扩大,crates.io 网站提供的查找和分类标准已经无法帮助用户找到他们需要的 crates。为此,他们增加了分类和若干徽章,crate 作者可以将它们添加到自己的crates 上。这可以帮助人们查找特定用途的crates,并轻松判断它们的质量。此外,RFC 1824 制定了一个改进crates.io 默认分类的计划,并提供额外的信息帮助人们选择一个crate。下文会介绍到的“食谱”会提供一种以任务为中心发现crates 的方法。

服务器开发

Rust 应该具备编写健壮的服务器的能力。 Futures crate 和 Tokio 项目将继续研究异步 I/O 生态系统,这在 Hyper Linkerd-tcp 中有大量的运用。此外,像 Rocket 这样的项目还在继续改善 Rust-on-the-server 工效学。目前,最大的障碍也许是 async/await 语法、更好的 Tokio/futures 文档及为生态系统提供一个可靠的 HTTP 基础。他们计划在年底的 Rust 每夜构建通道上提供 async/await 语法,并在 2018 年初提供稳定版本。

1 级 crates

Rust 应该有用于基本任务的 1 级 crates。 Libz Blitz 是一项系统性工作,其目的是为了找出 Rust 生态系统中使用最广泛的 crates,确保它们的完备性和质量都达到同一个水平。

构建系统集成

Rust 应该很容易集成到大型构建系统中。在这一方面,他们的主要工作是进一步明确面临的挑战,并有针对性地制定具体的提案,其中包括:

他们希望下半年可以加快推进这方面的工作。

社区指导

Rust 应该在各个层面提供指导。RustBridge 旨在向技术经验不足的人提供一个友好、有趣的学习环境,并向 Rust 新手提供优秀的课程。相关资料已经经过多次修订,将来还会继续完善。他们会在 RustConf 大会前一天举行RustBridge 研讨会。他们还启动了 Increasing Rust’s Reach ,倾听技术经验不足人群的需求,让更多的人可以学习使用 Rust。

此外,各种 Rust 团队也都采取了不同的措施,鼓励人们参与 Rust 项目:

嵌入式 Rust

嵌入式 Rust 生态系统继续发展。近日,一个面向 Cortex-M 微控制器的裸机并发框架已经开发了出来。面向 Cortex-M 微控制器的嵌入式操作系统 Tock 也在向着纯 Rust 用户态应用程序发展。

在编译器方面,经过社区的努力,MSP430 架构支持得到了改善,而 AVR 架构支持工作也在进行之中。

另外,社区将创建一个硬件抽象层,作为构建嵌入式 crate 生态系统的基础。这项工作已经开始。

与其他语言的集成

  • C 与 C++: bindgen可以自动将 C 和 C++ 集成进 Rust 代码库。bindgen以头文件作为输入,并输出外部函数和类型声明,这样,就可以实现以最小的代码在 Rust 中使用 C/C++ 程序库。bindgen已经成为 Stylo 项目的关键基础设施。要想在项目里使用bindgen,请查看 bindgen用户指南
  • 其他语言和环境:一些更高级的语言面临自己的集成挑战,这通常涉及与外部运行时系统的协同。下面是部分主要相关项目的简单介绍:
    • Ruby: Helix 项目已经开始使用 Rust 编写 Ruby 扩展;
    • Node.js: Neon 同样也使用 Rust 编写 Node.js 模块;
    • GNOME 对象系统:将 Rust 和 GNOME 核心开发人员结对,为 Rust 和 GObject 系统集成奠定了基础;
    • Rust FFI Omnibus :为在各种语言中调用 Rust 提供指导。

总而言之,在过去的 6 个月中,Rust 世界一片忙碌。感兴趣的读者可以跟踪问题列表,了解进展及做出贡献。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 7 月 11 日 19:003282
用户头像

发布了 1008 篇内容, 共 317.0 次阅读, 收获喜欢 287 次。

关注

评论

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

【有奖调研】中国人工智能开发者调研

百度大脑

简化业务代码开发:看Lambda表达式如何将代码封装为数据

华为云开发者社区

函数式接口 数据 代码 函数 lambad

架构师 3 期 3 班 -week8- 作业

zbest

作业 week8

2020中国ToB独角兽:估值逆势起飞,寡头效应加剧

ToB行业头条

iOS音视频--视频合集

程序员 音视频 OpenGL ES GPUImage Metal

使用Apollo升级一下yml文件管理和发布

Sky彬

springboo

源中瑞情报智能研判预警平台开发,合成作战系统建设方案

WX13823153201

QA为什么转换角色

BY林子

软件测试 QA 职业发展

WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba

阿里云视频云

WebRTC

阿里架构师经验分享!Android面试知识点总结宝典助你通关!顺利通过阿里Android岗面试

欢喜学安卓

android 程序员 面试 移动开发

阿里架构师深入讲解Android开发!教你一种更清晰的Android架构!BAT大厂面试总结

欢喜学安卓

android 程序员 面试 移动开发

SpringCloud 从入门到精通 11---Nacos负载均衡

Felix

dubbo-go 白话文 | 从零搭建 dubbogo 和 dubbo 的简单用例

阿里巴巴云原生

Java 云原生 dubbo 中间件 dubbogo

从根上理解高性能、高并发(五):深入操作系统,理解高并发中的协程

JackJiang

网络编程 高并发 协程 高性能 即时通讯

年末得到美团/京东/蚂蚁金服Java岗内推,分享我的6点面试经验

Java成神之路

Java 程序员 架构 面试 编程语言

作业1

瑾瑾呀

redis持久化怎么选?成年人从来不做选择...

moon聊技术

Soul网关源码阅读番外篇(一) HTTP参数请求错误

Java 源码阅读 网关

阿里巴巴2021年最新开源十亿级Java高并发系统设计手册

Java架构追梦

Java 阿里巴巴 架构 并发 系统架构设计手册

合约跟单交易软件系统开发|合约跟单交易APP开发

开發I852946OIIO

系统开发

TarsBenchmark | 服务性能压测利器

TARS基金会

微服务 压力测试 TARS

热情空前,家长纷纷变身“寒假规划师”,如何抓住这波热潮?

ZEGO即构

AI 在线教育 在线课堂

Java 程序经验小结:返回零长度的数组或集合,而不是null

后台技术汇

28天写作

《我想进大厂》之分布式事务篇

艾小仙

Java 面试 后端

是找茬?还是装B?阿里面试每轮必问的“Spring Boot”意义何在?

比伯

Java 编程 架构 面试 计算机

盘点2020 | 百度AI的2020

百度大脑

盘点2020

IM即时通讯实现的原理

v16629866266

我所认为的产品经理能力模型

day day up

惊喜来袭!253页全彩免费电子书《Python 编程参考》正式上线发布

Python编程参考官方账号

Python go redis 程序设计

案例加源码:万字长文带你彻底搞懂MySQL的索引优化

程序员小毕

MySQL sql 源码 性能优化 索引

COCO聊天挖矿系统开发|COCO聊天挖矿软件APP开发

开發I852946OIIO

系统开发

Rust语言2017路线图半年回顾-InfoQ