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上获取,并且可以在这里下载安装包。
本文转自d1net(转载)