< 返回版块

苦瓜小仔 发表于 2025-12-21 23:22

Tags:日报

Rust 2025 下半年项目目标进展(11 月)

Rust 项目目前正在努力实现 41 个项目目标 ,其中 13 个被指定为旗舰目标 。本文将提供一些关于我们在实现这些目标方面进展情况(或在某些情况下,进展缓慢)的最新信息。任何特定目标的完整详情都可以在 rust-project-goals 代码库中相应的跟踪 issue 中找到。

阅读:https://blog.rust-lang.org/2025/12/16/Project-Goals-2025-November-Update.md/

视频:Rust 语言与忽视理论的代价

内存管理属于那种几乎无关紧要的底层细节,它难以自动化处理,而且毫无益处地使算法变得复杂。与此同时,它却能显著提升或降低性能,并可能导致严重的漏洞。

我们非常欢迎改进内存管理的尝试,但前提是不能重蹈覆辙,犯下过去众所周知的错误。

Rust 走了一步,却又退了两步。它热情洋溢却又误导性的营销、浪费的潜力以及对数十年研究成果的漠视,都令人感到格外恼火。尽管 Rust 一心追求安全性,但它的封装和链接系统最终造成的安全隐患,远超其有限的内存安全模型所能消除的。

时间戳:

00:00 开场
00:50 Rust 做了什么
02:59 内存管理原则
05:30 栈内存
08:04 堆内存
09:07 Arenas
11:05 数学 vs 硅谷
13:04 垃圾收集
13:55 Rust 借用和生命周期子类型示例
17:10 通过依赖类型进行安全的边界访问
18:37 理论
19:45 颗粒:线性
21:15 线性度限制
22:39 所有权
25:27 理论和实用主义的阴暗面
26:55 动态链接
30:10 安全噩梦
35:47 Rust 的其他优势
40:06 Rust 重写:Discord(源自 Go)、ripgrep(源自 C)、rust(源自 Ocaml)
40:57 OCaml 模块
42:25 编译速度
43:34 运行时速度
44:35 Linux 内核
45:25 GPU 编程
45:52 个人练习
49:18 结论
51:52 未来

观看:https://youtu.be/1iPWt1gvT_w

讨论:https://www.reddit.com/r/rust/comments/1ppzrr8/rust_and_the_price_of_ignoring_theory/

rustc_codegen_gcc 进展报告

rustc_codegen_gcc 是 Rust 编译器的 GCC 后端,旨在让 Rust 能够利用 GCC 的优化能力并支持更多硬件架构。

本期报告展示了项目在底层工具链集成和多架构支持(尤其是 m68k)方面的稳步推进,Rust 编译器向“GCC 化”又迈进了坚实的一步。

  1. GCC 端的进展 (libgccjit):为了支持 Rust 的特性,作者向 GCC 游离端(Upstream)提交了大量补丁,部分已合并,部分正在评审中:
  • 已合并/准备就绪:增加了对 _Float16_Float128 等浮点类型的支持;修复了 Power 架构上的错误;增加了设置 ABI 的函数属性;优化了警告处理。
  • 开发中/评审中:支持 x87Aarch64 CPU 特性;支持 weak 变量属性;支持打包结构体(packed struct);修复了 volatile 加载/存储以及 long double 的大小获取等问题。
  1. 项目核心改进:
  • 内存优化:通过拆分深度嵌套的表达式,修复了编译时内存占用过高的问题。
  • 架构支持增强
    • 实现了 reg vector type(寄存器向量类型)。
    • 通过 dlopen 加载 libgccjit.so,使得支持多目标架构更加容易。
    • libgccjit.so 移动到 sysroot 中,优化了工具链的结构。
  • 内置函数优化:开始使用通用内置函数处理“带检查的算术操作”(checked operations)和“饱和算术操作”(saturating operations)。
  • 同步与维护:持续同步 Rust 官方仓库的代码(已更新至 2025 年 11 月下旬的 Nightly 版本),并重新生成了大量 intrinsic。
  1. 重点突破:m68k 架构支持:作者目前的工作重心是跨平台编译 rustc 到新平台
  • 初步成功:现在已经可以为 m68k 架构构建原生 rustc 二进制文件(尽管仍需少量变通方法)。
  • 现状:虽然生成的二进制文件目前还无法正确编译简单的程序,但这是一个里程碑式的进展。接下来几个月的工作重点将是调试 m68k 上的程序编译,并修复相关测试。
  1. 测试与进度统计
  • UI 测试通过率:通过的测试数量从 6676 增加到 6774(增加了 98 个),失败的测试也有小幅增加(从 47 到 57),这通常是因为同步了更多上游测试用例。
  • 特性完成度:大部分基础特性(如原子操作、内联汇编、128位整数等)已完成。目前的重点在调试信息(20%)、Thin LTO(5%)和新架构支持上。
  1. 呼吁贡献
  • 运行 UI 测试并调查失败原因。
  • libcobject 等核心 crate 中为新平台添加支持。
  • 对比 GCC 后端与 LLVM 后端生成的汇编代码,查找缺失的优化点。

WGPU 更新:发布 v28.0.0

wgpu v28.0.0 引入了对网格着色器(Mesh Shaders)的全面支持,可在 Vulkan、Metal 和 DX12 上实现高效的网格簇渲染。主要重大变更包括将推正常数(Push Constants)重命名为“即时数据(Immediates)”,以及将 enumerate_adapters 变更为异步函数。此版本还实现了跨平台的多视图(Multiview)支持、线程本地的错误作用域,并将 Vulkan 后端切换至 gpu-allocator。此外,更新还包含 LoadOp::DontCare 优化选项、瞬态纹理支持以及旨在减少日志干扰的等级调整。

仓库:https://github.com/gfx-rs/wgpu

Toml 库更新:发布 v1.1.0

  1. 内联表(Inline Tables)的增强(最受期待的改进)
  • 允许换行:在 v1.1.0 之前,内联表必须写在同一行,这导致包含较多键值对时代码极难阅读。现在,内联表内部允许使用换行符。
  • 允许尾随逗号:现在可以在内联表的最后一个键值对后添加逗号,这与数组(Arrays)的行为保持一致,也更利于版本控制工具(如 Git)查看差异。
  1. 字符串与字符支持
  • 新增 \e 转义序列:支持转义字符(Escape character, U+001B),方便表示控制序列。
  • 注释支持更多控制字符:放宽了对注释中某些 Unicode 控制字符的限制。
  • Unicode 澄清:进一步明确了 UTF-8 编码的强制性以及对无效序列的处理方式。
  1. 数字与日期时间
  • 十六进制浮点数:新增了对十六进制格式浮点数的支持(例如 0x1.1p-4)。
  • 毫秒级以下精度:明确规定日期时间(Datetime)支持超过 3 位的亚秒级精度(即微秒、纳秒等)。
  • 边界值行为规范:对实现者如何处理极端数值(极大或极小)提供了更清晰的建议。
  1. 兼容性与规范澄清
  • 向前兼容:v1.1.0 旨在纠正 1.0 中的一些逻辑模糊点,同时确保所有符合 1.0 规范的文档在 1.1 中依然有效。
  • 错误处理优化:要求解析器提供更具描述性的错误信息,特别是在处理未定义行为时。

仓库:https://github.com/toml-lang/toml

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页