好猫网手机站
Rust 1.47的新功能
2022-08-28 23:37:23  浏览:45

Rust 1.47的新功能

与CC ++Go和您可能使用的其他语言相比Rust编程语言的独特方法可产生更好的代码并减少妥协它还会定期更新通常每个月更新一次

Rust 1.47.0的新功能

2020年10月8日宣布Rust 1.47.0没有新的语言功能但增强了标准库该版本中提供了生活质量和工具链改进以及库稳定性 已发布发行说明以进行升级

Rust 1.47.0中的特定功能包括:

“ const泛型”功能会影响较大阵列上的特征该功能仍然需要稳定Rust缺乏一种对整数值通用的方法这导致了数组问题此功能旨在解决此问题并使数组更有用

升级到LLVM 11编译器基础结构使其成为默认设置

较短的回溯使查找问题更容易

rustc现在支持-C control-flow-guard该选项将打开Windows上的Control Flow Guard安全功能其他平台忽略此标志

Rustdoc现在支持Ayu主题

标准库中的9个API已稳定: Ident :: new_raw Range :: is_empty RangeInclusive :: is_empty Result :: as_deref Result :: as_deref_mut Vec :: leak 指针:: offset_from f32 :: TAU和 f64 :: TAU

1.46.0中的新功能

于2020年8月27日发布的Rust 1.46具有以下功能:

有多项核心语言功能现在可以使用const fn包括ifif let match和其他几个人

现在一个稳定的#[track_caller]属性(用于改善当错误消息unwrap和相关函数出现紧急情况时的错误消息)是稳定的

在对库的更改中std::mem::forget现在是const fn库中还稳定了两个新的API:Option::zip和vec::Drain::as_slice

对于编译器citylib可以在Apple iOS和tvOS平台上使用目标

递归索引到元组中不再需要括号

Rust 1.45.0中的新功能

于2020年7月16日宣布Rust 1.45包括以下新增和改进功能:

提供了一种修复程序可以修复在整数和浮点数之间进行转换时出现的一些长期不完善的情况

在表达式模式和语句中为函数式过程宏提供了稳定化功能扩展宏的使用有助于使用Rust的Rocket Web框架

一些库API已经稳定如Arc::as_ptrBTreeMap::remove_entry和Span::resolved_atAPI的完整列表可以在Rust Blog中找到

Rust 1.43.1的新功能

该点版本于2020年5月7日引入以解决1.43.0稳定版中引入的两个回归它还会更新货运包裹管理器使用的OpenSSL版本功能包括:

推荐白皮书

不断发展的DevOps以支持安全性–来自Puppet Labs DevOps状况报告的观点

IDC Marketscape-ServiceNow DevOps为DevOps团队自动化变更控制和合规管理

ServiceNow IT业务管理的Total Economic Impact™

Rust 1.27引入了对通过is_x86_feature_detected 宏检测标准库中x86 CPU功能的支持由于内部重构Rust 1.43.0阻止了对尚未在稳定版上使用的功能的检测即使以前允许对其进行检测也是如此1.43.1版修复了此回归问题

提供了针对损坏cargo package –list 命令的修复程序当在具有路径依赖项或未发布版本的工作空间中执行时Rust 1.43打破了对列出随Cargo发布的软件包中包含的文件的支持

OpenSSL(一种货运依赖性)已更新至1.1.1gOpenSSL已发布了安全公告但Rust团队无法及时包含Rust 1.43.0的修复程序该团队没有证据表明该漏洞可能危及货运用户的安全

Rust 1.43.0中的新功能

2020年4月23日宣布Rust 1.43.0被认为是一个相当小的发行版未引入任何主要功能更改包括:

开发人员可以使用item碎片插值物品进入体内traitimpl和extern块

围绕原语引用和二进制操作的类型推断得到了改进

为了帮助进行集成测试Cargo将为测试设置一些新的环境变量以查找可执行文件

在Rust库中开发人员可以直接在浮点数和整数上使用关联的常量而不必导入模块另外还有一个新primitive模块可以重新导出Rust原语类型这在编写宏且开发人员希望确保类型不被遮盖时非常有用

在图书馆多个API是稳定的:Once::is_completedf32::LOG10_2f32::LOG2_10f32::LOG10_2f64::LOG10_2f64::LOG2_10和iter::once_with

Rust 1.41中的新功能

2020年1月30日发布的1.41.0版包含以下新功能和改进:

实施特质时放宽了限制在Rust 1.41.0之前孤立规则过于严格阻碍了合成强制执行该规则以防止在依赖项添加新特性时发生损坏impl要点是impl仅当特性或所实现的类型在当前板条箱本地(而不是外国板条箱)本地时才允许使用特征

cargo install用于安装二进制板条箱和基于Rust的CLI工具如果已发布新版本现在将更新板条箱的现有安装

对于用于确保构建一致的锁定文件引入了一种新格式以避免在更改单独分支中的依赖项时发生不必要的合并冲突新格式将用于所有新的锁定文件而现有锁定文件仍依赖于先前的格式

