2021-05-12 14:32:11
Rust 1.25升級到LLVM 6
Rust 1.25把LLVM升級到LLVM 6,新增use
語句巢狀匯入組支援、自定義結構對齊、庫穩定化。不過,最新的Rust版本沒有包含許多期待已久的特性,如impl Trait
、穩定的SIMD庫支援、128位元整數。
升級到LLVM 6有若干好處,如各種各樣的Bug修復,其中包括SIMD相關的編譯錯誤,但是,升級的主要目的是為了方便與LLVM上游的Wasm後台保持一致,那樣可以快速支援Wasm的新特性。但有一個重要的例外,就是基於Emscripted的JavaScript後台,它使用了鎖定的LLVM 4版本。據Rust開發者Steve Klabnik介紹,在一般情況下,LLVM 6未必會帶來任何效能的提升,它編譯得更快還是更慢取決於實際的程式碼。
use語句的新語法讓開發人員可以指定巢狀的匯入組,旨在讓程式碼更有可讀性、更簡潔。例如,下面一組匯入:
use std::fs::File;
use std::io::Read;
use std::path::{Path, PathBuf};
現在可以寫成:
use std::{fs::File, io::Read, path::{Path, PathBuf}};
此外,現在可以使用#[repr(align(x))]註解對齊Rust 1.25的structs
:
struct Number(i32);
assert_eq!(std::mem::align_of::<Number>(), 4);
assert_eq!(std::mem::size_of::<Number>(), 4);
#[repr(align(16))]
struct Align16(i32);
assert_eq!(std::mem::align_of::<Align16>(), 16);
assert_eq!(std::mem::size_of::<Align16>(), 16);
在使用有特殊對齊要求的硬體時,這個特性非常有用,可以更好地與C程式碼互操作,例如,更容易把一個結構正確地傳遞給某些期望使用指定對齊方式的C程式碼,對一些高階場景也有用,如在核心中靜態分配頁表。
在庫方面,最顯著的變化是引入了std::ptr::NonNull,這很像*mut T
,但可以保證非0和協變,最適合於使用安全程式碼構建資料結構。
按照現在的情況,Rust 1.25並不是許多開發人員期待的Rust大版本,因為它沒有包含Rust團隊已經研發了很長時間的重大特性,包括impl Trait
(提升效能、簡化泛型語法和診斷)、128位元整數、穩定的SIMD庫支援等。好訊息是,據Klabnik介紹,這些特性將會在接下來的1.26和1.27兩個版本中提供。
檢視英文原文: Rust 1.25 Moves to LLVM 6
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-04/151812.htm
相關文章