系統程式語言 Rust 1.52 已發布,該語言由 Mozilla 計畫創建,但現在由獨立非營利組織 Rust 基金會贊助開發。 該語言專注於記憶體安全,提供自動記憶體管理,並提供了無需使用垃圾收集器或運行時即可實現高任務並行性的方法(運行時被簡化為標準庫的基本初始化和維護)。
Rust 的自動內存管理使開發人員在操作指針時避免錯誤,並防止由於低級內存操作而出現的問題,例如在內存區域被釋放後訪問它、取消引用空指針、緩衝區溢出等。 為了分發庫、提供構建和管理依賴項,該項目開發了 Cargo 包管理器。 crates.io 存儲庫支持託管庫。
主要創新:
- 刪除了對「cargo check」和「cargo Clippy」指令執行順序的綁定。 先前,由於這些檢查模式缺乏快取分離,在「cargo check」之後呼叫「cargo Clippy」不會啟動 Clippy 實用程式 (linter)。 現在這個問題已經解決了,「cargo Clippy」和「cargo check」的呼叫順序不再重要。
- 新的部分 API 已轉移到穩定類別,包括以下方法已穩定:
- 參數::as_str
- 字符::最大
- 字元::REPLACMENT_CHARACTER
- 字元::UNICODE_VERSION
- 字元::decode_utf16
- 字元::來自_數字
- char::from_u32_unchecked
- 字元::from_u32
- 切片::分區點
- str::rsplit_once
- str::split_once
- 「const」屬性決定了在任何上下文中使用它而不是常數的可能性,在方法中使用:
- 字符::len_utf8
- 字符::len_utf16
- char::to_ascii_uppercase
- char::to_ascii_lowercase
- char::eq_ignore_ascii_case
- u8::to_ascii_大寫
- u8::to_ascii_lowercase
- u8::eq_ignore_ascii_case
- 新增了 lint 檢查 unsafe_op_in_unsafe_fn 以確定不安全函數中使用的不安全程式碼是否由不安全區塊構成。
- 允許將指向數組的可變指標轉換為指向數組元素類型的指標的形式。 讓 mut x: [使用; 2] = [0, 0]; 令 p = &mut x as *mut usize; 令 p = &mut x as *const usize;
- Clippy (linter) 中新增了 9 個新檢查。
- 貨物包管理器現在支援包的 JSON 中的「manifest_path」欄位。 新增了以 SPDX 3.11 格式指定許可證資訊到 crates.io 儲存庫的支援。
- 執行測試時允許指定多個過濾器,例如執行“cargo test - foo bar”將運行與遮罩“foo”和“bar”相符的所有測試。
- 預設 LLVM 工具包已更新至 LLVM 12。
- 第三級支援已針對 s390x-unknown-linux-musl、riscv32gc-unknown-linux-musl、riscv64gc-unknown-linux-musl 和 powerpc-unknown-openbsd 平台實作。 第三級涉及基本支持,但沒有自動化測試、發布官方建置或檢查程式碼是否可以建置。
來源: opennet.ru