< 返回版块

Yuan YQ 发表于 2025-11-12 17:10

Rust 1.91.1 发布

Rust 1.91.1 修复了 1.91.0 版本中引入的两处回归问题。

Wasm 平台的链接器与运行时错误

Rust 支持的大多数目标平台通过名称识别符号,但 Wasm 平台会通过符号名和 Wasm 模块名共同识别。#[link(wasm_import_module)] 属性允许为一个 extern 块所引用的 Wasm 模块定义别名:

#[link (wasm_import_module = "hello")]
extern "C" {
    pub fn world ();
}

Rust 1.91.0 在该属性的处理上引入了一个回归错误:当多个 Rust crate 从不同的 Wasm 模块中导入同名符号时,可能导致链接阶段失败(报错“import module mismatch”——模块不匹配),或在运行时调用错误的函数(导致未定义行为,包括程序崩溃或静默的数据损坏)。Rust 1.91.1 修复了该问题。

在 illumos 系统上 Cargo 的目标目录锁定失效

Cargo 在构建过程中会对 target/ 目录加锁,以防止多个 Cargo 实例并发运行时互相干扰。并不是所有文件系统都支持文件锁定(尤其是一些网络文件系统):如果操作系统在尝试加锁时返回 Unsupported 错误,Cargo 就会假定该系统不支持锁定,并继续在无锁状态下运行。

在 Cargo 1.91.0 中,团队将原先自定义的系统 API 调用替换为标准库中 File::lock 方法。但由于一个疏忽,该方法在 illumos 平台上始终返回 Unsupported,导致无论底层文件系统是否支持锁定,Cargo 都不会在 illumos 上对构建目录加锁。

Rust 1.91.1 修复了标准库中的这一疏忽,在 illumos 上启用了 File::lock 系列函数,从而间接修复了 Cargo 的这个回归问题。

完整更新内容:https://blog.rust-lang.org/2025/11/10/Rust-1.91.1/

FileSSH: TUI 的远程文件浏览器

FileSSH 是一款 TUI 文件浏览器,支持查看和下载远程服务器上的文件。

该项目目前具备以下功能(后续还将添加更多):

  • 支持文件和文件夹下载,采用并行目录遍历方式,进度信息详实直观。
  • 可浏览服务器上的文件,也能查看文件内容。

Github: https://github.com/JayanAXHF/filessh

two-pass-lanczos: 高效且低内存占用的 Lanczos 算法实现

标准的 Lanczos 方法在计算矩阵函数时对内存的需求十分苛刻:它需要存储一个大小为 $n\times k$ 的基矩阵,而该矩阵会随着每次迭代不断增长。对于一个包含 50 万个变量、需要 1000 次迭代的问题,仅存储这个基矩阵就需要大约 4 GB 内存。

此文探讨了一种新的实现方式:two-pass-lanczos 算法。仅需 $O(n)$ 的内存,代价是将矩阵-向量乘法的次数增加一倍。令人意外的是,若实现得当,这种双遍版本不仅节省内存——在某些问题上甚至更快。此文将深入探讨其背后的原因。

Github: https://github.com/lukefleed/two-pass-lanczos

完整报告地址:https://github.com/lukefleed/two-pass-lanczos/raw/master/tex/report.pdf

--

From 日报小组 Yuan YQ

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页