Rust 的自动内存管理消除了操作指针时的错误,并防止低级内存操作引起的问题,例如在释放内存区域后访问它、空指针取消引用、缓冲区溢出等。 正在开发一个包管理器来分发库、确保组装并管理项目的依赖关系。
主
- 实现了对类型的支持
数组 任何尺寸。 以前,由于无法为所有整数值定义泛型函数,标准库仅针对大小最多为 32 个元素的数组提供内置特征支持(每个大小的特征都是静态定义的)。 由于常量泛型(“const generics”)功能的创建,为任何数组大小定义泛型函数成为可能,但它们尚未包含在稳定语言功能中,尽管它们在编译器中实现并且是现在涉及 在标准库中任何大小的数组特征。例如,Rust 1.47 中的以下构造将打印数组的内容,尽管以前它会导致错误:
fn 主(){
让 xs = [0; 34];println!("{:?}", xs);
} - 提供较短跟踪(回溯)的输出,紧急情况下的输出。 在大多数情况下,不感兴趣的元素会扰乱输出并分散对问题主要原因的注意力,这些元素会从跟踪中排除。 要返回完整跟踪,您可以使用环境变量“RUST_BACKTRACE=full”。 例如,对于代码
fn 主(){
恐慌!();
}以前,迹线分 23 个阶段输出,但现在将减少为
3步让你立即领会本质:线程“main”因“显式恐慌”而恐慌,src/main.rs:2:5
堆栈回溯:
0: std::恐慌::begin_panic
在/rustc/d…d75a/library/std/src/panicking.rs:497
1:游乐场::主要
在 ./src/main.rs:2
2:核心::操作::函数::FnOnce::call_once
在/rustc/d…d75a/library/core/src/ops/function.rs:227 - rustc 编译器已更新为使用
LLVM 11 (锈使用 LLVM 作为后端代码生成 )。 同时,保留了使用旧版 LLVM(最高版本 8)进行构建的能力,但默认情况下(在rust-lang/llvm-项目 )现在正在使用 LLVM 11。LLVM 11 预计将在未来几天内发布。 - 在 Windows 平台上,rustc 编译器提供对启用控制流完整性检查(Control Flow Guard)的支持,使用“-C control-flow-guard”标志激活。 在其他平台上,此标志暂时被忽略。
- 新的部分 API 已转移到稳定类别,包括稳定的
识别::new_raw,
范围::is_empty,
范围包含::is_empty,
结果::as_deref,
结果::as_deref_mut,
向量::泄漏,
指针::offset_from,
f32::TAU 和
f64::TAU。 - “const”属性决定了在任何上下文中使用它而不是常量的可能性,在方法中使用:
- 对于除零之外的所有整数都是新的;
- 所有整数的checked_add、checked_sub、checked_mul、checked_neg、checked_shl、checked_shr、saturating_add、saturating_sub 和 saturating_mul;
- is_ascii_alphabetic、is_ascii_uppercase、is_ascii_lowercase、is_ascii_alphanumeric、is_ascii_digit、is_ascii_hexdigit、is_ascii_punctuation、is_ascii_graphic、is_ascii_whitespace 和 is_ascii_control 用于 char 和 u8 类型。
- 对于 FreeBSD
涉及 FreeBSD 11.4 的工具包(FreeBSD 10 不支持 LLVM 11)。
来源: opennet.ru