使用Box FFI(外部功能接口)时可以提供更多保证Box 被称为盒子提供了Rust最简单的堆分配形式如果开发人员具有extern从C调用的“ C” Rust函数则Rust函数现在可以Box 用于特定的T而T*在C中将相应的函数使用但是开发人员现在应该避免Box 对在C中定义但在Rust中调用的函数使用类型在这些情况下开发人员应直接尽可能接近C类型

对该库进行了补充例如稳定了Result::map_or和Result:map_or_elseweak_count和strong_count方法也很稳定如果较小的整数宽度则NonZero*现在实现数字From

Rust 1.41.0将是具有对32位Apple目标的当前编译器支持水平的最新版本

Rust 1.40中的新功能

2019年12月发布的Rust版本1.40包含以下改进和更改:

现在可以允许宏自己生成宏除了可能通过手动代码生成之外这使得使用Rust可以比以前更复杂的元编程现在也可以使用过程宏来定义类型并在extern 块中使用它们并且todo() 可以使用新的宏代替更详细的说明unimplemented()

新的属性#[non_exhaustive]可以让您修饰类型以表明将来可能会有更多字段或其他更改这样可以防止其他代码覆盖该定义或将其用作详尽的模式匹配的一部分这可能会在以后更改类型时意外中断

本来可以在旧借用检查器下编译但在新借用检查器下生成警告的代码现在将产生硬错误这既鼓励清理较旧的Rust代码又使旧的借用检查程序代码完全淘汰

添加了几个新的编译器目标例如使用musl 轻量级标准库的ARM的Thumb-2 Neon(版本7)和MIPS64平台

Rust 1.38中的新功能

Rust 1.38于2019年9月发布包含以下新功能和改进:

货运软件包管理器将通过Rust 1.38自动利用流水线编译使用流水线编译时编译器在编译板条箱时不需要完全构建的依赖项所需的只是它们的元数据例如依赖项类型列表元数据在编译过程的早期产生一些测试表明对于某些条板图的优化清晰构建编译速度可提高10%到20%

减少某些错误用法mem::{unitialized zeroed}在此版本中rustc编译器将使用来为一小类不正确的初始化提供皮棉mem::uninitialized or mem::zeroed

将#[deprecated]属性扩展到宏此属性允许板条箱作者通知用户在以后的发行版中将弃用并删除其板条中的某个项目

开发人员可以std::any::type_name 用来获取类型的名称

稳定多项功能包括<*const T>::cast和<*mutT>::cast

Rust 1.37的新功能

Rust 1.37于2019年8月发布具有以下新功能和改进:

通过引用enum变体的能力type开发人员还可以使用引用enum变体Self::Variant

该cargo vendor命令以前是一个单独的板条箱现在已内置到该语言中该命令获取项目依赖关系将其解压缩到vendor / 目录中并显示在构建过程中使用供应商代码所需的配置代码段

该rustc编译器支持档案导引优化提前-的时间编译器的优化技术通过 -C profile-generate和-C profile-use

开发人员可以创建未命名的const项目

Rust 1.36的新功能

Rust系统编程语言的1.36版已于2019年7月发布Rust1.36包括以下新功能和增强功能:

用于声明异步工作的Future特性现在很稳定现在Rust中的异步操作已经零散地整合了好几个版本async并且await是剩下的最后重要部分

用于管理内存的alloc crate现在很稳定这个箱子收集了依赖于全局内存分配机制(例如)的Rust标准库的所有内容Vec 这样不使用标准库的板条箱仍可以通过分别导入alloc来使用分配器这对于希望代码尺寸尽可能精简的环境很有用

新的类型MaybeUninit 允许您定义可能包含未初始化内存的对象例如延迟分配的数组Rust以前执行此操作的机制是功能mem::uninitialized在随意使用时会造成许多危害MaybeUninit 提供了一种使用Rust的类型系统约束的更安全的方法

非词汇生存期(Rust的最新版本的功能)已被反向移植到早期版本非词汇生存期使Rust的借阅检查机制不那么难以使用(实质上使您可以编写仍然有效的Rust程序)并且能够更好地捕获借阅检查器遗漏的问题

其他改进:

该HashMap 类型的新实现可以更快地运行并且使用更少的内存

现在如果需要货运现在可以完全脱机运行

Rust 1.35的新功能

2019年5月发布的1.35版提供以下功能:

的实施FnOnceFnMut以及Fn关闭性状Box nce=""> Box 和Box

dbg现在可以在不带参数的情况下调用Rust 1.32中引入的宏

Fn *闭包特征现在已针对实施Box

标准库的稳定化

Clippy提供了一组绒毛来捕捉常见错误并添加了lint drop_bounds该绒毛在向T: Drop通用函数添加绑定时被触发

ptr::hash引入了一个功能因此开发人员可以避免对引用的指向值进行哈希处理而可以对地址进行哈希处理

a的值RefCell可以通过闭包替换开发人员可以更符合人体工程学的方式映射和替换单元格的当前值并检索旧值

开发人员现在可以轻松检查范围内是否存在值

对Cargo进行了许多更改例如rustc-cdylib-link-arg为构建脚本添加了一个密钥以指定cdylib包装箱的链接器参数