Rust 的自动内存管理消除了操作指针时的错误,并防止低级内存操作引起的问题,例如在释放内存区域后访问它、空指针取消引用、缓冲区溢出等。 正在开发一个包管理器来分发库、确保组装并管理项目的依赖关系。
在新版本的公告文本中,Rust 开发者涉足政治,并尖锐地拒绝发布对 Rust 1.44 变化的全面审查,以此作为声援抗议者反对警察暴力的标志,表明这个问题更加重要而不是技术知识的交流。 基本的
- Cargo 包管理器集成了“cargo tree”命令,该命令显示树状依赖关系图。 还添加了选项“—duplicates”(“cargo tree -d”),它允许您评估同一包的不同版本中的依赖关系。
mdbook v0.3.2 (/Users/src/rust/mdbook)
├── 氨v3.0.0
│ ├── html5ever v0.24.0
│ │ ├── 日志 v0.4.8
│ │ │ └── cfg-if v0.1.9
│ │ ├── mac v0.1.1
│ │ └── markup5ever v0.9.0
│ │ ├── 日志 v0.4.8 (*)
│ │ ├── phf v0.7.24
│ │ │ └── phf_shared v0.7.24
│ │ │ ├── siphasher v0.2.3
│ │ │ └── unicase v1.4.2
│ │ │ [构建依赖项] │ │ │ └── version_check v0.1.5
... - 对于未绑定到 std(“#![no_std]”)的应用程序,基于“async”函数、async move { ... } 块和“.await”运算符实现对异步编程技术的支持,这简化非阻塞处理程序主命令流程的编写。
- 解析器中添加了对可扩展模块层次结构定义方案的支持。 例如,以下构造不会产生错误,尽管实际上缺少模块“foo/bar/baz.rs”(该构造在语义上仍然无效并且可能会导致错误,但可以在以下位置查看和解析更改:宏和条件编译级别):
#[cfg(FALSE)] mod foo {
模组栏{
模组巴兹;
}
} - rustc 编译器添加了在增量模式下使用“-C codegen-units”标志的功能。 catch_unwind 的实现已被重新设计,因此如果禁用展开过程并且不引发异常,则不会对性能产生影响。
- 已为 aarch64-unknown-none、aarch64-unknown-none-softfloat、arm64-apple-tvos 和 x86_64-apple-tvos 平台提供 XNUMX 级支持。 第三级涉及基本支持,但没有自动化测试和官方版本的发布。
- 新的部分 API 已转移到稳定类别,包括稳定的
PathBuf::with_capacity,
PathBuf::容量,
PathBuf::清除,
PathBuf::保留,
PathBuf::reserve_exact,
PathBuf::shrink_to_fit,
{f32|f64}::to_int_unchecked,
布局::align_to,
布局::pad_to_align,
布局::数组和
布局::扩展。 - 标准库的扩展功能:
- 添加了一个特殊的“vec![]”变体,该变体直接反映在 Vec::new() 中,允许在上下文中使用“vec![]”而不是常量。
- 该特征的实现(impl)已添加到convert::Infallible
哈希 . - OsString实现智能指针
德雷夫穆特 и索引突变 ,返回“&mut OsStr”。 - 添加了对 Unicode 13 的支持。
- 在字符串中实现
来自<&mut str> . - IoSlice 实现了该特征
复制 . - 向量实施自<[T; N]>。
- proc_macro::LexError 实现 fmt::Display 和 Error。
- “const”属性决定是否可以在任何上下文中使用它来代替常量,该属性在所有整数类型的 from_le_bytes、to_le_bytes、from_be_bytes、to_be_bytes、from_ne_bytes 和 to_ne_bytes 方法中使用。
- 添加了对为 Windows 上的 GNU 平台生成“.a”格式而不是“.lib”格式的静态库的支持。
- LLVM 的最低要求已提高到 LLVM 版本 8。
来源: opennet.ru