Rust 1.98.0 版本发布:arrayref 包遭到入侵,该包在三个月内被下载了 5300 万次。

Rust 1.98 编程语言现已发布。该语言由 Mozilla 项目创建,目前由独立非营利组织 Rust 基金会支持开发。该语言注重内存安全,并提供了实现高并行度任务执行的工具,同时无需使用垃圾收集器和运行时(运行时简化为标准库的基本初始化和维护)。

Rust 的内存管理方法旨在消除指针操作错误,并防止底层内存管理问题,例如访问已释放的内存、解引用空指针、缓冲区溢出等等。该项目正在开发 Cargo 包管理器,用于分发库、简化构建并管理依赖项。crates.io 仓库用于托管库。

Rust 在编译时通过引用检查、跟踪对象所有权、跟踪对象生命周期(范围)以及评估代码执行期间内存访问的正确性来提供内存安全。 Rust 还提供防止整数溢出的保护,要求在使用前初始化变量,更好地处理标准库中的错误,默认应用不可变引用和变量的概念,并提供强静态类型以最小化逻辑错误。

主要创新:

  • 对于 f32 和 f64 浮点类型,实现了加法、减法、乘法、除法和求余的代数方法,其优化类似于 C/C++ 编译器中的“-ffast-math”选项。这些方法允许在必要时改变运算顺序,例如用于循环向量化等优化。举例来说,当使用常规加法计算“a + b + c + d”时,编译器始终按相同的顺序执行计算:“((a + b) + c) + d”,但使用 algebraic_add 方法,它可以将表达式分组为“(a + b) + (c + d)”,并使用 SIMD 指令并行执行“(a + b)”和“(c + d)”。使用代数方法的代价是计算结果的不确定性,其变化可能在误差范围内。
  • 所有基本整数类型都内置了 `format_into` 方法,用于将数字转换为字符串,该方法可以替代 itoa 包。NumBuffer 缓冲区作为参数传递。其大小保证足以写入所用类型的任何十进制值。输出是一个格式化字符串 &str,其生命周期与缓冲区大小绑定。
  • ManuallyDrop 线束与 Box 智能指针之间的交互不再导致未定义行为。
  • API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
    • str::substr_range
    • [T]::subslice_range
    • core::fmt::NumBuffer
    • <{integer}>::format_into
    • 发送/同步 std::process::CommandArgs
    • {fN}::algebraic_add
    • {fN}::algebraic_sub
    • {fN}::algebraic_mul
    • {fN}::algebraic_div
    • {fN}::algebraic_rem
    • NonZero<{integer}>::from_str_radix
    • String::from_utf16le
    • String::from_utf16le_lossy
    • String::from_utf16be
    • String::from_utf16be_lossy
    • [T]::strip_circumfix
    • str::strip_circumfix
    • 原子::from_mut
    • 原子::get_mut_slice
    • 原子::from_mut_slice
    • std::range::legacy
  • 目标平台 thumbv7a-none-eabi、thumbv7a-none-eabihf、thumbv7r-none-eabi、thumbv7r-none-eabihf 和 thumbv8r-none-eabihf 已升级到第二级支持,其中包括构建保证,但不保证通过测试套件。
  • 现已新增对 powerpc64-unknown-linux-gnuelfv2 和 aarch64-unknown-linux-pauthtest 平台的支持,目前支持级别为 3 级。3 级支持包含基本支持,但不包括自动化测试、官方版本发布或构建验证。

此外,热门 crate 包 arrayref 也遭到了攻击。该包在过去 90 天内下载量超过 5300 万次,并被 403 个软件包用作依赖项。攻击者向 crates.io 代码库发布了包含恶意代码的新软件包:proc-macro1、proc-macro-en、aovine、arone、aronenao 和 tinymember。随后,arrayref 0.3.10、internment 0.8.7 和 append-only-vec 0.1.9 的新版本也被发布到该代码库,每个版本都将恶意软件包 proc-macro1 作为依赖项。恶意版本的 arrayref 软件包于 8 月 20 日上午 10:15(莫斯科时间)发布,并一直活跃到上午 11:41,之后被 crates.io 管理员移除。

目前尚未联系到 arrayref 的维护者以澄清情况,但据信其凭据已被攻击者截获。在 proc-macro1 软件包中,构建脚本存在恶意修改,导致从外部目录加载了一个可执行文件。 伺服器下载的文件在 Unix 系统上保存为 /tmp/rust-setup,在 Windows — %TEMP%\rust-setup.ps1 或 %TEMP%\rust-setup-launch.vbs。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster