Rust 1.61 編程語言發布

Rust 1.61 通用編程語言的發布已經發布,該語言由 Mozilla 項目創建,但現在由獨立的非營利組織 Rust 基金會贊助開發。 該語言專注於內存安全,並提供實現高作業並行性的方法,同時避免使用垃圾收集器和運行時(運行時減少為標準庫的基本初始化和維護)。

Rust 的內存處理方法使開發人員在操作指針時避免錯誤,並防止由於低級內存處理而出現的問題,例如在內存區域被釋放後訪問它、取消引用空指針、緩衝區溢出等。 為了分發庫、提供構建和管理依賴項,該項目開發了 Cargo 包管理器。 crates.io 存儲庫支持託管庫。

Rust 在編譯時通過引用檢查、跟踪對象所有權、跟踪對像生命週期(範圍)以及評估代碼執行期間內存訪問的正確性來提供內存安全。 Rust 還提供防止整數溢出的保護,要求在使用前強制初始化變量值,更好地處理標準庫中的錯誤,默認應用不可變引用和變量的概念,提供強靜態類型以最小化邏輯錯誤。

主要創新:

  • 可以從主函數定義您自己的回傳程式碼。 最初,Rust 的 main 函數只能傳回類型「()」(unit),除非開發人員明確呼叫「process::exit(code)」函數,否則它總是指示成功的退出狀態。 在 Rust 1.26 中,在主函數中使用不穩定的 Termination 特徵,可以傳回值“Ok”和“Err”,對應於 C 程式中的 EXIT_SUCCESS 和 EXIT_FAILURE 程式碼。 在 Rust 1.61 中,Termination 特徵已經變得穩定,並且提出了一個單獨的 ExitCode 類型來表示特定的返回代碼,該類型通過提供預定義常數 SUCCESS 和 FAILURE 以及 From 方法來抽象化特定於平台的返回類型返回自訂返回代碼。 使用 std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(8); } } 退出程式碼::成功 }
  • 使用表達式“const fn”定義的函數的附加功能已經穩定,它們不僅可以作為常規函數調用,而且可以在任何上下文中代替常數使用。 這些函數是在編譯時計算的,而不是在執行時間計算的,因此它們受到某些限制,例如只能讀取常數的能力。 在新版本中,const函數內部允許對函數指針進行基本操作(允許創建、傳遞和轉換指針,但不允許透過指針呼叫函數); const 函數的泛型參數的特徵邊界,例如 T: Copy; 動態可調度特徵(dyn Trait); impl Trait 類型用於函數參數和傳回值。
  • 現在,std::io 中的串流處理Stdin、Stdout 和Stderr 在鎖定時具有靜態生命週期("'static"),允許使用諸如“let out = std::io::stdout().lock(); ”之類的結構。 取得一個句柄並在一個表達式中設定一個鎖。
  • API 的新部分已移至穩定類別,包括特性的方法和實現已穩定:
    • 引腳::static_mut
    • 引腳::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • 為 Cursor<[u8; 寫入N]>
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::process::終止
    • std::thread::JoinHandle::is_finished
  • “const”屬性決定了在任何上下文中使用它而不是常量的可能性,用於函數中:
    • <*const T>::offset 和 <*mut T>::offset
    • <*const T>::wrapping_offset 和 <*mut T>::wrapping_offset
    • <*const T>::add 和 <*mut T>::add
    • <*const T>::sub 和 <*mut T>::sub
    • <*const T>::wrapping_add 和 <*mut T>::wrapping_add
    • <*const T>::wrapping_sub 和 <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

另外,您可以留意《Rust:重要回顧》一文,總結了在韌體中使用的 Xous 微內核作業系統開發過程中編寫了 100 萬行程式碼後對 Rust 語言的印象。 缺點包括難以理解的語法、語言的不完整性和持續開發、缺乏可重複的構建、Crates.io 中依賴信任的典型問題以及需要保持一定的紀律來編寫安全代碼。 超出預期的功能包括用於重構程式碼的工具和在快速原型製作過程中添加的重新設計「駭客」的工具。

來源: opennet.ru

添加評論