GCC 13 中将不会引入对 Rust 的支持
第一个官方 GCC 13 版本即将发布,但 GCC 的 Rust 前端项目 gccrs 却不会如期出现在此版本中。
去年 12 月,Gccrs 被批准合并到 GCC 主线,所有 gccrs 代码也都被合并到了 GCC 13 上游代码库中。但时至今日,编译器仍未就支持 Rust 做好准备。开发人员 Philip Herron 和 Arthur Cohen 发文解释称:
我们的期望是,通过明确表示编译器仍未为真正的 Rust 代码做好准备;可以从早期用户那里得到有价值的反馈,以及来自两个不同社区(Rust 社区和 GCC 社区)的更多参与。我们计划在最后的发布期限之前尽可能的完成更多工作,但现在 GCC 13.1 版本已经来临,我们在完整性方面仍然没有达到目标。
这意味着当使用 gccrs 时,你仍然无法实现如“Hello World!”之类的“easy Rust things”,也不能使用常用的标准库。同样,对于 Rust 编程语言必不可少的更复杂的概念(如 borrow-checking)也尚未实现;如果没有这些功能, gccrs 将不会被认为是完整的。我们认为这会给不知情的用户带来很多困惑,他们可能会将 gccrs 视为官方 GCC 版本的一部分,并期望得到一个可用的编译器。
公告指出,gccrs 未在 GCC 13 中准备好,跟 Rust 本身“nothing will work, unless everything works”的严格设计脱不了干系。Rust 标准库可以被看作是几个相互依赖的 crates,其中两个主要组成部分是 core 和 alloc。就目前而言,gccrs 还不能编译其目标版本的 core crate;虽然 Philip 正在推进该方面的工作,但这一落后还是“严重影响了我们的类型系统和编译器中的第二个中间表示”。
另一方面,尽管开发人员旨在以 Rust 1.49 版本的核心库为目标,但也需要实现那些在 Rust 的后期版本中才稳定下来 (或者说至今仍可能是不稳定的) 的功能。为此,开发人员需要进行大量的调查工作。其举例称,用户可能希望 gccrs 处理这样一个代码片段:
fn main() { println!("Hello, world!"); }
但 gccrs 目前根本不能实现。“如果你对 Rust 有一点了解,你就会知道 println! 是一个宏调用。宏是很复杂的,但也是非常强大的。我们已经对它们进行了一段时间的研究,一些更复杂的功能仍未正确实现......虽然所有这些看起来都很容易理解和使用,但 Rust 编译器必须做很多工作来处理这些宏调用!”
值得一提的是,开发团队最近也开始了 Rust 过程宏 (Procedural Macros) 的相关工作,由 Pierre-Emmanuel Patry 领导。
Philip 和 Arthur 在公告中表示,虽然没能赶上 GCC 13 的发布,但他们依然对 gccrs 未来的进展充满信心。该团队计划在未来几个月里专注于 core crate 以及 borrow-checker 的实现,并开发一些必要的工具来尝试并通过 Rust 1.49 testsuite。
其目标是在下一个主要的 GCC 版本 (即 GCC 14)中,将 Rust 1.49 版本的标准库与编译器一起发布,并希望向后移植足够多的更改到 GCC 13 分支,以便在 GCC 13.2 发布时使 core crate 能正常运行。这将使用户能够轻松地开始为 #![no_std] Rust 程序和一些嵌入式目标尝试编译器。
我们已经花费了大量时间完成与 GCC 上游的初步合并,这是一项不需要重复的工作。使得我们能够更加专注于 GCC 14 的编译器开发,并使我们能够轻松地将补丁推送到上游。这段时间将用于生产更高质量的编译器,并有望接近一个真正的 Rust 编译器。这也提高了项目的知名度,许多文章都是关于我们对上游的各种推动。
我们将继续努力为 GCC 制作一个高质量的 Rust 编译器前端,并将坚持我们现有的原则:我们要尊重 Rust 编程语言,不以任何 way、shape 或 form 伤害它。gccrs 的目标不是要规避围绕 Rust 语言的各种程序,也不是为那些应该是无效的 Rust 代码提供一个 escape hatch。我们以 rustc 为指导,并将继续把这两个编译器之间的每一个差异视为 bug。
此外,他们还邀请更多有志之士加入其核心团队,或者提供一些赞助。
更多详情可查看完整公告。
相关阅读:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Flask 之父用 Rust 编写 Python 包管理工具:Rye
Python Web 框架 Flask 作者 Armin 近日发布了新的开源项目Rye。这是一款采用 Rust 编写的 Python 包管理工具,Armin 称其可作为 poetry/pip/pipenv/pyenv/venv/virtualenv/pdm/hatch 等同类工具的替代方案。 Armin 表示 Rye 是给自己打造的“一站式”工具,满足了他对 Python 的所有需求,包括安装和管理 Python 软件包、管理 pyproject.toml 文件、安装和卸载依赖项、在后台管理 virtualenvs,以及支持 monorepos 和全局工具安装。 下面是 Rye 的部分功能: 自动安装和管理 Python $ rye pin 3.11 $ rye run python Python 3.11.1 (main, Jan 16 2023, 16:02:03) [Clang 15.0.7 ] on darwin Type "help", "copyright", "credits" or "license" for more information. >&g...
- 下一篇
Linux 6.4 改进了 F2FS 和 Btrfs 文件系统
Linux 6.4 合并窗口已收到F2FS(闪存友好文件系统) 和 Btrfs 文件系统的优化补丁。 Btrfs 文件系统的主要改动是核心优化和代码清理,以及一些性能上的修复和两个目录日志记录的性能改进。代码清理主要是对 I/O 路径的清理、重写了清理的主循环代码,以解决现有代码跳转过多、碎片区 IOPS 效率低等问题。改进后的 Btrfs 清理代码速度提升大约 10% 。 性能改进方面,第一项是在事务中改进目录的日志更改,避免迭代项目并减少锁的争用(可使 fsync 时间降低 4 倍);第二项是在事务中记录目录条目时,通过检查树日志来减少子卷树的锁定(可提高吞吐量和并发访问子卷的延迟)。 可通过此 PR 查看Linux 6.4 合并窗口的 Btrfs 补丁完整列表。 F2FS 文件系统主要是一些驱动程序更新,新功能最重要的是支持分区设备的非二次幂区域大小,其次是垃圾收集器的代码重构、支持 I/O 轮询,以及各种不同的错误修复。 可在该 PR 中查看完整的修复项。 Linux 6.4 还对 FSCRYPT 文件系统加密框架进行了各种清理和修复,已准备好在未来的内核版本中使用 CephF...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作