< 返回版块

苦瓜小仔 发表于 2025-12-16 01:12

Tags:日报

Rust 官网推出了全新资助页面以帮助 Rust 项目贡献者

这篇文章介绍了 Rust 项目为了方便社区赞助贡献者而推出的新举措。

Rust 官方博客宣布在 Rust 官网上推出了一个全新的 Funding(资助)页面 https://rust-lang.org/funding/ ,旨在解决以往“想赞助但找不到人”的难题,让个人和小公司能更轻松地向 Rust 贡献者提供直接的经济支持。

详细内容:

  1. 背景与痛点:

    • Rust 项目依赖大量贡献者,其中许多人是志愿者,或者其开源工作仅获得部分资助。
    • 过去,如果你想赞助某位 Rust 开发者,往往需要像“侦探”一样去挖掘谁在做核心贡献、他们是否接受赞助以及通过什么渠道接受赞助。这种繁琐的过程阻碍了许多潜在的资金支持。
  2. 解决方案:全新的 Funding 页面

    • 集中展示: Rust 官网新增了一个专门的页面,列出了正在接受赞助的 Rust 项目成员。
    • 信息透明: 用户点击贡献者的名字,可以查看他们所属的团队以及在 Rust 项目中负责的具体工作内容。
    • 自愿加入(Opt-in): 该列表并非强制或自动生成的,而是由贡献者自行决定是否加入。因此,它是一个非详尽的列表,仅包含那些主动选择公开接受赞助的成员。
  3. 重要性:

    • 直接赞助(如通过 GitHub Sponsors)是支持 Rust 发展的多种方式之一。
    • 这对维持 Rust 语言及其工具链的长期健康发展至关重要,有助于保持现有质量并推动未来演进。
  4. 其他途径:

    • 文章也提到了其他正在进行的系统性资助努力,例如 Rust Foundation Maintainer Fund(Rust 基金会维护者基金)和 RustNL Maintainers Fund,这些主要面向更稳定和可持续的资金支持,而新的页面则更侧重于通过“积少成多”的方式连接个人赞助者与开发者。

总结来说,这项更新极大地简化了资金流向核心开发者的路径,降低了赞助门槛。

阅读:https://blog.rust-lang.org/2025/12/08/making-it-easier-to-sponsor-rust-contributors/

文章《COM 就像定时炸弹:Rust Outlook 插件》

这篇文章详细记录了 Tritium 团队在尝试使用 Rust 开发 Microsoft Outlook 插件(Add-in)时遇到的技术挑战与解决方案。

  1. 目标与背景: 为了融入律师的日常工作流,团队决定开发一个集成到“传统版 Outlook”的插件。由于目标是高性能且不依赖 .NET 运行时,他们选择使用 Rust 并通过 COM (组件对象模型) 接口与 Outlook 通信,主要利用了 windows-rs 库。

  2. 遇到的“炸弹” (The Bomb): 插件开发完成后,导致 Outlook 和其他插件(甚至微软官方插件)出现非确定性的随机崩溃。这是典型的内存错误迹象,表明在 Rust 与 Outlook 的 C/C++ 边界交互时出现了问题。

  3. 根源分析: 由于缺乏现成的 Rust COM 接口文档,开发者使用 LLM (如 Claude) 生成了 IRibbonExtensibility 等接口的 Rust 函数签名。

    • 错误点:LLM 生成的签名使用了所有权类型(如 _ribbon_id: BSTR)而非指针。
    • 后果:当 Rust 函数结束时,Rust 的自动内存管理(Drop trait)尝试释放这个变量的内存(调用 SysFreeString)。然而,这块内存实际上是由 Outlook 拥有的,这就导致了 Double Free(重复释放)Use After Free(释放后使用) 错误,进而引发崩溃。
  4. 解决方案: 手动修正函数签名,将参数改为指针类型(如 *const BSTR)。这样 Rust 就不会尝试管理或释放这些由 Outlook 传入的内存,从而修复了崩溃问题。

  5. 结论: 虽然 LLM 能加速代码编写,但在处理 unsafe 代码和 FFI(外部函数接口)边界时必须极度谨慎。LLM 很难识别出这种因所有权模型差异导致的微妙内存错误。

阅读:https://tritium.legal/blog/outlook

cargo-ddd:检查依赖版本更新对项目带来的更改

cargo-ddd 旨在帮助开发者在更新项目依赖时,能够直观地审查代码变更。

  • 生成 Diff 链接:当你更新依赖版本时,该工具会为你生成每一个变动的依赖包(包括直接依赖和深层嵌套依赖)在 GitHub 上的代码对比(Diff)链接。
  • 安全审计:工具的开发初衷是为了应对日益严峻的供应链攻击。通过查看实际的代码变更,开发者可以确认没有恶意代码被悄悄混入项目中。
  • 配合 AI 使用:作者建议可以将生成的 Diff 链接交给 AI 机器人,让 AI 帮忙总结变更内容或扫描可疑代码。

使用示例:

# 检查您的项目
cd <project-dir>
cargo ddd

# 查看所有嵌套依赖项更改
cargo ddd -a

# 检查非项目依赖项的 crate 的更改
cargo ddd serde@1.0.216-1.0.225
# serde         1.0.216 1.0.225 https://github.com/serde-rs/serde/compare/ad8dd41...1d7899d
= proc-macro2   1.0.92  1.0.101 https://github.com/dtolnay/proc-macro2/compare/acc7d36...d3188ea
= quote         1.0.37  1.0.40  https://github.com/dtolnay/quote/compare/b1ebffa...ab1e92c
= syn           2.0.90  2.0.106 https://github.com/dtolnay/syn/compare/ac5b41c...0e4bc64
= unicode-ident 1.0.14  1.0.19  https://github.com/dtolnay/unicode-ident/compare/404f1e8...dc018bf
+ serde_derive          1.0.225 https://github.com/serde-rs/serde/commit/1d7899d671c6f6155b63a39fa6001c9c48260821

局限性: 目前该工具处于早期版本(Initial version),暂时仅支持 GitHub 托管的 crate 链接。

仓库:https://crates.io/crates/cargo-ddd

Iced 0.14 发布

Iced 是一个 Rust 的跨平台 GUI 库,距离上一个版本发布已经过去一年多了,该版本是该项目启动以来最大的版本之一,引入了响应式渲染、各种测试工具、动画 API 和热重载等显著功能。

仓库:https://github.com/iced-rs/iced

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页