Rust 1.95 编程语言现已发布。该语言由 Mozilla 项目创建,目前由独立非营利组织 Rust 基金会支持开发。该语言注重内存安全,并提供了实现高并行度任务执行的工具,同时无需使用垃圾收集器和运行时(运行时简化为标准库的基本初始化和维护)。
Rust 的内存管理方法旨在消除指针操作错误,并防止底层内存管理问题,例如访问已释放的内存、解引用空指针、缓冲区溢出等等。该项目正在开发 Cargo 包管理器,用于分发库、简化构建并管理依赖项。crates.io 仓库用于托管库。
Rust 在编译时通过引用检查、跟踪对象所有权、跟踪对象生命周期(范围)以及评估代码执行期间内存访问的正确性来提供内存安全。 Rust 还提供防止整数溢出的保护,要求在使用前初始化变量,更好地处理标准库中的错误,默认应用不可变引用和变量的概念,并提供强静态类型以最小化逻辑错误。
主要创新:
- 新增了“cfg_select!”宏,它可以替代“cfg-if”宏包,以“match”块的形式处理多个编译条件,而无需使用“#[cfg]”构造定义条件链。cfg_select! { unix => { fn foo() { /* unix */ } } target_pointer_width = "32" => { fn foo() { /* 非unix,32位 */ } } _ => { fn foo() { /* 非unix且非32位 */ } } }
- 现在已稳定支持在 `match` 代码块中使用 `if let` 表达式来创建条件模式匹配。此前,已稳定支持在 `if` 和 `while` 代码块中使用 `&&` 运算符指定多个 `let` 表达式。例如:`match value { Some(x) if let Ok(y) = compute(x) => { println!("{}, {}", x, y); } _ => {} }`
- 稳定支持 PowerPC 和 PowerPC64 架构的内联汇编器。
- API 的新部分已移至稳定类别,包括特性的方法和实现已稳定:
- MaybeUninit<[T; N]>: 来自<[MaybeUninit ; N]>
- MaybeUninit<[T; N]>: AsRef<[MaybeUninit ; N]>
- MaybeUninit<[T; N]>: AsRef<[MaybeUninit ]>
- MaybeUninit<[T; N]>: AsMut<[MaybeUninit ; N]>
- MaybeUninit<[T; N]>: AsMut<[MaybeUninit ]>
- [可能未初始化; N]: 来自
- 单元格<[T; N]>: AsRef<[单元格; N]>
- 单元格<[T; N]>: AsRef<[单元格]>
- 单元格<[T]>: AsRef<[单元格]>
- bool: TryFrom<{integer}>
- AtomicPtr::update
- AtomicPtr::try_update
- AtomicBool::update
- AtomicBool::try_update
- AtomicIn::update
- AtomicIn::try_update
- AtomicUn::update
- AtomicUn::try_update
- cfg_select!
- mod 核心::范围
- core::range::RangeInclusive
- 核心::范围::RangeInclusiveIter
- core::hint::cold_path
- <*const T>::as_ref_unchecked
- <*mut T>::as_ref_unchecked
- <*mut T>::as_mut_unchecked
- Vec::push_mut
- Vec::insert_mut
- VecDeque::push_front_mut
- VecDeque::push_back_mut
- VecDeque::insert_mut
- LinkedList::push_front_mut
- LinkedList::push_back_mut
- 布局::悬空指针
- 布局::重复
- 布局::repeat_packed
- 布局::extend_packed
- “const”符号用在函数中:
- fmt::from_fn
- ControlFlow::is_break
- ControlFlow::is_continue
- 在工具包的稳定版本中,已移除向编译器传递本地目标平台规范的支持。
- powerpc64-unknown-linux-musl、aarch64-apple-tvos、aarch64-apple-tvos-sim、aarch64-apple-watchos、aarch64-apple-watchos-sim、aarch64-apple-visionos 和 aarch64-apple-visionos-sim 目标平台已升级到支持级别 2,其中包括构建保证,但不保证测试套件通过。
此外,我们想重点介绍一下近期发布的与 Rust 相关的项目和活动:
- Canonical 推出了 Mir 2.26 显示服务器,它提供了一组用于创建复合图像的库。 服务器 Mir 基于 Wayland 协议,并融合了窗口管理器和显示服务器的典型功能,被用于 Miracle 合成管理器、Web 信息亭外壳等项目中。 Ubuntu Frame 和 Miriway 用户环境。
新版本最显著的改进是增加了使用 Rust 开发组件的功能。此外,我们还用 Rust 实现了一个替代的输入管理子系统 evdev-rs,并开始开发基于 Rust 的 Wayland 前端 wayland-rs。Mir 中与 Rust 无关的更新包括支持 Wayland 协议 ext_image_copy_capture_v1 和 input-triggers。
- 使用 Rust 语言和内核子系统编写的 ayaFlow 流量分析器的第一个版本已经发布。 Linux eBPF 是一种用于拦截网络数据包(IPv4/TCP/UDP)和以太网帧的协议,性能影响极小。它支持对应用层(L7)协议进行深度检测,例如在分析加密流量时提取 TLS SNI 和 DNS 查询。该系统以 DashMap 格式维护当前连接状态表,将历史记录存储在 SQLite 数据库中,并通过 REST API 将统计信息返回给 Prometheus。
- 已经实现了使用 std::thread 函数在 Rust 语言中创建多线程应用程序并在 GPU 端执行的功能。
来源: opennet.ru
