距離上一個更新兩個月後,Rust釋出了1.28版本Rust 1.27版本讓開發者可以直接撰寫低階SIMD語法,而在1.28版本,官方釋出了穩定版的全域分配器(Global Allocators)以及NonZero數字型態,而Rust的套件管理器Cargo也有更新。

分配器是Rust應用程式向系統請求記憶體的方法,過去Rust不允許改變獲取記憶體的方式,而這樣的限制阻擋了一些使用案例。在部分平臺上,開發者必須要使用另外的系統分配器jemalloc,但開發者並沒有方法可以控制這個關鍵元件。

在Rust 1.28上,現在#[global_allocator]屬性已經進入穩定階段,能讓Rust程式配置他們的分配器為系統分配器,並且藉由實作GlobalAlloc特性來定義新的分配器。部分平臺上Rust程式的預設分配器是jemalloc,而現在標準函式庫提供了系統分配器的Handle,只要宣告靜態變數,並且以#[global_allocator]屬性標記,就能夠在需要的時候切換到系統分配器。

當開發者想要定義客製化的分配器也沒問題,透過實作GlobalAlloc特性也可以輕鬆做到。

另一個進入穩定版本的函式庫為NonZero數字類型,這些標準非帶號(Unsigned)整數型態有NonZeroU8、NonZeroU16、NonZeroU32、NonZeroU64、NonZeroU128和NonZeroUsize。這些型態能幫助開發者進行容量最佳化,像是Option<u8>是2個位元組,而Option<NonZeroU8>則只有1個位元組大小,而且無論這些整數型態被包在什麼結構當中,都不影響最佳化的結果,例如當NonZeroU8並非放在Option中,而是放於Door裡,仍然為一個位元組大。

此外,在Rust的套件管理器Cargo的更新,現在不再允許使用者以修改Src目錄的建置腳本發布套件。

熱門新聞

Advertisement