[rust-dev] Rust 0.12.0 released

Brian Anderson banderson at mozilla.com
Thu Oct 9 10:13:50 PDT 2014


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 <aturon at mozilla.com>
Adolfo Ochagavía <aochagavia92 at gmail.com>
Adrien Brault <adrien.brault at gmail.com>
Adrien Tétar <adri-from-59 at hotmail.fr>
Ahmed Charles <acharles at outlook.com>
Alex Crichton <alex at alexcrichton.com>
Alex Gaynor <alex.gaynor at gmail.com>
Alexander Light <scialexlight at gmail.com>
Alexandre Gagnon <alxgnon at gmail.com>
Alexis Beingessner <a.beingessner at gmail.com>
Alfie John <alfiej at fastmail.fm>
Alisdair Owens <awo101 at zepler.net>
Amy Unger <amy.e.unger at gmail.com>
Andreas Tolfsen <ato at mozilla.com>
Andrew Dunham <andrew at du.nham.ca>
Andrew Poelstra <asp11 at sfu.ca>
Angus Lees <gus at inodes.org>
Anton Lofgren <alofgren at op5.com>
Ariel Ben-Yehuda <arielb1 at mail.tau.ac.il>
Arjan Topolovec <arjan.top at gmail.com>
Arpad Borsos <arpad.borsos at googlemail.com>
Austin Bonander <austin.bonander at gmail.com>
Ben Gamari <bgamari.foss at gmail.com>
Ben Noordhuis <info at bnoordhuis.nl>
Benjamin Adamson <adamson.benjamin at gmail.com>
Benjamin Herr <ben at 0x539.de>
Bheesham Persaud <bheesham.persaud at live.ca>
Birunthan Mohanathas <birunthan at mohanathas.com>
Björn Steinbrink <bsteinbr at gmail.com>
Brendan Zabarauskas <bjzaba at yahoo.com.au>
Brian Anderson <banderson at mozilla.com>
Brian Campbell <lambda at continuation.org>
Brian Koropoff <bkoropoff at gmail.com>
Cameron Zwarich <zwarich at mozilla.com>
Carol Nichols <carol.nichols at gmail.com>
Chris Morgan <me at chrismorgan.info>
Chris Nixon <chris.nixon at sigma.me.uk>
Christoph Burgdorf <christoph.burgdorf at bvsn.org>
Chuck Ries <chuck.ries at gmail.com>
Clark Gaebel <cgaebel at mozilla.com>
Cole Mickens <cole.mickens at gmail.com>
Colin Davidson <colrdavidson at gmail.com>
Conrad Kleinespel <conradk at conradk.com>
Corey Ford <corey at coreyford.name>
Corey Richardson <corey at octayn.net>
DJUrsus <colinvh at divitu.com>
Damien Grassart <damien at grassart.com>
Damien Radtke <dradtke at channeliq.com>
Dan Albert <danalbert at google.com>
Dan Burkert <dan at danburkert.com>
Dan Connolly <dckc at madmode.com>
Dan Schatzberg <schatzberg.dan at gmail.com>
Daniel Brooks <db48x at db48x.net>
Daniel Hofstetter <daniel.hofstetter at 42dh.com>
Daniel Micay <danielmicay at gmail.com>
David Vazgenovich Shakaryan <dvshakaryan at gmail.com>
Derecho <derecho at sector5d.org>
Derek Harland <derek.harland at finq.co.nz>
Dzmitry Malyshau <kvarkus at gmail.com>
Eduard Burtescu <edy.burt at gmail.com>
Eduardo Bautista <me at eduardobautista.com>
Edward Wang <edward.yu.wang at gmail.com>
Erick Tryzelaar <erick.tryzelaar at gmail.com>
Evan Klitzke <evan at eklitzke.org>
Falco Hirschenberger <falco.hirschenberger at gmail.com>
Felix Raimundo <felix.raimundo at telecom-paristech.fr>
Felix S. Klock II <pnkfelix at pnkfx.org>
Florian Gilcher <florian.gilcher at asquera.de>
Florian Hahn <flo at fhahn.com>
Florian Zeitz <florob at babelmonkeys.de>
Gioele Barabucci <gioele at svario.it>
Guillaume Pinot <texitoi at texitoi.eu>
Hugo Jobling <hello at thisishugo.com>
Huon Wilson <dbau.pp+github at gmail.com>
Ilya Dmitrichenko <ilya at xively.com>
Ivan Petkov <ivanppetkov at gmail.com>
Jack Heizer <jack.heizer at gmail.com>
Jake Kaufman <theevocater at gmail.com>
Jake Scott <jake.net at gmail.com>
Jakub Wieczorek <jakub at jakub.cc>
James Hurst <jamesrhurst at users.noreply.github.com>
James Lal <james at lightsofapollo.com>
James Rowe <jroweboy at gmail.com>
Jason Fager <jfager at gmail.com>
Jason Thompson <jason at jthompson.ca>
Jauhien Piatlicki <jauhien at gentoo.org>
Jimmie Elvenmark <flugsio at gmail.com>
Jiří Stránský <jistr at jistr.com>
John Clements <clements at racket-lang.org>
John Gallagher <jgallagher at bignerdranch.com>
John Kåre Alsaker <john.kare.alsaker at gmail.com>
John Schmidt <john.schmidt.h at gmail.com>
Jonas Hietala <tradet.h at gmail.com>
Jonathan Bailey <jbailey at mozilla.com>
Jonathan Boyett <jonathan at failingservers.com>
Jonathan Reem <jonathan.reem at gmail.com>
Jonathan S <gereeter at gmail.com>
Jorge Aparicio <japaric at linux.com>
Joseph Crail <jbcrail at gmail.com>
Joseph Martin <pythoner6 at gmail.com>
Julian Orth <ju.orth at gmail.com>
Jyun-Yan You <jyyou.tw at gmail.com>
Kasey Carrothers <kaseyc.808 at gmail.com>
Keegan McAllister <kmcallister at mozilla.com>
Kevin Ballard <kevin at sb.org>
Kevin Butler <haqkrs at gmail.com>
Kevin Mehall <km at kevinmehall.net>
Kevin Walter <kevin.walter.private at googlemail.com>
Kiet Tran <ktt3ja at gmail.com>
LemmingAvalanche <haugsbakk at yahoo.no>
Liigo Zhuang <com.liigo at gmail.com>
Luqman Aden <me at luqman.ca>
Manish Goregaokar <manishsmail at gmail.com>
Markus Unterwaditzer <markus at unterwaditzer.net>
Martin Olsson <martin at minimum.se>
Marvin Löbel <loebel.marvin at gmail.com>
Matej Lach <matej.lach at gmail.com>
Mateusz Czapliński <czapkofan at gmail.com>
Mathijs van de Nes <git at mathijs.vd-nes.nl>
Matt Brubeck <mbrubeck at limpet.net>
Matt Coffin <mcoffin13 at gmail.com>
Michael Gehring <mg at ebfe.org>
Michael Kainer <kaini1123 at gmail.com>
Michael Matuzak <mmatuzak at gmail.com>
Michael Neumann <mneumann at ntecs.de>
Michael Sproul <micsproul at gmail.com>
Michael Woerister <michaelwoerister at posteo>
Mike Boutin <mike.boutin at gmail.com>
Mike Robinson <mikeprobinsonuk at gmail.com>
NODA, Kai <nodakai at gmail.com>
Nathan Froyd <froydnj at gmail.com>
Nathan Typanski <ntypanski at gmail.com>
Nick Cameron <ncameron at mozilla.com>
Nick Howell <howellnick at gmail.com>
Niko Matsakis <niko at alum.mit.edu>
O S K Chaitanya <osk at medhas.org>
OGINO Masanori <masanori.ogino at gmail.com>
Oren Hazi <oren.hazi at gmail.com>
P1start <rewi-github at whanau.org>
Pablo Brasero <pablo at pablobm.com>
Palmer Cox <p at lmercox.com>
Paolo Falabella <paolo.falabella at gmail.com>
Patrick Reisert <kpreisert at gmail.com>
Patrick Walton <pcwalton at mimiga.net>
Patrick Yevsukov <patrickyevsukov at users.noreply.github.com>
Peer Aramillo Irizar <peer.aramillo.irizar at gmail.com>
Peter Atashian <retep998 at gmail.com>
Peter Marheine <peter at taricorp.net>
Peter Minten <peter at pminten.nl>
Phil Dawes <phil at phildawes.net>
Philipp Gesang <phg42.2a at gmail.com>
Piotr Czarnecki <pioczarn at gmail.com>
Piotr Jawniak <sawyer47 at gmail.com>
Prudhvi Krishna Surapaneni <me at prudhvi.net>
Pythoner6 <pythoner6 at gmail.com>
Rahul Horé <hore.rahul at gmail.com>
Randati <anttivan at gmail.com>
Ricardo M. Correia <rcorreia at wizy.org>
Richard Diamond <wichard at vitalitystudios.com>
Richo Healey <richo at psych0tik.net>
Robert Clipsham <robert at octarineparrot.com>
Robert Gawdzik ☢ <rgawdzik at hotmail.com>
Russell <rpjohnst at gmail.com>
Ruud van Asseldonk <dev at veniogames.com>
Samuel Neves <sneves at dei.uc.pt>
Santiago Pastorino <santiago at wyeworks.com>
Sebastian Zaha <sebastian.zaha at gmail.com>
Sebastien Martini <seb at dbzteam.org>
Seo Sanghyeon <sanxiyn at gmail.com>
SiegeLord <slabode at aim.com>
Simon Persson <simon at flaskpost.org>
Simon Sapin <simon.sapin at exyr.org>
Squeaky <squeaky_pl at gmx.com>
Steve Klabnik <steve at steveklabnik.com>
Steven Fackler <sfackler at gmail.com>
Stuart Pernsteiner <spernsteiner at mozilla.com>
Ted Horst <ted.horst at earthlink.net>
Till Hoeppner <till at hoeppner.ws>
Tim Joseph Dumol <tim at timdumol.com>
Tobba <tobias.haegermarck at gmail.com>
Tobias Bucher <tobiasbucher5991 at gmail.com>
Tom Jakubowski <tom at crystae.net>
Tshepang Lekhonkhobe <tshepang at gmail.com>
Vadim Chugunov <vadimcn at gmail.com>
Valerii Hiora <valerii.hiora at gmail.com>
Victor Berger <victor.berger at m4x.org>
Vinzent Steinberg <Vinzent.Steinberg at gmail.com>
Vladimir Pouzanov <farcaller at gmail.com>
Yazhong Liu <yorkiefixer at gmail.com>
Yuri Albuquerque <yuridenommus at gmail.com>
Zbigniew Siciarz <antyqjon at gmail.com>
dgoon <dgoon at dgoon.net>
donkopotamus <general at chocolate-fish.com>
fort <e at mail.com>
gamazeps <gamaz3ps at gmail.com>
inrustwetrust <inrustwetrust at users.noreply.github.com>
jamesluke <jamesluke at users.noreply.github.com>
joaoxsouls <joaoxsouls at gmail.com>
klutzy <klutzytheklutzy at gmail.com>
kwantam <kwantam at gmail.com>
masklinn <github.com at masklinn.net>
mdinger <mdinger.bugzilla at gmail.com>
mitchmindtree <mitchell.nordine at gmail.com>
nham <hamann.nick at gmail.com>
smenardpw <sebastien at knoglr.com>
tinaun <tinagma at gmail.com>
ville-h <ville3.14159 at gmail.com>
wickerwaka <martin.donlon at gmail.com>
zzmp <zmp at umich.edu>


More information about the Rust-dev mailing list