Rust 1.70.0 发布

news2024/11/27 2:15:29
导读Rust团队很高兴地宣布新版本的Rust,1.70.0。Rust是一种编程语言,使每个人都能建立可靠和高效的软件。

如果你通过rustup安装了以前的Rust版本,你可以用1.70.0获得:

rustup update stable

如果你还没有,你可以从我们网站上的相应页面获得rustup,并在GitHub上查看1.70.0的详细发布说明。

如果你想通过测试未来的版本来帮助我们,你可以考虑在本地更新,使用beta通道(rustup默认beta)或nightly通道(rustup默认nightly)。请报告你可能遇到的任何bug!

1.70.0稳定版中的内容

crates.io默认为稀疏状态

Cargo的 “稀疏 “协议现在默认启用,用于从crates.io读取索引。这个功能之前在Rust 1.68.0中已经稳定了,但仍然需要配置才能在crates.io中使用该功能。宣布的计划是在1.70.0中把它变成默认的,现在就是这样了

当你从 crates.io 索引中获取信息时,你应该看到性能的大幅提升。在限制性防火墙后面的用户将需要确保可以访问https://index.crates.io。如果由于某些原因,你需要保持以前的默认状态,即使用GitHub托管的git索引,可以使用registries.crates-io.protocol配置设置来改变默认状态。

