文章《Eurydice: 将 Rust 翻译为 C 的编译器(没错!)》
开发动机: 尽管 Rust 日益流行,但在许多场景(如特定嵌入式目标、旧版 Linux 发行版或遗留的构建系统)中,部署 Rust 工具链仍不可行。Eurydice 允许开发者使用 Rust 编写现代、安全的代码,同时生成可兼容旧环境的 C 代码,解决了渐进式迁移和互操作性难题。
技术细节:
- 架构:Eurydice 通过 Charon 工具对接 Rust 的 MIR(中级中间表示),确保语义转换的准确性。
- 输出:旨在生成可读的 C 代码。由于 Rust 的单态化(Monomorphization)特性,泛型函数会被展开,导致 C 代码比源文件冗长。
- 假设:目前设计假设输入代码已通过形式化验证,因此生成的 C 代码默认不包含部分 panic 处理逻辑。
实际应用: 该工具已投入实战,被用于将验证过的后量子加密库从 Rust 编译为 C,并成功集成到了 BoringSSL 和 Firefox 等主流项目中。
阅读: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-gdb 和 perf 分析,发现大量线程阻塞在 futex_wait。深入堆栈后发现,死锁发生在内存分配器 jemalloc 内部。
根本原因:
这是一个典型的**信号安全(Signal Safety)**问题。主线程正在持有 jemalloc 的锁进行内存分配时,被 Profiler 的信号(Signal)中断。而 Profiler 的信号处理函数(Signal Handler)内部也尝试调用 malloc 分配内存,试图获取同一把不可重入锁,导致死锁。
经验教训:
- 严禁在信号处理函数中调用非异步信号安全(Async-Signal-Safe)的函数(如
malloc)。 - 建议在 Release 构建中开启
debug = true以保留调试符号,便于排查此类底层问题。
阅读:https://baarse.substack.com/p/when-profiler-deadlocks-debugging
讨论:用 Rust 开发自己的编程语言所遇到的挑战
网友分享的开发自研编程语言 OtterLang(一种语法类似 Python 但通过 LLVM 编译为原生二进制的语言)时的经历与挑战。
主要挑战:
-
构建一致性(Build Consistency):
- 在 Windows、macOS 和 Linux 之间实现统一构建非常痛苦,细微的链接器(linker)版本不匹配会导致构建崩溃。
-
FFI(外部函数接口)系统:
- 这是最难但也最有趣的部分。作者试图实现“透明的 Rust FFI”,以便在 OtterLang 中直接调用 Rust crate。
- 难点:由于 Rust 没有稳定的 ABI,作者必须通过自动生成一个带有 C ABI (
extern "C") 的中间层(shim crate)来实现。目前结构体和枚举只能作为不透明句柄(opaque handles)传递,且不支持宏。
-
心态与动力:
- 独自开发编译器非常孤独,动力难以维持。有时一个小错误(如漏掉冒号)会让人产生重写整个编译器的冲动。
现状与收获:
- 近期有贡献者加入,缓解了孤独感并提升了项目进度。
- 作者表示这是他做过的最有成就感的事情,对编译器、内存管理和设计权衡的理解远超任何课程教学。
- 计划在未来一两个月内发布首个公开版本。
帖子:https://www.reddit.com/r/rust/comments/1pgkew7/problems_ive_had_coding_my_own_programming/
仓库:https://github.com/Ottrlang/otterlang
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论