Rust 1.28 发布,系统内存分配器可自由选择

栏目: 编程语言 · Rust · 发布时间: 6年前

内容简介:Rust 1.28 发布了,Rust 是一种专注于安全性、速度和并发性的系统编程语言。1.28 版本值得关注的几个点是:分配器是 Rust 中的程序在运行时从系统获取内存的方式。之前 Rust 不允许改变获取内存的方式,这会导致一些问题,在某些平台上 Rust 程序的默认分配器是 jemalloc,而在其它平台则是使用系统分配器,而用户对此无法进行选择。在1.28 中 #[global_allocator] 属性现在是稳定的,这允许 Rust 程序将其分配器设置为系统分配器,以及通过实现 GlobalAl

Rust 1.28 发布了,Rust 是一种专注于安全性、速度和并发性的系统编程语言。

1.28 版本值得关注的几个点是:

  • 分配器可控

  • 改进了格式化的错误消息

  • NonZero 数字类型的稳定性

  • Cargo 特性变更

分配器可控

分配器是 Rust 中的程序在运行时从系统获取内存的方式。之前 Rust 不允许改变获取内存的方式,这会导致一些问题,在某些平台上 Rust 程序的默认分配器是 jemalloc,而在其它平台则是使用系统分配器,而用户对此无法进行选择。在1.28 中 #[global_allocator] 属性现在是稳定的,这允许 Rust 程序将其分配器设置为系统分配器,以及通过实现 GlobalAlloc 特性来定义新的分配器。

用法如下:

use std::alloc::System;

#[global_allocator]
static GLOBAL: System = System;

fn main() {
    let mut v = Vec::new();
    // This will allocate memory using the system allocator.
    v.push(1);
}

改进了格式化的错误消息

以下边这个语句为例:

format!("{_foo}", _foo = 6usize);

以往,这里发出的错误消息相对简单:

error: invalid format string: expected `'}'`, found `'_'`
  |
2 |     format!("{_foo}", _foo = 6usize);
  |             ^^^^^^^^

现在会发出一个诊断信息,显示格式字符串无效的具体原因:

error: invalid format string: invalid argument name `_foo`
  |
2 |     let _ = format!("{_foo}", _foo = 6usize);
  |                       ^^^^ invalid argument name in format string
  |
  = note: argument names cannot start with an underscore

NonZero 数字类型的稳定性

除了 GlobalAlloc 特性的稳定性,另一个重要的稳定性是 NonZero 数字类型。这些是标准无符号整数类型的封装:NonZeroU8、NonZeroU16、NonZeroU32、NonZeroU64、NonZeroU128 和 NonZeroUsize。

这允许进行大小调整,例如 Option <u8> 是 2 个字节,但 Option <NonZeroU8> 只有 1 个字节。需要注意的是,即使 NonZeroU8 包含在另一个结构中,此调整仍然有效。下面的示例说明尽管将 Door 放在 Option 中,但它仍然是 1 字节。

use std::mem;
use std::num::NonZeroU8;

struct Key(NonZeroU8);

struct Door {
    key: Key,
}

fn main() {
    assert_eq!(mem::size_of::<Door>(), 1);
    assert_eq!(mem::size_of::<Option<Door>>(), 1);
}

Cargo 特性变更

Cargo 现在不再允许使用构建脚本发布修改 src 目录的包,应该将包中的 src 目录视为不可变的。

详情见 发布公告 与具体 更新日志

下载地址:


以上所述就是小编给大家介绍的《Rust 1.28 发布,系统内存分配器可自由选择》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Effective C# 中文版

Effective C# 中文版

Bill Wagner / 李建忠 / 人民邮电出版社 / 2007-5 / 49.00元

本书围绕一些关于C#和.NET的重要主题,包括C#语言元素、.NET资源管理、使用C#表达设计、创建二进制组件和使用框架等,讲述了最常见的50个问题的解决方案,为程序员提供了改善C#和.NET程序的方法。本书通过将每个条款构建在之前的条款之上,并合理地利用之前的条款,来让读者最大限度地学习书中的内容,为其在不同情况下使用最佳构造提供指导。 本书适合各层次的C#程序员阅读,同时可以推荐给高校教......一起来看看 《Effective C# 中文版》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具