Rust 1.40 编程语言发布

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

Rust 的自动内存管理使开发人员免于指针操作,并防止低级内存操作引起的问题,例如释放后内存访问、空指针取消引用、缓冲区溢出等。 正在开发一个包管理器来分发库、确保组装并管理项目的依赖关系。 货物,让您一键获取程序所需的库。 支持存储库来托管库 箱子.

创新:

  • 添加了使用属性“标记结构(struct)和枚举(带有 Variant 块的枚举)的功能”#[非详尽的]“, 哪个 它允许 将来,向声明的结构和枚举添加新的字段和选项。 例如,具有公开声明字段的结构的模块开发人员可以使用“#[non_exhaustive]”来标记将来可能添加新字段的结构。 到目前为止,在这种情况下,开发人员被迫在私有声明字段和绑定到不可变字段列表之间做出选择。 新属性消除了此限制,并允许您将来添加新字段,而无需担心破坏先前编译的外部代码的风险。 在 crate 包中,当匹配“match”部分中的选项时,需要显式定义掩码“_ => {...}”,覆盖未来可能的字段,否则在添加新字段时会显示错误。
  • 添加者 在类型上下文中调用过程宏 mac!() 的能力。 例如,如果“expand_to_type”是一个过程宏,您现在可以编写“type Foo = Expand_to_type!(bar);”。
  • 在“extern { ... }”块中 添加 使用过程宏和属性宏的能力,包括“bang!()”宏,例如:

    宏规则! make_item { ($name:ident) => { fn $name(); } } }

    外部{
    make_item!(阿尔法);
    make_item!(测试版);
    }

    外部“C”{
    #[my_identity_macro] fn foo();
    }

  • 在宏中 实施的 能够生成“macro_rules!”元素。 生成“macro_rules!” 可以在类似函数的宏(“mac!()”)和属性形式的宏(“#[mac]”)中使用。
  • 在 $m:meta 映射元素中 添加 支持任意令牌枚举值(“[TOKEN_STREAM]”、“{TOKEN_STREAM}”和“(TOKEN_STREAM)”),例如:

    宏规则! Accept_meta { ($m:meta) => {} }
    Accept_meta!( 我的::路径 );
    Accept_meta!( my::path = "lit" );
    Accept_meta!( 我的::路径 ( abc ) );
    Accept_meta!( 我的::路径 [ abc ] );
    Accept_meta!( my::path { abc } );

  • 在 Rust 2015 模式中,对于使用 NLL(非词法生命周期)技术检查变量借用(借用检查器)时发现的问题启用错误输出。 以前,在 Rust 2018 模式下运行时,警告会替换为错误。
    将更改扩展到 Rust 2015 模式后,开发人员终于能够 逃生 来自旧的借阅检查器。

    让我们回想一下,基于考虑借用变量生命周期的新机制的验证系统可以识别旧验证代码未注意到的一些问题。 由于此类检查的错误输出可能会影响与以前工作的代码的兼容性,因此最初发出警告而不是错误。

  • “const”属性决定了在任何上下文中使用它而不是常量的可能性,用于 is_power_of_two 函数(对于无符号整数)。
  • API 的新部分已移至稳定类别,包括 todo!() 宏和 slice::repeat、mem::take、BTreeMap::get_key_value、HashMap::get_key_value 方法已稳定。
    选项::as_deref、选项::as_deref_mut、选项::展平、UdpSocket::peer_addr、{f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, {f32, f64}::from_be_bytes、{f32,f64}::from_le_bytes 和 {f32,f64}::from_ne_bytes。

  • 在包管理器中的货物
    已实施 在磁盘上缓存编译器警告。 在“货物元数据”命令中添加了“货物元数据”选项--过滤平台" 仅显示依赖项解析列中绑定到指定目标平台的包。 添加了 http.ssl-version 配置选项来定义有效的 TLS 版本。
    添加了发布该部分的功能“开发依赖”而不指定“版本”键。

  • rustc 编译器为目标平台thumbv7neon-unknown-linux-musleabihf、aarch64-unknown-none-softfloat、mips64-unknown-linux-muslabi64 和 mips64el-unknown-linux-muslabi64 提供第三级支持。 第三级涉及基本支持,但没有自动化测试和官方版本的发布。

来源: opennet.ru

添加评论