出品
开源中国
文
Travis
在Rust语言不断发展的过程中,自然而然需要为这个语言的下一步发展方向制定计划。因此Rust语言设计团队(LangTeam)近日在官方博客中公布了Rust语言年的更新路线图,提供了对Rust未来的展望。需要注意的是,目前距离年为时尚早,因此Rust的路线图有可能随着时间的推移,在此基础上发生变化。
Rust1.0是在年发布的。从那时起,Rust从一个用于小众语言成长为几乎所有主要科技公司都在使用的主流编程语言。Rust也将是继Rust、Rust和Rust之后的第四版编程语言路线图。根据目前的计划,三年的周期将会保留,版本划分方面应该也没有什么变化。
从Rust团队的角度来看,路线图的重点主要有三样:更低的学习曲线、给予Rust库更好的连接生态,以及进一步发展壮大Rust语言。
降低学习门槛
Rust语言的学习门槛之高是屡屡被人诟病的一个问题。在2月份发布的年RustSurvey调查中,在近万名受访者中,有83%的人认为在生产环境中采用Rust十分具有挑战性。在过去多年的调查中,学习曲线太陡峭的问题一直存在,这也是很多人不使用Rust的主要原因之一。
开发者不仅要理解一般的逻辑,而且要把具体的实现精确到很多细枝末节之处。在Rust官方博客中,他们引用了所有权系统和借用检查器(borrowchecker)的概念来举例——"即使你已经学会了Rust的借用检查器是如何工作的,仍然有许多小细节需要你去弄明白,以便Rust程序能够编译。"
因此,在Rust年的路线图中,他们的一个目标就是简化程序,使开发者只需要处理其领域的固有复杂性,而不再需要处理Rust的意外复杂性。Rust团队希望开发者在使用Rust的过程中应该"不仅仅是可能,还需要不复杂并且使用起来非常愉悦",特别是对于嵌入式开发和异步程序领域。
为了实现这一愿景,团队有四个具体目标:
更精确的分析:通过改进借用检查器、类型推理等,使编译器能够更好地识别代码是否正确。识别并消除"boilerplate"模式,如到处复制粘贴同一组where。
开发人员应该能够更轻松、更直接地表达代码的意图。一方面可以通过语法糖的形式(如let-else),另一方面可能意味着扩展类型系统。
改进异步支持:将async-await支持扩展到目前的"MVP"之外,包括traits中的asyncfns、asyncdrop等功能。
让dynTrait更有用处。拓宽可用于dyn的特性集,使使用dyn的工作更接近于使用泛型的工作。
库和核心语言
Rust结合了所有权和借用、低级系统控制等强大的可扩展性机制,使其成为编写库的绝佳语言。而且多亏了Cargo,开发者在程序中仅需几行代码就能使用一个库。尽管如此,还有很多事情是库的作者不能做的,或者说不能轻易做的——例如:他们不能控制你看到的错误信息,或者部署一个"不稳定"的功能。对于Rust,LangTeam希望建立一些功能,使库的作者能够更好地服务于他们的用户,无论是通过帮助管理功能的生命周期,还是通过扩大库的功能。
LangTeam还希望能够在生态中进行更多探索的变化,并且能够将代码从生态稳定地迁移到标准库中;除此之外,他们还将增强Rust的互操作性,让库作者可以随心所欲地编写可在许多环境中移植的代码,或针对某一环境的代码。
为了更有效地进一步发展语言,LangTeam希望开发者能够很容易地识别出团队正在积极开展哪些工作,以及这些工作取得了多大进展。他们希望每一个跟踪问题都能清楚地识别出需要哪些步骤来推动该特定功能的完成,并确保这些步骤对潜在的贡献者来说是足够清楚的。
最后
随着年的到来,LangTeam将重新审视这些问题,会回顾已经取得了多少进展,以及是否需要调整这些内容。
对于一门编程语言而言,开发者最希望看到的还是版本更新应该尽可能少的引入破坏性变化。这样的变化一方面可能会影响程序之间的兼容性,另一方面也违背了当初设立的降低学习曲线的目标。路线图的更多详情可查看Rust官方博客。
转载请注明:http://www.0431gb208.com/sjszlff/4727.html