【Rust日报】2023-11-28 Axum 发布 0.7 版本

2023-11-30 11:28

本文主要是介绍【Rust日报】2023-11-28 Axum 发布 0.7 版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Axum 发布 0.7 版本

Axum 0.7.0 是一个构建在 Tokio、Tower 和 Hyper 之上的 Web 框架,新版主要变更点:

  1. 增加了对 Hyper 1.0 的支持。Hyper 1.0 对 API 进行了重大调整,移除了之前的高级API,并计划在新的 hyper-util 库中重新添加这些API。

  2. 引入了一个新的 axum::serve 函数来替代原有的 axum::Server,以简化启动过程。

  3. 推出了自己的 Body 类型来代替 http-body 库的功能。

  4. 为了简化路由配置,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

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

  • 微信公众号:Rust 语言中文社区

这篇关于【Rust日报】2023-11-28 Axum 发布 0.7 版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/436839

相关文章

Nginx实现前端灰度发布

《Nginx实现前端灰度发布》灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新,通过灰度发布,我们可以测试新版本的稳定性和性能,下面就来介绍一下前端灰度发布的使用,感... 目录前言一、基于权重的流量分配二、基于 Cookie 的分流三、基于请求头的分流四、基于请求参数的分

springboot3.4和mybatis plus的版本问题的解决

《springboot3.4和mybatisplus的版本问题的解决》本文主要介绍了springboot3.4和mybatisplus的版本问题的解决,主要由于SpringBoot3.4与MyBat... 报错1:spring-boot-starter/3.4.0/spring-boot-starter-

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