当前位置: 首页 > news >正文

2510rs,rust,1.84

原文

1.84.0稳定版中有什么

Cargo考虑Rust版本来选择依赖版本

1.84.0稳定了最低支持的Rust版本(MSRV)的更喜欢与项目声明的MSRV兼容的依赖版本的相关解析器.

通过MSRV相关版本选择,维护者无需为每个依赖手动选择旧版本,从而减少了支持旧工具链工作量.

可通过.cargo/config.toml选入MSRV相关解析器:

[resolver]
incompatiblerustversions = "fallback"

然后,在添加依赖时:

$ cargo add clap

在验证CI中的最新依赖时,可覆盖以下内容:

$ CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS=allow cargo update

也可通过在Cargo.toml清单文件中,设置package.resolver="3"来选入,但这需要将MSRV提高到1.84.对使用2024版本(将在1.85中稳定下来)的项目,将默认启用新的解析器.

这给库作者在决定采取新的Rust工具链功能的策略时,提供了更大的灵活性.

以前,采取新Rust工具链功能的库,会强制拥有旧Rust版本的该库的下游用户,升级他们的工具链或手动选择与其工具链兼容的旧版本的库(并避免运行cargo update).

现在,这些用户将可自动使用与其旧工具链兼容的旧库版本.

有关决定MSRV策略时的更多注意,见文档.

开始迁移新的特征求解器

Rust编译器正在为特征求解器,迁移到新实现.下一代特征求解器是对Rust类型系统核心组件重新实现.
它不仅负责检查特征边界(如Vec<T>:Clone)是否成立,而且类型系统的许多其他部分还使用它,如规范化,找出<Vec<T>as IntoIterator>::Item底层类型等价类型(检查T和U是否相同).

1.84中,用新的求解器来检查特征实现一致性.在高层次上,一致性负责确保对给定类型的特征最多有一个实现,同时考虑其他尚未编写或可见的代码.

该稳定化修复了旧实现的一些主要是理论上的正确性问题,导致潜在的以前未报告的"特征的冲突实现…"的错误.

根据求值Crater可用代码,期望受影响的模式会很少.稳定版还提高了证明实现不覆盖的能力,允许有时编写更多代码.
更多细节,见之前的博客文章和稳定报告.
这里
这里

严格的源API

Rust中,指针不仅是一个"整数"或"地址".如,即使你"幸运"且在读/写释放的内存之前再分配了它,"释放后使用"也是未定义行为.

再举一例,即使通过不同指针写入同一地址是合法的,通过从&i32引用继承的指针写入未定义行为.这里的底层模式是,指针的计算方式很重要,而不仅是计算产生的地址.

因此,说指针是有出处的:要完全表征Rust中与指针相关的未定义行为,不仅必须知道指针指向的地址,还必须跟踪它从哪些其他指针"继承".

一般,不需要太担心出处,如何继承指针非常清楚的.但是,当来回在整数转换指针时,则低估了生成的指针的出处.

在此版本中,Rust添加了一组API,这些API在许多时候可替换整数指针转换的使用,从而避免此类转换固有的歧义.

特别是,现在可无需按整数来回转换指针,实现使用对齐指针的最低位来存储额外信息的模式.这使得代码更容易分析,编译器更容易分析,且还有利于Miri等工具和CHERI等架构为了检测和诊断指针误用.

更多细节,见有关出处的标准库文档,这里.

稳定的API

Ipv6Addr::is_unique_local
Ipv6Addr::is_unicast_link_local
core::ptr::with_exposed_provenance
core::ptr::with_exposed_provenance_mut
<ptr>::addr
<ptr>::expose_provenance
<ptr>::with_addr
<ptr>::map_addr
<int>::isqrt
<int>::checked_isqrt
<uint>::isqrt
NonZero::isqrt
core::ptr::without_provenance
core::ptr::without_provenance_mut
core::ptr::dangling
core::ptr::dangling_mut
Pin::as_deref_mut

如下在常环境下已稳定:

AtomicBool::from_ptr
AtomicPtr::from_ptr
AtomicU8::from_ptr
AtomicU16::from_ptr
AtomicU32::from_ptr
AtomicU64::from_ptr
AtomicUsize::from_ptr
AtomicI8::from_ptr
AtomicI16::from_ptr
AtomicI32::from_ptr
AtomicI64::from_ptr
AtomicIsize::from_ptr
<ptr>::is_null
<ptr>::as_ref
<ptr>::as_mut
Pin::new
Pin::new_unchecked
Pin::get_ref
Pin::into_ref
Pin::get_mut
Pin::get_unchecked_mut
Pin::static_ref
Pin::static_mut
http://www.dtcms.com/a/516855.html

相关文章:

  • 商务网站建设期末作业中国建设部门官方网站
  • 有哪些网站可以做ps挣钱青海培训网站建设公司
  • 网站建设大作业提交要求视频网站移动端
  • 【Python】uv包管理器常用命令
  • CSS基础语法
  • transformer多头注意力机制代码详解
  • 湖北随州市城乡建设官方网站h5网页制作视频教程
  • 俄文网站引擎wordpress收费主题破解
  • 大型门户网站开发方案百度指数移动版app
  • YOLOv9:重构实时目标检测的技术革命
  • 广东建设报网站深圳外贸公司排行
  • 乌克兰服装网站建设一个网站的预算
  • wordpress安装后只显示英文站北京网络安全公司排名
  • 网站开发拓扑图电话销售系统
  • 学做川菜下什么网站西部空间怎样上传网站
  • Andrej Karpathy 演讲【PyTorch at Tesla】
  • 母婴的网站建设郑州网站建设公司谷雨
  • 柳州网站建设psn118做直播教程的网站
  • 表示微调(ReFT)
  • Redis黑马 day01
  • 如何实现两台虚拟机之间的时间同步
  • 数据库接口之防止sql注入
  • Linux下搭建Activemq的Master-Slave(共享文件模式)
  • 做网站一定需要自己买主机吗wordpress 三款站群插件之比较
  • 数据结构——拓扑排序
  • 常用网站png手机商城官方网站
  • 网站开发的经验技巧网站建设实训该写哪些内容
  • 响应式网站开发 三合一建站做网站推广一般多少钱
  • P1041题解
  • 大语言模型本地部署之转录文本总结