Rust版本,比如2015年,什么时候会结束生命



Rust有不同的版本。最古老的版本是Rust 2015。目前的版本是Rust 2018。Rust 2021计划发布。Rust 2015将于何时结束生命,并由rustc提供支持?

官方文档声称官方版本将不断更新。

兼容性

当新版本在编译器中变得可用时,板条箱必须明确选择加入才能充分利用它。此选项中允许版本包含不兼容的更改,例如添加新的可能与代码中的标识符冲突的关键字,或将警告转换为错误Rust编译器将支持在编译器发布之前就已经存在,并且可以将任何支持的版本版本更改只会影响编译器首先解析代码。因此,如果您正在使用Rust2015,您的一个依赖项使用了Rust 2018,一切都正常好的相反的情况也适用。

需要明确的是:大多数功能将在所有版本中提供。使用任何版本的Rust的用户都将继续看到改进发布了新的稳定版本然而,在某些情况下,主要是当添加了关键字,但有时由于其他原因,可能会有新的只有在更高版本中才可用的功能。你只需要如果您想利用这些功能,请升级。

(增加强调(

Rust版本是永恒的,实现将达到EOL。这来自Programming Rust第二版,

任何在Rust 1.0上编译的代码都必须在Rust 1.50上编译得一样好,或者如果它发布了,也可以在Rust 1.900上编译。[…]Rust承诺编译器将接受该语言的所有现存版本,并且程序可以自由混合使用不同版本编写的创建。

所以基本上rustc在semvar*下。当某个版本的Rust被废弃时,rustc保留放弃对该特定版本Rust的支持的权利。当这种情况发生时,他们将冲击主版本,我们将拥有rustc 2.0版本。

在此之前,假设Rust的所有版本都将由rustc支持。


这并不完全正确,也有一些例外,比如发布Rust 2021 的博客文章中提到的

相反,我们决定在所有版本中添加trait实现(从Rust 1.53.0开始(,但在Rust 2021之前添加一个小破解以避免破坏。在Rust 2015和2018代码中,编译器仍然会像以前一样将array.into_iter((解析为(&array(.into_ier((,就好像trait实现不存在一样。这仅适用于.into_iter()方法调用语法。它不影响任何其他语法,例如for e in [1, 2, 3]iter.zip([1, 2, 3])IntoIterator::into_iter([1, 2, 3])。这些将开始在所有版本中发挥作用。

这意味着您可以在Eddition 2018的Rust 1.53.0中编写代码,但在Rust 1.52.0中编译的代码中不起作用。不管这种可能性有多大,我不确定。

最新更新