Axum 发布 0.7 版本
Axum 0.7.0 是一个构建在 Tokio、Tower 和 Hyper 之上的 Web 框架,新版主要变更点:
- 增加了对 Hyper 1.0 的支持。Hyper 1.0 对 API 进行了重大调整,移除了之前的高级API,并计划在新的 hyper-util 库中重新添加这些API。
- 引入了一个新的 axum::serve 函数来替代原有的 axum::Server,以简化启动过程。
- 推出了自己的 Body 类型来代替 http-body 库的功能。
- 为了简化路由配置,Axum 0.7.0 减少了泛型的使用,提供了更加清晰的中间件和请求处理方式。
开发者在升级过程中应注意与 tower-http 的兼容性,并可以通过查看变更日志来获取升级指南。
更新日志 https://tokio.rs/blog/2023-11-27-announcing-axum-0-7-0
Rustlantis:一个新的模糊测试器
Rustlantis 是来自 eth 的 Qian Wang 的毕业设计项目。
它是一个新的模糊器,能够生成在Rust的中间级别表示(Mid-level Intermediate Representation,MIR)中的程序,这些程序是确定性,且不含未定义行为。Rustlantis 已经发现了 Rust 编译器和 LLVM 中的 13 个以前未知的错误,这些错误导致了错误的编译和崩溃。
作者在论文中,介绍了他们如何使用语义模糊测试来找出 Rust 编译器中的错误。这种方法通过生成随机程序,编译它,并观察编译后的程序行为来工作。如果行为不正确,那么编译器中就存在一个错误。
Rustlantis 的设计保证了生成的程序具有可约简的控制流,这意味着生成的程序可以使用循环、if-else 和 break 语句来表示。此外,Rustlantis 还能确保所有的语句最多执行一次,所有的函数只进入一次。
该论文对 Rustlantis、其实现及其在发现 Rust 编译器和 LLVM 中的关键错误方面的有效性进行了彻底而详细的研究。 对发现的错误及其影响的详细分析,展示了此类模糊测试工具在确保编译器可靠性和程序正确性方面的重要性。
论文链接 https://ethz.ch/content/dam/ethz/special-interest/infk/inst-pls/plf-dam/documents/StudentProjects/MasterTheses/2023-Andy-Thesis.pdf
rustc_codegen_clr:rustc 的 .NET 后端
FractalFir 分享了其 rustc 后端的更新,该后端允许将 Rust 代码编译为 .NET 程序集,从而使 Rust 库能在 C# 中使用,反之亦然。
作者在类型处理代码上进行了重大改进,支持了常量数据和切片,修复了许多错误,并对最终的 CIL(公共中间语言)代码进行了一些优化,提高了在 .NET 运行时内 Rust 代码的速度。
目前,该 codegen 能够编译核心库中的1000多个函数,尽管还有约300个函数无法正确编译。作者认为这是一个重要的里程碑,因为超过75%的核心库已经编译。
github仓库地址 https://github.com/FractalFir/rustc_codegen_clr/
-- From 日报小组 RustPlumber