The Rust community is pleased to announce version 0.12.0 of the Rust compiler and tools. Rust is a systems programming language with a focus on safety, performance and concurrency.
This release features an abundance of new and improved documentation, including The Rust Guide, which replaces the original tutorial. The standard library has continued to be carefully reexamined and updated for consistency with Rust coding conventions. Cargo, Rust's package manager has made many advancements, and has been adopted by most Rust libraries. Windows support has received renewed attention, including a 64-bit port. Finally, a number of minor language features intended to improve ergonomics have landed. The brief release notes are included in this announcement, and there is further explanation in the detailed release [notes] on the wiki. Documentation and all the links in this email are available on the [website]. As usual, version 0.12.0 should be considered an alpha release, suitable for early adopters and language enthusiasts. Please file [bugs] and join the [fun]. [website]: http://www.rust-lang.org [notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes [bugs]: https://github.com/mozilla/rust/issues [fun]: https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors Source * https://static.rust-lang.org/dist/rust-0.12.0.tar.gz https://static.rust-lang.org/dist/rust-0.12.0.tar.gz.asc SHA256 (of .tar.gz): 883e66b24d90d9957c5c538469fcde6f0668e5fb6448beecfc60884060e769b7 Windows installers * https://static.rust-lang.org/dist/rust-0.12.0-x86_64-w64-mingw32.exe https://static.rust-lang.org/dist/rust-0.12.0-x86_64-w64-mingw32.exe.asc SHA256 (of .exe): 6545567ea70ce0bfd6dd06c233f15e5685541862ed99be7f9072be197c229999 * https://static.rust-lang.org/dist/rust-0.12.0-i686-w64-mingw32.exe https://static.rust-lang.org/dist/rust-0.12.0-i686-w64-mingw32.exe.asc SHA256 (of .exe): 2a0681c3e1624b07a150d5a9f2f638f879a5290c76a702b694e74358441fa1d3 Linux binary tarballs * https://static.rust-lang.org/dist/rust-0.12.0-x86_64-unknown-linux-gnu.tar.gz https://static.rust-lang.org/dist/rust-0.12.0-x86_64-unknown-linux-gnu.tar.gz.asc SHA256 (of .tar.gz): bb3e2eda2bd25690c58a3925ca175dedc27fedada33af4159fdb63dae9cc41a3 * https://static.rust-lang.org/dist/rust-0.12.0-i686-unknown-linux-gnu.tar.gz https://static.rust-lang.org/dist/rust-0.12.0-i686-unknown-linux-gnu.tar.gz.asc SHA256 (of .tar.gz): 2a96a5662e1248da0c2dc3394646b7e75b2c05b2df332cb6f388bbbb6cb75999 Mac OS X binary installers * https://static.rust-lang.org/dist/rust-0.12.0-x86_64-apple-darwin.pkg https://static.rust-lang.org/dist/rust-0.12.0-x86_64-apple-darwin.pkg.asc SHA256 (of .pkg): 5ebe4b55a8175270eaffff33d7b607be26c47a15e20ad7e4460fa77f0a503f9f * https://static.rust-lang.org/dist/rust-0.12.0-i686-apple-darwin.pkg https://static.rust-lang.org/dist/rust-0.12.0-i686-apple-darwin.pkg.asc SHA256 (of .pkg): e937f3665259fad31777ff2c09d581a757ccd8600357de99245690e811efe19a Mac OS X binary tarballs * https://static.rust-lang.org/dist/rust-0.12.0-x86_64-apple-darwin.tar.gz https://static.rust-lang.org/dist/rust-0.12.0-x86_64-apple-darwin.tar.gz.asc SHA256 (of .tar.gz): b1a5321de58a5994fcd87ce155642fa0e56ccb3cf0d43979f0afb0382faf033b * https://static.rust-lang.org/dist/rust-0.12.0-i686-apple-darwin.tar.gz https://static.rust-lang.org/dist/rust-0.12.0-i686-apple-darwin.tar.gz.asc SHA256 (of .tar.gz): 56b4c4467d3471276cd0dd811b3e76b82b01755dd3f994eeae1d342199e0db83 Thanks to everyone who contributed! Regards, The Rust Team Version 0.12.0 (October 2014) ----------------------------- * ~1900 changes, numerous bugfixes * Highlights * The introductory documentation (now called The Rust Guide) has been completely rewritten, as have a number of supplementary guides. * Rust's package manager, Cargo, continues to improve and is sometimes considered to be quite awesome. * Many API's in `std` have been reviewed and updated for consistency with the in-development Rust coding guidelines. The standard library documentation tracks stabilization progress. * Minor libraries have been moved out-of-tree to the rust-lang org on GitHub: uuid, semver, glob, num, hexfloat, fourcc. They can be installed with Cargo. * Lifetime elision allows lifetime annotations to be left off of function declarations in many common scenarios. * Rust now works on 64-bit Windows. * Language * Indexing can be overloaded with the `Index` and `IndexMut` traits. * The `if let` construct takes a branch only if the `let` pattern matches, currently behind the 'if_let' feature gate. * 'where clauses', a more flexible syntax for specifying trait bounds that is more aesthetic, have been added for traits and free functions. Where clauses will in the future make it possible to constrain associated types, which would be impossible with the existing syntax. * A new slicing syntax (e.g. `[0..4]`) has been introduced behind the 'slicing_syntax' feature gate, and can be overloaded with the `Slice` or `SliceMut` traits. * The syntax for matching of sub-slices has been changed to use a postfix `..` instead of prefix (.e.g. `[a, b, c..]`), for consistency with other uses of `..` and to future-proof potential additional uses of the syntax. * The syntax for matching inclusive ranges in patterns has changed from `0..3` to `0...4` to be consistent with the exclusive range syntax for slicing. * Matching of sub-slices in non-tail positions (e.g. `[a.., b, c]`) has been put behind the 'advanced_slice_patterns' feature gate and may be removed in the future. * Components of tuples and tuple structs can be extracted using the `value.0` syntax, currently behind the `tuple_indexing` feature gate. * The `#[crate_id]` attribute is no longer supported; versioning is handled by the package manager. * Renaming crate imports are now written `extern crate foo as bar` instead of `extern crate bar = foo`. * Renaming use statements are now written `use foo as bar` instead of `use bar = foo`. * `let` and `match` bindings and argument names in macros are now hygienic. * The new, more efficient, closure types ('unboxed closures') have been added under a feature gate, 'unboxed_closures'. These will soon replace the existing closure types, once higher-ranked trait lifetimes are added to the language. * `move` has been added as a keyword, for indicating closures that capture by value. * Mutation and assignment is no longer allowed in pattern guards. * Generic structs and enums can now have trait bounds. * The `Share` trait is now called `Sync` to free up the term 'shared' to refer to 'shared reference' (the default reference type. * Dynamically-sized types have been mostly implemented, unifying the behavior of fat-pointer types with the rest of the type system. * As part of dynamically-sized types, the `Sized` trait has been introduced, which qualifying types implement by default, and which type parameters expect by default. To specify that a type parameter does not need to be sized, write `<Sized? T>`. Most types are `Sized`, notable exceptions being unsized arrays (`[T]`) and trait types. * Closures can return `!`, as in `|| -> !` or `proc() -> !`. * Lifetime bounds can now be applied to type parameters and object types. * The old, reference counted GC type, `Gc<T>` which was once denoted by the `@` sigil, has finally been removed. GC will be revisited in the future. * Libraries * Library documentation has been improved for a number of modules. * Bit-vectors, collections::bitv has been modernized. * The url crate is deprecated in favor of http://github.com/servo/rust-url, which can be installed with Cargo. * Most I/O stream types can be cloned and subsequently closed from a different thread. * A `std::time::Duration` type has been added for use in I/O methods that rely on timers, as well as in the 'time' crate's `Timespec` arithmetic. * The runtime I/O abstraction layer that enabled the green thread scheduler to do non-thread-blocking I/O has been removed, along with the libuv-based implementation employed by the green thread scheduler. This will greatly simplify the future I/O work. * `collections::btree` has been rewritten to have a more idiomatic and efficient design. * Tooling * rustdoc output now indicates the stability levels of API's. * The `--crate-name` flag can specify the name of the crate being compiled, like `#[crate_name]`. * The `-C metadata` specifies additional metadata to hash into symbol names, and `-C extra-filename` specifies additional information to put into the output filename, for use by the package manager for versioning. * debug info generation has continued to improve and should be more reliable under both gdb and lldb. * rustc has experimental support for compiling in parallel using the `-C codegen-units` flag. * rustc no longer encodes rpath information into binaries by default. * Misc * Stack usage has been optimized with LLVM lifetime annotations. * Official Rust binaries on Linux are more compatible with older kernels and distributions, built on CentOS 5.10. Contributors to Rust 0.12.0 --------------------------- Aaron Turon <[email protected]> Adolfo Ochagavía <[email protected]> Adrien Brault <[email protected]> Adrien Tétar <[email protected]> Ahmed Charles <[email protected]> Alex Crichton <[email protected]> Alex Gaynor <[email protected]> Alexander Light <[email protected]> Alexandre Gagnon <[email protected]> Alexis Beingessner <[email protected]> Alfie John <[email protected]> Alisdair Owens <[email protected]> Amy Unger <[email protected]> Andreas Tolfsen <[email protected]> Andrew Dunham <[email protected]> Andrew Poelstra <[email protected]> Angus Lees <[email protected]> Anton Lofgren <[email protected]> Ariel Ben-Yehuda <[email protected]> Arjan Topolovec <[email protected]> Arpad Borsos <[email protected]> Austin Bonander <[email protected]> Ben Gamari <[email protected]> Ben Noordhuis <[email protected]> Benjamin Adamson <[email protected]> Benjamin Herr <[email protected]> Bheesham Persaud <[email protected]> Birunthan Mohanathas <[email protected]> Björn Steinbrink <[email protected]> Brendan Zabarauskas <[email protected]> Brian Anderson <[email protected]> Brian Campbell <[email protected]> Brian Koropoff <[email protected]> Cameron Zwarich <[email protected]> Carol Nichols <[email protected]> Chris Morgan <[email protected]> Chris Nixon <[email protected]> Christoph Burgdorf <[email protected]> Chuck Ries <[email protected]> Clark Gaebel <[email protected]> Cole Mickens <[email protected]> Colin Davidson <[email protected]> Conrad Kleinespel <[email protected]> Corey Ford <[email protected]> Corey Richardson <[email protected]> DJUrsus <[email protected]> Damien Grassart <[email protected]> Damien Radtke <[email protected]> Dan Albert <[email protected]> Dan Burkert <[email protected]> Dan Connolly <[email protected]> Dan Schatzberg <[email protected]> Daniel Brooks <[email protected]> Daniel Hofstetter <[email protected]> Daniel Micay <[email protected]> David Vazgenovich Shakaryan <[email protected]> Derecho <[email protected]> Derek Harland <[email protected]> Dzmitry Malyshau <[email protected]> Eduard Burtescu <[email protected]> Eduardo Bautista <[email protected]> Edward Wang <[email protected]> Erick Tryzelaar <[email protected]> Evan Klitzke <[email protected]> Falco Hirschenberger <[email protected]> Felix Raimundo <[email protected]> Felix S. Klock II <[email protected]> Florian Gilcher <[email protected]> Florian Hahn <[email protected]> Florian Zeitz <[email protected]> Gioele Barabucci <[email protected]> Guillaume Pinot <[email protected]> Hugo Jobling <[email protected]> Huon Wilson <[email protected]> Ilya Dmitrichenko <[email protected]> Ivan Petkov <[email protected]> Jack Heizer <[email protected]> Jake Kaufman <[email protected]> Jake Scott <[email protected]> Jakub Wieczorek <[email protected]> James Hurst <[email protected]> James Lal <[email protected]> James Rowe <[email protected]> Jason Fager <[email protected]> Jason Thompson <[email protected]> Jauhien Piatlicki <[email protected]> Jimmie Elvenmark <[email protected]> Jiří Stránský <[email protected]> John Clements <[email protected]> John Gallagher <[email protected]> John Kåre Alsaker <[email protected]> John Schmidt <[email protected]> Jonas Hietala <[email protected]> Jonathan Bailey <[email protected]> Jonathan Boyett <[email protected]> Jonathan Reem <[email protected]> Jonathan S <[email protected]> Jorge Aparicio <[email protected]> Joseph Crail <[email protected]> Joseph Martin <[email protected]> Julian Orth <[email protected]> Jyun-Yan You <[email protected]> Kasey Carrothers <[email protected]> Keegan McAllister <[email protected]> Kevin Ballard <[email protected]> Kevin Butler <[email protected]> Kevin Mehall <[email protected]> Kevin Walter <[email protected]> Kiet Tran <[email protected]> LemmingAvalanche <[email protected]> Liigo Zhuang <[email protected]> Luqman Aden <[email protected]> Manish Goregaokar <[email protected]> Markus Unterwaditzer <[email protected]> Martin Olsson <[email protected]> Marvin Löbel <[email protected]> Matej Lach <[email protected]> Mateusz Czapliński <[email protected]> Mathijs van de Nes <[email protected]> Matt Brubeck <[email protected]> Matt Coffin <[email protected]> Michael Gehring <[email protected]> Michael Kainer <[email protected]> Michael Matuzak <[email protected]> Michael Neumann <[email protected]> Michael Sproul <[email protected]> Michael Woerister <michaelwoerister@posteo> Mike Boutin <[email protected]> Mike Robinson <[email protected]> NODA, Kai <[email protected]> Nathan Froyd <[email protected]> Nathan Typanski <[email protected]> Nick Cameron <[email protected]> Nick Howell <[email protected]> Niko Matsakis <[email protected]> O S K Chaitanya <[email protected]> OGINO Masanori <[email protected]> Oren Hazi <[email protected]> P1start <[email protected]> Pablo Brasero <[email protected]> Palmer Cox <[email protected]> Paolo Falabella <[email protected]> Patrick Reisert <[email protected]> Patrick Walton <[email protected]> Patrick Yevsukov <[email protected]> Peer Aramillo Irizar <[email protected]> Peter Atashian <[email protected]> Peter Marheine <[email protected]> Peter Minten <[email protected]> Phil Dawes <[email protected]> Philipp Gesang <[email protected]> Piotr Czarnecki <[email protected]> Piotr Jawniak <[email protected]> Prudhvi Krishna Surapaneni <[email protected]> Pythoner6 <[email protected]> Rahul Horé <[email protected]> Randati <[email protected]> Ricardo M. Correia <[email protected]> Richard Diamond <[email protected]> Richo Healey <[email protected]> Robert Clipsham <[email protected]> Robert Gawdzik ☢ <[email protected]> Russell <[email protected]> Ruud van Asseldonk <[email protected]> Samuel Neves <[email protected]> Santiago Pastorino <[email protected]> Sebastian Zaha <[email protected]> Sebastien Martini <[email protected]> Seo Sanghyeon <[email protected]> SiegeLord <[email protected]> Simon Persson <[email protected]> Simon Sapin <[email protected]> Squeaky <[email protected]> Steve Klabnik <[email protected]> Steven Fackler <[email protected]> Stuart Pernsteiner <[email protected]> Ted Horst <[email protected]> Till Hoeppner <[email protected]> Tim Joseph Dumol <[email protected]> Tobba <[email protected]> Tobias Bucher <[email protected]> Tom Jakubowski <[email protected]> Tshepang Lekhonkhobe <[email protected]> Vadim Chugunov <[email protected]> Valerii Hiora <[email protected]> Victor Berger <[email protected]> Vinzent Steinberg <[email protected]> Vladimir Pouzanov <[email protected]> Yazhong Liu <[email protected]> Yuri Albuquerque <[email protected]> Zbigniew Siciarz <[email protected]> dgoon <[email protected]> donkopotamus <[email protected]> fort <[email protected]> gamazeps <[email protected]> inrustwetrust <[email protected]> jamesluke <[email protected]> joaoxsouls <[email protected]> klutzy <[email protected]> kwantam <[email protected]> masklinn <[email protected]> mdinger <[email protected]> mitchmindtree <[email protected]> nham <[email protected]> smenardpw <[email protected]> tinaun <[email protected]> ville-h <[email protected]> wickerwaka <[email protected]> zzmp <[email protected]> _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
