Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Send me an email! Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors or omissions in this week's issue, please submit a PR.
The big news
Rust 1.0.0-alpha.2 was released on Friday, but keep using nightlies. Six more weeks until the beta, which should become 1.0. Only six more weeks.
What's cooking on master?
157 pull requests were merged in the last week, and 15 RFC PRs.
Now you can follow breaking changes as they happen!
Breaking Changes
- A variety of tweaks have been made to
std::thread
before declaring it stable. - The
vec!
macro accepts a new form,vec![element; len]
, which produces a vector containing a number of clones of the same element. - The
CString
type has seen a few modifications, as well as the introduction of theCStr
type. IntoIterator
now has an associated type for specifying the element type.ExactSizeIterator
is no longer implemented for 64-bit ranges.- In target specs,
target-word-size
is now calledtarget-pointer-width
, to match the recently changedtarget_pointer_width
cfg attribute. fmt::Writer
was renamed tofmt::Write
.us
/is
/u
/i
suffixes are now replaced withusize
/isize
.- A number of modules have been audited
for incorrect use of
isize
andusize
. - Use of arbitrary attributes not defined by the language is feature gated.
Other Changes
Send
no longer requires'static
, which make it possible to express various data-parallel scenarious by sharing interior pointers. RFC.- The 'Macros' chapter of TRPL has been overhauled and a new 'Advanced Macros' chapter added.
rustc --version
now reports the build date in addition to the commit date, to make it more clear what nightly you are on.- Florian Hahn added a new category of 'parse-fail' tests to the test suite. This makes it easier to compare model parsers to the production parser.
New Contributors
- Adam Jacob
- Alexander Bliskovsky
- Brian Brooks
- caipre
- Darrell Hamilton
- Dave Huseby
- Denis Defreyne
- Elantsev Serj
- Henrik Schopmans
- Ingo Blechschmidt
- Jormundir
- Lai Jiangshan
- posixphreak
- Ryan Riginding
- Wesley Wiser
- Will
- wonyong kim
Approved RFCs
This covers two weeks since last week I wasn't able review RFCs in time.
- RFC 458: Improve the Send trait.
- RFC 505: API comment conventions.
- RFC 528: Add a generic string pattern matching API.
- RFC 563: Remove ndebug.
- RFC 572: Feature gate unused attributes.
- RFC 580: Rename some std colloctions.
- RFC 592: CStr.
- RFC 593: Forbid
Self
identifier. - RFC 599: Default object lifetime bounds.
- RFC 601: Replace
be
withbecome
. - RFC 735: Lift restrictions on defition site of inherent impls.
- RFC 736: Privacy-respecting FRU.
- RFC 738: Variance for type params.
- RFC 769: Sound generic drop.
- RFC 809:
box
and placementin
. - RFC 823: Simplify
std::hash
. - RFC 832: Add back
Vec::from_elem
. - RFC 840: No panic in CString.
New RFCs
rustdoc
orcargo doc
should pass--cfg doc
.- Never allow reads from uninitialized memory in safe Rust.
- Have collections impl Extend<&T> where T: Clone.
- Changing struct literals.
- Item grouping.
- Put
div_rem
back in the standard library. - New struct syntax.
- Use globs as.
- Remove lifetime elision in type parameter position.
- Replace IteratorExt::zip with tuple iteration.
- Allow macros in types.
- Lex binary and octal literals more eagerly
- Improvements to range match patterns.
- Make function pointer types look like borrowed pointer types for forwards compatability.
- Allow types to be parameterized by integer (and bool) constant values.
- Allow
#[must_use]
on functions, rather than just types. MarkResult::{ok,err}
#[must_use]
. - Add single-threaded fences.
- Custom preludes.
- Approx asserts.
Friend of the Tree
The Rust Team likes to occassionally recognize people who have made outstanding contributions to The Rust Project, its ecosystem, and its community. These people are 'friends of the tree'.
This week's friend of the tree was ... Toby Scrace.
"Today I would like to nominate Toby Scrace as Friend of the Tree. Toby emailed me over the weekend about a login vulnerability on crates.io where you could log in to whomever the previously logged in user was regardless of whether the GitHub authentication was successful or not. I very much appreciate Toby emailing me privately ahead of time, and I definitely feel that Toby has earned becoming Friend of the Tree."
Quote of the Week
<Manishearth> In other news, I have r+ on rust now :D
<Ms2ger> No good deed goes unpunished
From #servo. Thanks to SimonSapin for the tip.
Notable Links
- Weekly-meetings/2015-02-17. fott; security bugs; code completion; open-ended proposals; struct syntax; alpha2; integer suffixes; overflow.
- McPherrin succeeds at transcribing two hours of meetup talks, but at great cost.
- Radical statements about the mobile web. Servo is going to fix it al.
- Embedded Rust Right Now!.
- On Rust and Nim. HN.
- Rust Debugging in Emacs.
- Thoughts of a Rustacean learning Go. /r/rust.
- Some notes on Send and Sync.
- Turing tarpits in Rust's macro system.
- Bay Area Rust Meetup: Blocking and Async I/O. Video.
- Memory management in Oxischeme.
[mtg-reddit]:
Project Updates
- Raft Update 2: Hacking the log.
- Rewriting Rust serialization part 2.
- rustdox.com. Rust documentation hosting.
- var. A macro for declaring multiple mutable variables at once.
- rexiv2. A library for reading and writing EXIF data.
- There was a good HackerNews thread about exa, the replacement for
ls
written in Rust. Also on /r/rust. - rust-netbeans. Rust plugin for the NetBeans IDE, with Cargo support.
- This Week in Servo 24.
- rtracker. A bittorrent tracker in Rust.
- dns2. A DNS library.
- rust-media. Portable media player framework.
- ipc. Clone of ipcalc.
- multilist. Safe intrusive doubly-linked lists.
- rustle. Install Cargo apps without installing Rust.
- xsv. BurntSushi's CSV toolkit.
- suffix. Suffix arrays for fast searching.
- Rust Share. Share to play.rust-lang.org from SublimeText.
- chess. Written in Rust!
Upcoming Events
If you are running a Rust event please add it to the calendar to get it mentioned here. Email Erick Tryzelaar or Brian Anderson for access.