Rust核心團隊發布了Rust 1.15穩定版,新增了備受期待的自定義derive特性,讓代碼生成工具(如Serde和Diesel)能最大效能地工作。
RFC 1681文檔中解釋了自定義derive的動機:
目前生態系統中的一些大項目,如Serde和Diesel,需要nightly版本的Rust編譯器才可以有效地工作。雖然大多數項目在Rust穩定版本上都有替代的方案,但往往不能發揮最大效能,也有自身的一些缺點,而且從經驗上來看不能夠帶來nightly版本用戶同樣的穩定性......
然而,好消息是,這些項目幾乎都是由于程序宏的原因而使用nightly版本。而且除了自定義derive以外,程序宏的全部功能在其他功能中很少使用!更好的消息是,自定義derive通常不需要徹底的宏系統所應當具備的一些特性,例如衛生(hygiene)和模塊化。正常的程序宏通常具有這些特性。
博文《公布Rust 1.15》中提供了一個Diesel的例子:
// some extern crate and use lines elided here#[derive(Queryable)]struct Pet { name: String,}fn main() { use diesel_demo::schema::pets::dsl::*; let connection = establish_connection(); let results = pets .limit(5) .load::(&connection) .expect("Error loading pets"); println!("Displaying {} pets", results.len()); for pet in results { println!("{}", pet.name); }}除了自定義derive,Rust 1.15的其他改進包括使用Cargo重寫的構建系統。Rust團隊評論說:
考慮到Rust所有的開發都在主分支上,去年12月我們開始使用并且運作良好。在一個未關閉的PR中完全刪除了Makefile,我們將會在Rust 1.17中采納。它為rustc鋪平道路,在編譯器中可以像其他Rust項目一樣使用crates.io中的包。
在其他重要領域,隨著1.15穩定版本的發布,Rust實現了對i686-unknown-openbsd、MSP430以及ARMv5TE的3層支持。Hacker News上關于Rust版本發布的討論中,用戶thenewwazoo評論說“哇!MSP430的支持是偉大的。也許你不知道,這是一個眾所周知的超低功耗單片機......這可能是目前唯一一個低于32位的平臺。我知道支持8位AVR架構還需要繼續努力,但MSP430讓Rust更接近超低功耗應用。”
其他用戶對于Rust 1.15的發布同樣非常興奮。Dikaiosune說,“這是非常重要的。知道這次發布后,我可以刪除小型Web后端中所有nightly版本的功能標志,該Web后端中大量使用了類型驅動的代碼生成工具(Serde以及Diesel)。自定義derive擁有穩定性保證,真是太好了。太激動了!”
Ekidd表示贊同,并補充說,“我們有一堆Rust應用程序在工作,只有一個仍然使用nightly版本,現在我們也可以把它遷移到穩定版本了。我們可以在其他地方擺脫一堆build.rs腳本了,這總是好的。”
Rust1.15詳細的發布說明可以在GitHub上獲取,并且可以在這里下載安裝包。
查看英文原文:Rust 1.15 Brings Custom Derive