需要注意的是,改变访问方式的一个副作用是,这也会改变板块缓存的路径,所以依赖性会被重新下载。一旦你完全承诺使用稀疏协议,你可能想清除旧的$CARGO_HOME/registry/*/github.com-*路径。

OnceCell和OnceLock

两个新的类型已经稳定下来,用于共享数据的一次性初始化,即OnceCell和其线程安全的对应类型OnceLock。这两种类型可以用在不希望立即构建的地方,甚至不可能像全局变量中的非const数据那样。

use std::sync::OnceLock;

static WINNER: OnceLock<&str> = OnceLock::new();

fn main() {
    let winner = std::thread::scope(|s| {
        s.spawn(|| WINNER.set("thread"));

        std::thread::yield_now(); // give them a chance...

        WINNER.get_or_init(|| "main")
    });

    println!("{winner} wins!");
}

在过去,像lazy_static和once_cell这样的板块已经满足了这个需求,但现在这些板块已经成为标准库的一部分,从once_cell的unsync和sync模块移植过来。未来还有更多的方法可能会被稳定化,以及存储其初始化函数的同伴LazyCell和LazyLock类型,但这稳定化的第一步应该已经涵盖了许多用例。

IsTerminal

这个新稳定的特性有一个方法,is_terminal,用来确定一个给定的文件描述符或句柄是否代表一个终端或TTY。这是标准化功能的另一个案例,这些功能存在于外部板块,如atty和is-terminal,在Unix目标上使用C库的isatty函数,在其他地方使用类似的功能。一个常见的用例是让程序区分在脚本或交互式模式下运行,比如在交互式模式下呈现颜色,甚至是一个完整的TUI。

use std::io::{stdout, IsTerminal};

fn main() {
    let use_color = stdout().is_terminal();
    // if so, add color codes to program output...
}

调试信息的命名级别

以前,-Cdebuginfo编译器选项只支持数字0…=2来增加调试信息量,Cargo在开发和测试配置文件中默认为2,在发布和基准配置文件中默认为0。现在,这些调试级别可以通过名称来设置:”无”(0)、”有限”(1)和 “完全”(2),以及两个新的级别,”仅行指令 “和 “仅行表”。

Cargo 和 rustc 文档以前都称第 1 级为 “仅行表”,但它不止有所有函数的信息,只是没有类型和变量。这个级别现在被称为 “有限”,而新的 “仅行表 “级别被进一步缩减为带文件名和行号的回溯所需的最小值。这可能最终成为用于-Cdebuginfo=1的级别。另一个 “仅行指令 “级别是为NVPTX剖析准备的,除此之外不推荐使用。

注意,这些命名的选项还不能通过Cargo.toml使用。对它的支持将在下一个1.71版本中提供。

测试CLI中的强制稳定性

当#[test]函数被编译时,可执行文件会从test crate获得一个命令行界面。这个CLI有很多选项,包括一些尚未稳定的选项,也需要指定-Zunstable-options,就像Rust工具链中的许多其他命令一样。然而,虽然这只打算在夜间构建中允许,但这个限制在测试中并不活跃–直到现在。从1.70.0开始,Rust的稳定版和测试版将不再允许不稳定的测试选项,从而使它们真正成为文件规定的只在夜间使用的版本。

在一些已知的案例中,不稳定的选项可能在用户不知情的情况下被使用,特别是在IntelliJ Rust和其他IDE插件中使用的–format json。这些项目已经在适应这一变化,JSON输出的状态可以在其跟踪问题中得到关注。

稳定的API

  • NonZero*::MIN/MAX
  • BinaryHeap::retain
  • Default for std::collections::binary_heap::IntoIter
  • Default for std::collections::btree_map::{IntoIter, Iter, IterMut}
  • Default for std::collections::btree_map::{IntoKeys, Keys}
  • Default for std::collections::btree_map::{IntoValues, Values}
  • Default for std::collections::btree_map::Range
  • Default for std::collections::btree_set::{IntoIter, Iter}
  • Default for std::collections::btree_set::Range
  • Default for std::collections::linked_list::{IntoIter, Iter, IterMut}
  • Default for std::vec::IntoIter
  • Default for std::iter::Chain
  • Default for std::iter::Cloned
  • Default for std::iter::Copied
  • Default for std::iter::Enumerate
  • Default for std::iter::Flatten
  • Default for std::iter::Fuse
  • Default for std::iter::Rev
  • Default for std::slice::Iter
  • Default for std::slice::IterMut
  • Rc::into_inner
  • Arc::into_inner
  • std::cell::OnceCell
  • Option::is_some_and
  • NonNull::slice_from_raw_parts
  • Result::is_ok_and
  • Result::is_err_and
  • std::sync::atomic::Atomic*::as_ptr
  • std::io::IsTerminal
  • std::os::linux::net::SocketAddrExt
  • std::os::unix::net::UnixDatagram::bind_addr
  • std::os::unix::net::UnixDatagram::connect_addr
  • std::os::unix::net::UnixDatagram::send_to_addr
  • std::os::unix::net::UnixListener::bind_addr
  • std::path::Path::as_mut_os_str
  • std::sync::OnceLock

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次 .NET 某旅行社审批系统 崩溃分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他的程序跑着跑着就崩溃了&#xff0c;让我看下怎么回事&#xff0c;其实没怎么回事&#xff0c;抓它的 crash dump 就好&#xff0c;具体怎么抓也是被问到的一个高频问题&#xff0c;这里再补一下链接&…

【Python 随练】求和序列

题目&#xff1a; 求 saaaaaaaaaaaa…a 的值&#xff0c;其中 a 是一个数字。 例如 222222222222222(此时共有 5 个数相加)&#xff0c;几个数相加有键盘控制。 简介&#xff1a; 在本篇博客中&#xff0c;我们将解决一个求和问题&#xff1a;给定一个数字 a&#xff0c;求…

基于msm8953调试CST226SE触摸TP

目录 1、事件驱动和设备挂载 2、adb调试节点 3、修改设备树地址 4、修改驱动地址 5、修改firmware固件参数 我们总是习惯不断的搜索&#xff0c;阅读前人总结和分享的经验&#xff0c;在不断尝试中进步&#xff0c;如果没有大家的分享经验&#xff0c;学习和探索的过程将是多么…

基于Flask+Bootstrap+机器学习的世界杯比赛预测系统

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

云原生安全 - 构建强大的安全基石保障现代化应用

导言&#xff1a; 随着云原生技术的兴起和广泛应用&#xff0c;越来越多的企业将其应用于现代化应用开发和部署。然而&#xff0c;随之而来的安全威胁也随之增加。在这篇文章中&#xff0c;我们将探讨云原生安全的重要性&#xff0c;以及如何构建强大的安全基石来保障现代化应…

hdfs的透明加密记录

1、背景 我们知道&#xff0c;在hdfs中&#xff0c;我们的数据是以block块存储在我们的磁盘上的&#xff0c;那么默认情况下&#xff0c;它是以密文存储的&#xff0c;还是以明文存储的呢&#xff1f;如果是明文存储的&#xff0c;那么是否就不安全呢&#xff1f;那么在hdfs中…

python3 爬虫相关学习10:RE 库/ regex /regular experssion正则表达式学习

目录 1 关于&#xff1a;re / regex / regular expression 1.1 什么是正则表达式 1.2 在python中安装正则模块 1.2.1 python里一般都默认安装了 re正则模块&#xff0c;可以先查看确认下 1.2.2 如果没有安装&#xff0c;可以按照正则库regex, pip install regex 1.3 …

基于PHP的学生管理系统

前言 基于PHP的学生管理系统&#xff1b; 实现 登录、注册、学生信息、修改学生、删除学生、查询学生、添加学生等功能 &#xff1b; 环境准备 开发平台&#xff1a;PhpStrom2022.1.2 、Phpstudy_pro 数据库&#xff1a;MySQL5.7.26 技术架构 Bootstrap PHP7.3.4html5css3 项目…

SpringBoot中配置Https入门

一、生成一个https证书 我们使用Java自带的JDK管理工具keytool来生成一个免费的https证书&#xff0c;在我们的Java安装目录下&#xff0c;在bin目录下我们使用cmd启动命令行窗口,执行如下命令生成一个https证书。 keytool -genkey -alias myhttps -keyalg RSA -keysize 2048…

计算机网络 01 IP协议

01.IP协议&#xff0c;也就是IP报文。 宏观&#xff1a; 首部长度&#xff1a;由于固定部分是20B&#xff0c;所以数值最小是5。 02.IP报文&#xff0c;中的IP地址&#xff0c;常见的是IPV4&#xff0c;也就是四个字节&#xff0c;32位。 常见的IP地址有三种&#xff1a; 第一…

在 Python 中使用requests模块发布表单数据

文章目录 使用 requests 模块在 Python 中发布表单数据POST请求方式介绍在 Python 中安装 requests 模块post() 方法的应用 本篇文章介绍了 Python requests 模块&#xff0c;并说明了我们如何使用该模块在 Python 中发布表单数据。 使用 requests 模块在 Python 中发布表单数据…

由浅入深,详解ViewModel那些事

前言&#xff1a;今年的龙舟雨来了&#xff0c;一场接一场&#xff0c;雨量很大。 前言 以往如果需要在 Activity 或者 Fragment 中保存数据状态则需要重写onSaveInstanceState &#xff0c;使用bundle去存储相应的数据和状态&#xff0c;但是这也只能保存轻量简单的序列化数据…

【STM32】软件I2C

【STM32】软件I2C I2C简介 I2C总线是一种串行、半双工的总线&#xff0c;主要用于近距离、低速的芯片之间的通信。I2C总线有两根双向的信号线&#xff0c;一根数据线SDA用于收发数据&#xff0c;一根时钟线SCL用于通信双方时钟的同步。 在一个i2c通讯总线中&#xff0c;可连接…

怎么显示文件后缀名?查看文件后缀名可以这样做!

案例&#xff1a;在我的电脑上&#xff0c;看不到文件的后缀名&#xff0c;这会导致命名时出现重复文件后缀的情况&#xff0c;给我带来了不好的体验。怎么才能看到文件的后缀名呢&#xff1f;如何操作&#xff1f; 在日常使用电脑的过程中&#xff0c;我们经常需要查看文件的…

实习记录(二)Java常用工具库

一.Lombok 1.背景概述 Lombok是一个非常高效的专用于Java的自动构建插件库&#xff0c;其简化了 JavaBean 的编写&#xff0c;避免了冗余和样板式代码的出现&#xff0c;让编写的类更加简洁明了&#xff0c;可以帮助大家节省很多重复低效的代码编写。比如重复性的Setter、Gett…

【c语言】五道经典练习题④

目录 ①、年月日经过n天后的日期 ②、坐标排序 ③、统计文件中出现某个单词的次数 ④、输出含for的行 ⑤、比较两个文本是否相等 ①、年月日经过n天后的日期 题述&#xff1a;定义包含年月日表示的日期的结构体&#xff0c;写程序实现计算某年某月某日过n天后的日期是哪年…

肠道细菌阻碍阿卡波糖的降血糖作用

我们知道&#xff0c;口服抗糖尿病药是治疗糖尿病的有效方式之一。然而&#xff0c;患者对抗糖尿病药的反应程度各不相同&#xff0c;例如&#xff0c;有些患者在长期使用阿卡波糖后会产生耐药性。 阿卡波糖通常在饭前口服。它抑制人α-葡萄糖苷酶达到降血糖作用&#xff0c;包…

GWO-VMD-近似熵-极限学习机的轴承故障诊断软件,以西储大学轴承数据为例,采用MATLABAPP开发

采用灰狼算法优化VMD两个参数&#xff0c;以包络熵为最小适应度值&#xff0c;在最佳参数下提取采用近似熵指标提取西储大学轴承数据的特征向量&#xff0c;最后选用极限学习机ELM进行故障诊断。将以上程序集成在MATLABAPP进行开发。 首先是这个软件的各个界面展示。 软件启动…

云安全技术(四)之云计算安全的设计原则

计算安全的设计原则 Understand Design Principles of Secure Cloud Computing 1.1 云安全数据生命周期 Cloud secure data lifecycle 数据始终是安全保护的首要问题。必须深刻了解数据生命周期&#xff0c;以便正确制定和遵守安全策略&#xff0c;把握正确的步骤顺序&#xf…

万博智云与品高股份完成产品兼容性互认证,持续助力国产化生态建设

近日&#xff0c;万博智云的HyperBDR云容灾软件与广州市品高股份有限公司&#xff08;简称&#xff1a;品高股份&#xff09;旗下产品品高基础架构云资源管理软件V9.0完成了产品兼容性认证。 经万博智云和品高云双方人员的共同测试&#xff0c;得出结论&#xff1a; HyperBDR…