Rust 1.59.0釋出
Rust 團隊釋出了 Rust 的新版本 1.59.0。Rust 是一種程式語言,它使每個人都能夠構建可靠和高效的軟體。
內聯裝配
Rust 語言現在支援內聯彙編。這使得許多應用程式需要對其執行進行非常低階別的控制,或訪問專門的機器指令。
例如,在為 x86-64 目標編譯時,您現在可以編寫:
use std::arch::asm; // Multiply x by 6 using shifts and adds let mut x: u64 = 4; unsafe { asm!( "mov {tmp}, {x}", "shl {tmp}, 1", "shl {x}, 2", "add {x}, {tmp}", x = inout(reg) x, tmp = out(reg) _, ); } assert_eq!(x, 4 * 6); |
asm!用於在和global_asm! 宏中命名暫存器的格式字串語法與 Rust格式字串中使用的相同,因此對於 Rust 程式設計師來說應該很熟悉。
內聯彙編可用的組合語言和指令因目標體系結構而異。今天,穩定的 Rust 編譯器支援以下架構上的內聯彙編:
- x86 and x86-64
- ARM
- AArch64
- RISC-V
解構分配
您現在可以使用元組、切片和結構模式作為賦值的左側。
let (a, b, c, d, e); (a, b) = (1, 2); <p class="indent">[c, .., d, _] = [1, 2, 3, 4, 5]; Struct { e, .. } = Struct { e: 5, f: 3 }; assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]); |
const 泛型預設值和交錯
泛型型別現在可以為其 const 泛型指定預設值。例如,您現在可以編寫以下內容:
struct ArrayStorage<T, const N: usize = 2> { arr: [T; N], } impl<T> ArrayStorage<T> { fn new(a: T, b: T) -> ArrayStorage<T> { ArrayStorage { arr: [a, b], } } } |
以前,型別引數必須位於所有 const 引數之前。該限制已放寬,您現在可以交錯使用它們。
fn cartesian_product< T, const N: usize, U, const M: usize, V, F >(a: [T; N], b: [U; M], f: F) -> [[V; N]; M] where F: FnMut(&T, &U) -> V { // ... } |
未來的不相容警告
有時,Rust 編譯器中的錯誤會導致它接受不應該被接受的程式碼。現在,當未來版本的 Rust 拒絕依賴項時,Cargo 會向您顯示警告。
建立剝離的二進位制檔案
從您分發的二進位制檔案中去除不必要的資訊(如除錯資訊)通常很有用,使它們更小。
增量編譯預設關閉
1.59.0 版本預設禁用增量(除非透過環境變數明確要求:)
相關文章
- Rust 1.79.0釋出Rust
- Rust 1.60.0釋出Rust
- Rust 1.83.0 版本釋出Rust
- Rust 1.82.0版本釋出Rust
- Rust 日報 20191016 Rustup 釋出 1.20.2 版本Rust
- Rust 1.64.0釋出:非同步是亮點Rust非同步
- 帶有Rust的核心Linux 6.1-rc1釋出RustLinux
- Rust 註釋介紹Rust
- Visual Studio Code 釋出四月更新:新增Rust 語言指南Rust
- V8替代?用Rust編寫的JavaScript引擎Boa釋出RustJavaScript
- Rust 註釋生成文件Rust
- 26. 乾貨系列從零用Rust編寫正反向代理,如何釋出Rust專案到DockerRustDocker
- Rust記憶體安全解釋Rust記憶體
- Rust 程式設計影片教程(進階)——007_4crate 的釋出與撤回Rust程式設計
- 用Iterator解釋Rust所有權概念Rust
- Rust 程式設計視訊教程(進階)——007_4crate 的釋出與撤回Rust程式設計
- Nacos 多語言體系再添新員:首個 Rust 語言版本正式釋出!Rust
- Devolver釋出會多款遊戲釋出dev遊戲
- Rust 程式設計影片教程(進階)——006cargo 加強 (釋出配置自定義構建)Rust程式設計Cargo
- Apache Dubbo 多語言體系再添新員:首個 Rust 語言版本正式釋出ApacheRust
- 共計 37.9 萬行程式碼,Rust for the Linux kernel 第六版補丁釋出行程RustLinux
- 深入淺出Rust-Future-Part-4Rust
- 深入淺出Rust Future Part-3Rust
- rust 終端輸出 debug 資訊Rust
- openGauss 釋出
- 釋出帖子
- 首次釋出
- Rust 程式設計視訊教程(進階)——006cargo 加強 (釋出配置自定義構建)Rust程式設計Cargo
- xmake v2.6.1 釋出,使用 Lua5.4 執行時,Rust 和 C++ 混合編譯支援RustC++編譯
- Istio 1.1釋出,中文文件同時釋出
- NPM包(模組)釋出、更新、撤銷釋出NPM
- K8S釋出策略,無損釋出K8S
- 通俗易懂解釋Rust所有權和借用概念Rust
- netcore釋出時 swagger xml釋出丟失問題NetCoreSwaggerXML
- [Python] 程式釋出Python
- lucms 2.1.7 釋出
- Bundler 2.0 釋出
- AsteroidOS 1.0 釋出AST