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.
In summary
It's been a few weeks since the last TWiR. Things have happened.
RustCamp 2015 was announced, though many details are still to be determined. Please submit talk proposals.
Several I/O stabilization patches have been nominated for backporting to 1.1, filling out the somewhat meager story we had for 1.0. With things moving somewhat slowly since the last release, I/O improvements will probably be the most interesting part of the next release.
If you haven't recently, give the
playpen another look as it's received
several new features lately, including a new design from Chris Morgan,
the ability to output Intel-flavor asm, automatically post GitHub
gists, and run #[test]
functions.
What's cooking on master?
346 pull requests were merged in the last three weeks.
Now you can follow breaking changes as they happen!
Breaking Changes
- Remove
#[static_assert]
. An underbaked feature. - Make
Arc::get_mut
andmake_unique
unsafe. These unstable functions contain races.
Other Changes
- Stabilize debug builders.
- Add support for registering attributes with plugins
- Initial MSVC support. That is, support for creating Rust programs without using the MinGW toolchain.
- Implement lowering and raising for process I/O. Conversion to system I/O handles, that is.
- Add unstable method
Child::id
. For getting child process handles. - Michael Sproul, Nick Hamann, and Guillaume Gomez continue to document errors, which are now included in the docs.
- Initial implementation of
const fn
. Limited compile-time evaluation per RFC 911. - Development of syntax highlighting for KDE's Kate editor has been moved upstream.
- Allow patterns in macros to be followed by
if
andin
- Richo bravely decided to make our scripts python3 compatible. Now somebody needs to do the same for LLVM.
- Implement
Eq
forCell
andRefCell
. SinceRefCell
can panic, being able toEq
it is arguably a misfeature, but the implementation ofPartialEq
forRefCell
made it into 1.0, soEq
has also been added. - Some foreign-language translations of the book have appeared. I'm sure they would love contributions.
- Implemented
std::iter::once/empty
. A few basic iterators. - Two patches landed to rustc-serialize to improve performance of base64 encoding. Thanks Veedrac and cristicbz.
Approved RFCs
- Have collections
impl Extend<&T> where T: Copy
- Retire RFC 8 (intrinsics) without implementing it. An old RFC was never implemented.
- DST custom coercions
- Don't panic when stdout doesn't exist
- Socket timeouts
- Remove static assert. The static assert as implemented was not very good.
New RFCs
- IndexAssign: overloading the
a[b] = c
expression - Implement FromIterator for the unit type
- Add an
expect
intrinsic - Make Cargo aware of libstd dependencies
- Implement raw fat pointer comparisons
- How to handle API deprecation in std
- Mutually exclusive traits
- Rename attribute
- Add some of
[T]
’s methods to strings and vice versa - Disjoins (anonymous enums)
Internals discussions
- Thoughts on aggressive deprecation in libstd. Should we try to fix the warts or leave them?
- Submodules in rust-lang/rust for external repositories?. We'll probably start linking to external crates via submodules instead of duplicating them in-tree.
- Pre-RFC: adjust default trait object bounds. The default bounds for trait objects has an unfortunate inconsistency, and fixing it, though relatively-low impact currently, is a breaking change.
New Contributors
- Akshay Chiwhane
- Alexander Artemenko
- Alex Stokes
- Andrew Foote
- Austin Hellyer
- benaryorg
- Brian Quinlan
- Christian Stadelmann
- Chuck Bassett
- clatour
- Cornel Punga
- David Campbell
- David Voit
- dmgawel
- econoplas
- edunham
- Eric Ye
- Erik Michaels-Ober
- Felix S Klock II
- funkill
- Iven Hsu
- Jexell
- Kubilay Kocak
- Lorenz
- Marcus Klaas
- Markus Westerlind
- Matej Ľach
- Mathieu David
- Max Jacobson
- Michael Layzell
- Mohammed Attia
- Nick Fitzgerald
- Nils Liberg
- OlegTsyba
- olombard
- Parker Moore
- Paul Oliver
- petrochenkov
- Rein Henrichs
- Rémi Audebert
- Steve Gury
- Thomas Karpiniec
- Tim Ringenbach
- webmobster
- Will Andrews
Notable Links
- Rust has a nascent security policy now
- Iterator cheat sheet. A concise explanation of the std and itertools iterators.
- Projects to spread Rust in Brazil. Brazillians unite to spread the word of Rust.
- My Initial Experience With Rust.
- Three Months of Rust.
- A simple web app in Rust: parts 1, 2, and 2b.
- The Flub Paradox. I guess some people think Rust is too good.
- Expressing L-systems in Rust.
- Tutoriel Rust. A much-needed French-language tutorial.
- My Lint Writing Workflow. llogiq shows us how to write rustc lint plugins.
- Measure Data Structure Sizes: Firefox vs. Servo. How Nick Nethercote is adding memory instrumentation to Servo.
- Servo: The Countdown to Your Next Browser Continues
- Rust on OpenWRT. Cross-compiling to popular MIPS devices.
- Unofficial builds for arm-linux-gnueabihf.
- I wrote a website in Rust and lived to tell the tale.
- Virtual Structs Part 2. More motivation for virtual structs. By Niko.
- How Rust Achieves Thread Safety. By Manish.
- Rust for Python Programmers. By Armin Ronacher.
- Javascript Jabber Episode 161: Rust with David Herman (audio). Dave Herman is the director of strategy at Mozilla Research.
- Defaulting to thread-safety: closures and concurrency. By Huon.
- Rust vs. C++ performance for a path tracer.
- Implementing methods on builtins.
- Five lists of six things about Rust. By Graydon.
- Unsafe Rust: An Intro and Open Questions. Gankro is thinking about what unsafety means.
- Introducing the newest member of Mozilla's Rust team: Emily Dunham. Mozilla Research has a devops person now.
- Wrapper Types in Rust: Choosing Your Guarantees.
Project Updates
- Rust Programming Concepts. A Kickstarter to write a Rust book.
- Primal: Putting Raw Power Into Prime Numbers. Huon releases a library for analyzing prime numbers.
- pulldown-cmark. A parser for the CommonMark markdown standard. Intended to replace the pre-standard Hoedown for use in rustdoc.
- Feedback request: yaml-rust. @chyh1990 wants feedback on the only Rust YAML parser.
- Feedback required: mpd. @kstep wants feedback on his interface to mpd - the Music Player Daemon.
- Feedback request: a client library for HyperDex. HyperDex is a new key-value store.
- HttpMuncher. A streaming HTTP parser, wrapping the Joyent parser.
- Notify 0.2 released. Cross-platform file-system notification.
- dbus. New D-Bus bindings!
- StemJail. An interesting application of Linux containers.
- Piston-Window 0.2 released.
- doapi & docli. Interfaces to Digital Ocean APIs.
- sudoku. A sudoku solver.
- iota. A plugin that provides Go-like 'iotas'.
- Visual Studio Code supports Rust syntax highlighting.
- rurtle. Turtle graphics.
- RON. Rusty Object Notation, ala JSON.
- Maud. A template engine.
- units. Type-safe units of measure.
- This Week in Servo 33.
- The Rust Essentials book from Packt has been released.
- lifeguard. A memory pool.
- gj. Async I/O with promises, from the author of capnp-rust.
- Geoffoy Couprie published a paper on Nom, his byte-oriented parser combinator library
- rim. A vim-like text editor.
- Rust documentation is available on DevDocs.
- ioctl. A crate to help make ioctls, from cmr.
- ramp. A multi-precision arithmetic library from Aatch.
Upcoming Events
- 6/8. Seattle
- 6/9. San Diego
- 6/14. Hyderabad
- 6/15. Paris.
- 6/17. Los Angeles
- 6/17. Montreal
- 6/24. Columbus Rust Society
- 6/29. Sydney
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.
Quote of the Week
"Dude, you can't just tell people it's the secret plan; then it won't be a secret any more! You keep this up, and you're going to get your Secret Rust Club card revoked! Then you won't be able to get on the awesome Secret Rust Zeppelin. Don't screw this up, man!"
Quxxy, from /r/rust.
"The 1st rule of Secret Rust Club is: you don't talk about Secret Rust Club.
The 2nd rule of Secret Rust Club is: error: 1st rule
does not live long enough.
error: aborting due to previous error"
JakDrako, from the same thread.
Thanks to drbawb and Manishearth for the tip. Submit your quotes for next week!.