写点什么

Rust 语言 2017 路线图半年回顾

  • 2017 年 7 月 11 日
  • 本文字数:2290 字

    阅读完需:约 8 分钟

近日,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:003465
用户头像

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

关注

评论

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

常见加密方式及Python实现

行者AI

加密

买基金赔掉一条裤衩之后,我又回来更文了

Java_若依框架教程

投资 理财 基金 茅台

未来赚钱的行业大预测

ES_her0

28天写作

【得物技术】Web Components 初探

得物技术

Web API 得物技术 Web Component 组件

区块链打造“红娘链”,婚姻上链让爱更“牢固”

CECBC

婚姻

区块链与数字货币的发展到底有什么意义

CECBC

金融

云主机配置微信公众号后台全记录

小jack

LeetCode题解:120. 三角形最小路径和,动态规划(从上到下),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

元宵 | TcaplusDB君邀您来猜灯谜!

TcaplusDB

数据库 TcaplusDB Tcaplus

正月十五吃汤圆CountDownLatch

叫练

AQS join 共享锁 CountDownLatch 多线程高并发

第五周作业:用例流程图

克比

中核携手北京天源迪科完成电子商城二期项目,开创集团数字化采购新局面

DT极客

我看JAVA 之 AbstractStringBuilder & StringBuffer & StringBuilder

awen

Java 源码 jdk string

Java中的String类型到底占用多大的内存空间?

冰河

Java 性能优化 string 高并发 内存空间

如何通过事务消息保障抢购业务的分布式一致性?

阿里巴巴中间件

阿里云 云原生 电商 消息队列 分布式柔性事务‘’

341 万考生,除了图书馆他们去了这样一个地方

IoT云工坊

小程序 人工智能 物联网 云平台 24小时无人自习室

产品经理第五周:如何绘制流程图?

克比

数字化转型提速,DataPipeline助力中石油产业大数据实时共享能力再提升

DataPipeline数见科技

数据融合

Kafka 中所谓的 ‘零拷贝’ 技术到底是什么?

码农架构

Java kafka 程序员 架构 微服务

医者,智也:智慧医院破茧时,翻开转型新一页

脑极体

攀爬天梯的手机厂商,能从LG的滑落中学到什么?

脑极体

MyCat集成MySQL完成数据库集群建设

831143

Java MySQL mycat

技术干货 | mPaaS 小程序高玩带你起飞:客户端预置小程序无视网络质量

蚂蚁集团移动开发平台 mPaaS

小程序 网络环境 mPaaS

聊聊前端日志库在SaaS产品中的应用与设计

元三

大前端 SaaS

分页问题-Offset-based Pagination和Cursor-based Pagination

诸葛小猿

分页 Offset-based Pagination Cursor-based Pagination

单例设计模式

桃子

无人机蜂群

冠冠

微信公众平台-渠道二维码开发

Geek_247dae

区块链能否一劳永逸地结束痛苦的选票争端?

CECBC

区块链

TcaplusDB服务体系揭秘

TcaplusDB

TcaplusDB Tcaplus

Docker安装

Sakura

Docker

Rust语言2017路线图半年回顾_语言 & 开发_谢丽_InfoQ精选文章