Rust 1.44 编程语言发布

发表 系统编程语言发布 锈1.44,由 Mozilla 项目创建。 该语言专注于内存安全,提供自动内存管理,并提供在不使用垃圾收集器和 运行.

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

添加评论