< 返回版块

苦瓜小仔 发表于 2025-12-08 18:20

Tags:日报

文章《Eurydice: 将 Rust 翻译为 C 的编译器(没错!)》

开发动机: 尽管 Rust 日益流行,但在许多场景(如特定嵌入式目标、旧版 Linux 发行版或遗留的构建系统)中,部署 Rust 工具链仍不可行。Eurydice 允许开发者使用 Rust 编写现代、安全的代码,同时生成可兼容旧环境的 C 代码,解决了渐进式迁移和互操作性难题。

技术细节

  • 架构:Eurydice 通过 Charon 工具对接 Rust 的 MIR(中级中间表示),确保语义转换的准确性。
  • 输出:旨在生成可读的 C 代码。由于 Rust 的单态化(Monomorphization)特性,泛型函数会被展开,导致 C 代码比源文件冗长。
  • 假设:目前设计假设输入代码已通过形式化验证,因此生成的 C 代码默认不包含部分 panic 处理逻辑。

实际应用: 该工具已投入实战,被用于将验证过的后量子加密库从 Rust 编译为 C,并成功集成到了 BoringSSLFirefox 等主流项目中。

阅读:https://jonathan.protzenko.fr/2025/10/28/eurydice.html

仓库:https://github.com/AeneasVerif/eurydice

演讲:在 AWS 上释放 Rust 的潜力

Rust 的安全性、高性能和高可靠性使其成为 AWS 云应用的理想选择。

从 Amazon Aurora DSQL 到 AWS Firecracker 和 AWS Bottlerocket,AWS 已在关键基础设施领域充分展现了 Rust 的强大功能。

本次演讲将探讨 Rust 的实际应用,演示无服务器实现和并发处理模式。了解 Rust 的内存安全性和高效抽象如何增强 AWS 应用。从 AWS Lambda 函数到分布式系统,学习如何使用 Rust 构建高性能解决方案。

观看:https://youtu.be/buBBQ5mXAi8

文章《当 Profiler 死锁。使用 GDB 调试卡在 futex 中的 Rust 服务》

这篇文章总结了作者排查 Rust 服务因引入 Pyroscope 性能分析工具导致死锁的全过程。

问题现象: 生产环境的 Loki 服务在更新后出现严重延迟,CPU 占用虽高但处理停滞。

排查过程: 作者利用 rust-gdbperf 分析,发现大量线程阻塞在 futex_wait。深入堆栈后发现,死锁发生在内存分配器 jemalloc 内部。

根本原因: 这是一个典型的**信号安全(Signal Safety)**问题。主线程正在持有 jemalloc 的锁进行内存分配时,被 Profiler 的信号(Signal)中断。而 Profiler 的信号处理函数(Signal Handler)内部也尝试调用 malloc 分配内存,试图获取同一把不可重入锁,导致死锁。

经验教训

  1. 严禁在信号处理函数中调用非异步信号安全(Async-Signal-Safe)的函数(如 malloc)。
  2. 建议在 Release 构建中开启 debug = true 以保留调试符号,便于排查此类底层问题。

阅读:https://baarse.substack.com/p/when-profiler-deadlocks-debugging

讨论:用 Rust 开发自己的编程语言所遇到的挑战

网友分享的开发自研编程语言 OtterLang(一种语法类似 Python 但通过 LLVM 编译为原生二进制的语言)时的经历与挑战。

主要挑战:

  1. 构建一致性(Build Consistency)

    • 在 Windows、macOS 和 Linux 之间实现统一构建非常痛苦,细微的链接器(linker)版本不匹配会导致构建崩溃。
  2. FFI(外部函数接口)系统

    • 这是最难但也最有趣的部分。作者试图实现“透明的 Rust FFI”,以便在 OtterLang 中直接调用 Rust crate。
    • 难点:由于 Rust 没有稳定的 ABI,作者必须通过自动生成一个带有 C ABI (extern "C") 的中间层(shim crate)来实现。目前结构体和枚举只能作为不透明句柄(opaque handles)传递,且不支持宏。
  3. 心态与动力

    • 独自开发编译器非常孤独,动力难以维持。有时一个小错误(如漏掉冒号)会让人产生重写整个编译器的冲动。

现状与收获:

  • 近期有贡献者加入,缓解了孤独感并提升了项目进度。
  • 作者表示这是他做过的最有成就感的事情,对编译器、内存管理和设计权衡的理解远超任何课程教学。
  • 计划在未来一两个月内发布首个公开版本。

帖子:https://www.reddit.com/r/rust/comments/1pgkew7/problems_ive_had_coding_my_own_programming/

仓库:https://github.com/Ottrlang/otterlang

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页