Rust 1.70.0 发布

这篇具有很好参考价值的文章主要介绍了Rust 1.70.0 发布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

Rust 1.70.0 发布

如果你通过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

 文章来源地址https://www.toymoban.com/news/detail-501619.html

到了这里,关于Rust 1.70.0 发布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正式发布丨VS Code 1.70

    欢迎使用 2022 年 7 月版的 Visual Studio Code,其中一些主要亮点为您列举如下。 对于那些使用自定义标题栏(Windows、macOS 和 Web 上的默认设置)的用户,您可能已经注意到我们正在向标题栏引入更多交互式内容。虽然已经有单独隐藏这些元素的设置,但您现在可以右键单击标题

    2024年02月06日
    浏览(38)
  • 文盘Rust——起手式,CLI程序 | 京东云技术团队

    技术的学习从不会到会的过程是最有意思的,也是体会最多的。一旦熟练了,知识变成了常识,可能就失去了记录学习过程的最佳时机。 在我看来学习一门计算机语言和学习人类语言有很多共通之处。我们学习人类语言是从单个的词开始,然后是简单句子,通过不断的与他人

    2024年02月09日
    浏览(28)
  • 文盘Rust——子命令提示,提高用户体验 | 京东云技术团队

    上次我们聊到 CLI 的领域交互模式。在领域交互模式中,可能存在多层次的子命令。在使用过程中如果全评记忆的话,命令少还好,多了真心记不住。频繁 --help 也是个很麻烦的事情。如果每次按 ‘tab’ 键就可以提示或补齐命令是不是很方便呢。这一节我们就来说说 ‘autoc

    2024年02月09日
    浏览(32)
  • 文盘Rust -- 给程序加个日志 | 京东云技术团队

    日志是应用程序的重要组成部分。无论是服务端程序还是客户端程序都需要日志做为错误输出或者业务记录。在这篇文章中,我们结合log4rs聊聊rust 程序中如何使用日志。 log4rs类似java生态中的log4j,使用方式也很相似 log4rs 的功能组件也由 appender 和 logger构成。 appender 负责向指

    2024年02月09日
    浏览(31)
  • 最强开源中英双语大模型发布,340亿参数超越Llama2-70B !

        Aquila2模型全系开源地址: https://github.com/FlagAI-Open/Aquila2 https://model.baai.ac.cn/ https://huggingface.co/BAAI Aquila2-34B在代码生成、考试、理解、推理、语言四个维度的22个评测基准上,霸占了多个榜单TOP 1。  相较于大模型榜单分数,业内更看重对推理、泛化等重要模型实际能力的

    2024年01月24日
    浏览(52)
  • 文盘Rust -- 生命周期问题引发的 static hashmap 锁 | 京东云技术团队

    2021年上半年,撸了个rust cli开发的框架,基本上把交互模式,子命令提示这些cli该有的常用功能做进去了。项目地址:https://github.com/jiashiwen/interactcli-rs。 春节以前看到axum已经0.4.x了,于是想看看能不能用rust做个服务端的框架。 春节后开始动手,在做的过程中会碰到各种有趣

    2024年02月09日
    浏览(36)
  • 用Rust生成Ant-Design Table Columns | 京东云技术团队

    经常开发表格,是不是已经被手写Ant-Design Table的Columns整烦了? 尤其是ToB项目,表格经常动不动就几十列。每次照着后端给的接口文档一个个配置,太头疼了,主要是有时还会粘错就尴尬了。 那有没有办法能自动生成columns配置呢? 当然可以。 目前后端的接口文档一般是使用

    2024年02月15日
    浏览(32)
  • Rust 最新版1.75.0升级记

    当前版本号1.70.0 升级稳定版,需要用上参数  stable C: rustup update stable info: syncing channel updates for \\\'stable-x86_64-pc-windows-msvc\\\' info: latest update on 2023-12-28, rust version 1.75.0 (82e1608df 2023-12-21) info: downloading component \\\'cargo\\\'   5.9 MiB /   5.9 MiB (100 %)   3.7 MiB/s in  1s ETA:  0s info: downloading compon

    2024年01月16日
    浏览(96)
  • Moonbeam团队发布针对整数截断漏洞的紧急安全修复

    2022年6月27日,Moonriver和Moonbeam都通过Runtime 1606进行了紧急升级,成功解决当天早上(美国东部时间)由独立白帽黑客披露的一项安全问题。该安全问题现已修复,且不再被任一网络利用。初步迹象表明,该漏洞从未被利用,但团队仍将继续展开调查。 为了防止漏洞被恶意利用

    2023年04月17日
    浏览(36)
  • 你家的孩子是这样你是会崩溃还是会高兴?

    由于目前公司是做教学平台的,偶尔会和一些老师针对性的讨论学习一下数学题; 通过一个数学题,第一关.考验初中数学是否过关 第二关.验证是否有科学思维 第三关.与后续自己的编程结合(逻辑能力呢想象能力),无限思维; 如果你家初中毕业的孩子做了下面这道题,做题

    2024年01月22日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包