GCC13中将不会引入对Rust的支持

北京哪里医院治疗白癜风好 http://www.txbyjgh.com/m/index.html

出品

开源中国

去年12月,Gccrs被批准合并到GCC主线,所有gccrs代码也都被合并到了GCC13上游代码库中。但时至今日,编译器仍未就支持Rust做好准备。开发人员PhilipHerron和ArthurCohen发文解释称:

我们的期望是,通过明确表示编译器仍未为真正的Rust代码做好准备;可以从早期用户那里得到有价值的反馈,以及来自两个不同社区(Rust社区和GCC社区)的更多参与。我们计划在最后的发布期限之前尽可能的完成更多工作,但现在GCC13.1版本已经来临,我们在完整性方面仍然没有达到目标。

这意味着当使用gccrs时,你仍然无法实现如“HelloWorld!”之类的“easyRustthings”,也不能使用常用的标准库。同样,对于Rust编程语言必不可少的更复杂的概念(如borrow-checking)也尚未实现;如果没有这些功能,gccrs将不会被认为是完整的。我们认为这会给不知情的用户带来很多困惑,他们可能会将gccrs视为官方GCC版本的一部分,并期望得到一个可用的编译器。

公告指出,gccrs未在GCC13中准备好,跟Rust本身“nothingwillwork,unlesseverythingworks”的严格设计脱不了干系。Rust标准库可以被看作是几个相互依赖的crates,其中两个主要组成部分是core和alloc。就目前而言,gccrs还不能编译其目标版本的corecrate;虽然Philip正在推进该方面的工作,但这一落后还是“严重影响了我们的类型系统和编译器中的第二个中间表示”。

另一方面,尽管开发人员旨在以Rust1.49版本的核心库为目标,但也需要实现那些在Rust的后期版本中才稳定下来(或者说至今仍可能是不稳定的)的功能。为此,开发人员需要进行大量的调查工作。其举例称,用户可能希望gccrs处理这样一个代码片段:

fnmain(){println!("Hello,world!");}

但gccrs目前根本不能实现。“如果你对Rust有一点了解,你就会知道println!是一个宏调用。宏是很复杂的,但也是非常强大的。我们已经对它们进行了一段时间的研究,一些更复杂的功能仍未正确实现......虽然所有这些看起来都很容易理解和使用,但Rust编译器必须做很多工作来处理这些宏调用!”

值得一提的是,开发团队最近也开始了Rust过程宏(ProceduralMacros)的相关工作,由Pierre-EmmanuelPatry领导。

Philip和Arthur在公告中表示,虽然没能赶上GCC13的发布,但他们依然对gccrs未来的进展充满信心。该团队计划在未来几个月里专注于corecrate以及borrow-checker的实现,并开发一些必要的工具来尝试并通过Rust1.49testsuite。

其目标是在下一个主要的GCC版本(即GCC14)中,将Rust1.49版本的标准库与编译器一起发布,并希望向后移植足够多的更改到GCC13分支,以便在GCC13.2发布时使corecrate能正常运行。这将使用户能够轻松地开始为#![no_std]Rust程序和一些嵌入式目标尝试编译器。

我们已经花费了大量时间完成与GCC上游的初步合并,这是一项不需要重复的工作。使得我们能够更加专注于GCC14的编译器开发,并使我们能够轻松地将补丁推送到上游。这段时间将用于生产更高质量的编译器,并有望接近一个真正的Rust编译器。这也提高了项目的知名度,有许多文章都是关于我们对上游的各种推动。

我们将继续努力为GCC制作一个高质量的Rust编译器前端,并将坚持我们现有的原则:我们要尊重Rust编程语言,不以任何way、shape或form伤害它。gccrs的目标不是要规避围绕Rust语言的各种程序,也不是为那些应该是无效的Rust代码提供一个escapehatch。我们以rustc为指导,并将继续把这两个编译器之间的每一个差异视为bug。

此外,他们还邀请更多有志之士加入其核心团队,或者提供一些赞助。

更多详情可查看完整公告:


转载请注明:http://www.aierlanlan.com/rzfs/7537.html

  • 上一篇文章:
  •   
  • 下一篇文章: