Rust 1.57.0 发布
Rust 1.57.0 现已发布,该版本为 const contexts 带来了 panic!
,为 Cargo 增加了对自定义配置文件的支持,并稳定了易出错的 reservation API。如果你此前已通过 rustup 安装了以前的 Rust 版本,运行以下命令即可升级至最新版本:
rustup update stable
具体更新内容包括:
panic!
in const contexts
在以前的 Rust 版本中,panic!
macro 在 const fn 和其他 compile-time contexts 中是不能使用的。现在,这一点已经稳定下来了。连同panic!
的稳定,其他几个标准库的 API 现在也可以在 const 中使用,比如assert!
。
这种稳定性还不包括完整的格式化基础结构,因此必须使用静态字符串 (panic!("...")
)或者用单个&str
内插值 (panic!("{}", a)
) 来调用panic!
macro 宏。
预计将来这种支持会扩展,但这种最低限度的稳定性已经支持直接的编译时断言,例如验证类型的大小:
const _: () = assert!(std::mem::size_of::<u64>() == 8); const _: () = assert!(std::mem::size_of::<u8>() == 1);
Cargo support for custom profiles
Cargo 长期以来一直支持四种配置文件:dev
、release、
test
和bench
。在 Rust 1.57 中,增加了对任意命名的配置文件的支持。
例如,如果你想只在最终生产构建时启用链接时间优化(LTO),那么在 Cargo.toml 中添加以下片段,在选择此配置文件时启用 lto flag,但避免在常规发布构建时启用它。
[profile.production] inherits = "release" lto = true
Fallible allocation
Rust 1.57 为Vec
、String
、HashMap
、HashSet
和VecDeque
稳定了try_reserve
。此 API 使调用者能够错误地为这些类型分配 backing storage。
如果全局分配器失败,Rust 通常会中止进程,这并不总是可取的。此 API 提供了一种在使用标准库集合时避免中止的方法。但是,Rust 不保证返回的内存实际上是由内核分配的:例如,如果在 Linux 上启用了 overcommit,则在尝试使用内存时可能无法使用该内存。
稳定的 API
以下方法和特性的实现被稳定化:
[T; N]::as_mut_slice
[T; N]::as_slice
collections::TryReserveError
HashMap::try_reserve
HashSet::try_reserve
String::try_reserve
String::try_reserve_exact
Vec::try_reserve
Vec::try_reserve_exact
VecDeque::try_reserve
VecDeque::try_reserve_exact
Iterator::map_while
iter::MapWhile
proc_macro::is_available
Command::get_program
Command::get_args
Command::get_envs
Command::get_current_dir
CommandArgs
CommandEnvs
以下以前稳定的功能现在是const
。
更多详情可查看官方博客。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Node.js 16.13.1(代号“镓”) 发布,修复正则表达式
Node.js 16.13.1 发布 了,这是一个长期支持版本(LTS),代号为“gallium- 镓”,主要变更如下: 大变化 [c14eb2325d] -deps:将 npm 升级到 8.1.2#40643 [a901b6c53c] -deps:将 c-ares 更新到 1.18.1#40660 此版本包含一个 c-ares 更新,用于修复 Node.js v16.6.2 中引入的“回归解析包含下划线的 CNAME 记录”问题 (#39780)。 [755c08573f] -doc:将 VoltrexMaster 添加到协作者名单 #40566 [881dd7ba2a] -lib:修复正则表达式以检测 `/` 和 `\` #40325 其他变更 [996bc6e840] -benchmark(基准测试):增加加密 DSA 密钥生成参数#40416 [27009092c8] -build:跳过仅 README 修改的长时间运行的操作#40571 [4581997ed0] -build:在 32 位 archs 上禁用 v8 指针压缩#40418 [17433060d4] -build...
- 下一篇
CosId 1.3.19 发布,通用、灵活、高性能的分布式 ID 生成器
CosId 通用、灵活、高性能的分布式ID生成器 更新内容(v1.3.19) 🎉 🎉 🎉 性能优化:使用AtomicLongFieldUpdater替换AtomicLong进一步降低 频繁创建DefaultIdSegmentnew AtomicLong内存分配、GC 压力。(段模式ID生成器) 增强:CacheClock支持响应线程中断信号 支持自定义时区(SnowflakeFriendlyId) 变更SnowflakeFriendlyId.generateAsString默认返回friendlyId 增强:增加号段分发器NextMaxId回滚检测。 简介 CosId 旨在提供通用、灵活、高性能的分布式 ID 生成器。 目前提供了俩类 ID 生成器: SnowflakeId : 单机 TPS 性能:409W/s JMH 基准测试 , 主要解决 时钟回拨问题 、机器号分配问题 并且提供更加友好、灵活的使用体验。 SegmentId: 每次获取一段 (Step) ID,来降低号段分发器的网络IO请求频次提升性能。 IdSegmentDistributor: 号段分发器(号段存储器) ...
相关文章
文章评论
共有0条评论来说两句吧...