Rust 1.94 程式語言現已發布。該語言由 Mozilla 計畫創建,目前由獨立非營利組織 Rust 基金會支持開發。該語言注重記憶體安全,並提供了實現高平行度任務執行的工具,同時無需使用垃圾收集器和運行時(運行時簡化為標準庫的基本初始化和維護)。
Rust 的記憶體管理方法旨在消除指標操作錯誤,並防止底層記憶體管理問題,例如存取已釋放的記憶體、解引用空指標、緩衝區溢位等等。該專案正在開發 Cargo 套件管理器,用於分發庫、簡化建置並管理相依性。 crates.io 倉庫用於託管庫。
Rust 在編譯時通過引用檢查、跟踪對象所有權、跟踪對像生命週期(範圍)以及評估代碼執行期間內存訪問的正確性來提供內存安全。 Rust 還提供防止整數溢出的保護,要求在使用前強制初始化變量值,更好地處理標準庫中的錯誤,默認應用不可變引用和變量的概念,提供強靜態類型以最小化邏輯錯誤。
主要創新:
- 切片類型現在新增了 `array_windows` 方法。此方法會建立一個迭代器,用於在固定大小的視窗中遍歷切片,每次迭代推進一個元素。與先前可用的 `windows` 方法不同,`array_windows` 使用固定大小的窗口,並且每次迭代返回一個固定大小的數組引用(`&[T; N]`),而不是一個大小未定義的切片引用(`&[T]`)。由於數組大小最初對編譯器是已知的,因此可以透過避免在每次迭代階段進行邊界檢查來提高效能。 `let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unrap(2), &[1]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());`
- Cargo 套件管理器的設定檔(.cargo/config.toml)實作了「include」指令,讓您可以直接插入其他檔案的內容。例如:`include = [ "frodo.toml", "samwise.toml", ]` 和 `include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]`
- 清單檔案和設定檔中已新增對新版 TOML 1.1 標記語言的支援。新版本增加了對多行嵌入式表格的支援、用於插入十六進位位元組表示的「\xHH」轉義序列、用於「\u001B」的「\e」轉義序列,以及在最後一個元素末尾添加逗號和省略時間值中的秒數的功能。現在可以將 `serde = { version = "1.0", features = ["derive"] }` 替換為 `serde = { version = "1.0", features = ["derive"], }`
- API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
- <[T]>::array_windows
- <[T]>::element_offset
- LazyCell::get
- LazyCell::get_mut
- LazyCell::force_mut
- LazyLock::get
- LazyLock::get_mut
- LazyLock::force_mut
- impl TryFrom供使用
- std::iter::Peekable::next_if_map
- std::iter::Peekable::next_if_map_mut
- x86 avx512fp16 指令集的內部函數
- AArch64 NEON fp16 指令集的內部函數
- f32::consts::歐拉角_伽瑪
- f64::consts::歐拉角_伽瑪
- f32::consts::黃金分割率
- f64::consts::黃金分割率
- “const”符號用在函數中:
- f32::mul_add
- f64::mul_add
- riscv64im-unknown-none-elf 平台已升級至支援等級 3。支援等級 3 包括基本支持,但不包括自動化測試、官方建置版本發布或建置驗證。
此外,我們想重點介紹一下近期發布的與 Rust 相關的項目和活動:
- Ayrton Muñoz 曾為 Rust 編譯器實現了對索尼 PlayStation 1 平台的支持,並將 FreeBSD 移植到搭載 Apple Silicon 晶片的電腦上。如今,他又實現了用 Rust 為 FreeBSD 編寫核心元件和裝置驅動程式的功能。為了方便測試,他提供了一套 KPI(內核程式介面)綁定,使得在 FreeBSD 核心中使用 Rust 程式碼成為可能。此外,他還提供了 virtio 聲卡驅動程式 (virtio_snd)、用於 M2 MacBook 鍵盤的 DockChannel HID 驅動程序,以及多個基於 Apple Silicon 晶片的 Mac 電腦子系統底層驅動程序,所有這些驅動程式都是使用這些綁定創建的。
Rust 綁定的開發工作自 2024 年底以來一直在進行中。目前,這些綁定僅實現了部分 C-KPI,穩定性尚待提高,但隨著時間的推移,開發團隊計劃提升其穩定性,使其達到與 C 語言類似介面相同的水平。例如,virtio_snd 驅動程式適用於在 QEMU 中播放音樂。預計到 2026 年,Rust 綁定將足夠穩定,屆時有興趣的開發者即可開始使用它們編寫程式碼。
- NetBSD 開發者 Benny Siegert 解釋了為什麼 NetBSD 核心不會支援 Rust:NetBSD 支援的架構中,Rust 尚不可用;維護 pkgsrc 中現有的 Rust 工具鍊是一項龐大的工作,而且只有少數開發者在維護;核心對 Rust 的支援需要將 Rust 編譯器包含在基礎系統中;需要使用舊的二進位包,這對於以源代碼形式分發的自包含發行版來說是不可接受的;Rust 的發布週期與 NetBSD 舊分支的開發和支持週期不相容(例如,2020 年發布的 NetBSD 9 仍在繼續得到支持,這意味著需要發布和支持一個已有六年曆史的 Rust 編譯器)。
- Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
- 一個旨在使 Rust 標準函式庫能夠在 GPU 端程式中使用起來的項目。
- Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
- RustConn(flatpak)是一個用於管理與其他主機外部網路連接的圖形介面,支援 SSH、RDP、VNC、SPICE、Telnet、串列埠、Kubernetes、零信任和 SFTP。程式碼使用 Rust 語言編寫,並基於 GTK4 和 Wayland。
- zlib-rs 0.6 專案發布了一個新分支,這是首個完全相容 zlib C API 的穩定版本,可作為 zlib 的透明替代方案。該專案旨在創建一個安全的 zlib 資料壓縮庫替代方案。開發工作與 zlib-ng 專案密切相關,後者正在開發 zlib 的高效能版本。
- VCAD專案是一個參數化電腦輔助設計(CAD)系統的開發項目,該系統使用Rust語言編寫,並整合了基於MCP協定的AI代理程式。它支援3D建模、模擬、2D草圖繪製、元件組裝、STEP檔案匯入以及STL/GLB/STEP/DXF檔案匯出。
- 我們發布了一個用 Rust 編寫的語音辨識系統,該系統採用了 Mistral Voxtral Mini 4B 即時人工智慧模型和 Burn 機器學習框架。該計畫專注於為即時串流轉錄提供即時語音辨識功能。
- c2rust 0.22 工具包已發布。它旨在將 C 代碼(C99)轉換為不安全的 Rust 表示形式,其結構與原始 C 代碼類似。產生的框架可用於逐步遷移到慣用的 Rust 語言,並移除不安全的程式碼區塊。
來源: opennet.ru
