Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safe, concurrent, and fast. This is a weekly summary of its progress and community. Want something mentioned? Send me an email! Want to get involved? We love contributions.
What's cooking on master?
Now you can follow breaking changes as they happen!
AtomicUinthave been renamed to
AtomicUsizeto match their corresponding integer types.
- To fix a bug in coherence builtin traits can only be implemented for structs and enums.
- Certain long error messages of the form 'expected foo found bar' are now split neatly across multiple lines. Examples in the PR.
- UFCS method calls can now be qualified by the trait of the
method. This can be used to disambiguate method calls when multiple
applicable methods are in scope, e.g.
<i32 as Add<_>>::add(1, 2)which is equivalent to
- Negative impls are partially implemented, though appear
to still be special-cased to the
- Mutexes on Windows are faster now they are implemented with Slim Reader Writer Locks.
#[rustc_on_unimplemented]attribute, requiring the 'on_unimplemented' feature, lets rustc display custom error messages when a trait is expected to be implemented for a type but is not.
- Preliminary support for PowerPC.
- Fatal runtime errors are now suitably boring.
- Aidan Hobson Sayers
- Alexander Korolkov
- Andrew Barchuk
- Cam Jackson
- Diggory Blake
- Greg Chapple
- Jeff Belgum
- Lauri Lehmijoki
- nathan dotz
- Paul Crowley
- Seth Faxon
- Toni Cárdenas
- Travis Watkins
- 517: io and os reform (skeleton). Updating the
osmodules is a large task and at the moment the RFC only lays out the motivation. It will be updated incrementally in further pull requests. PR. Many follow-ups have been posted for review: string handling,
uszas literal suffix for
Vec::drainby a method that accepts a range parameter.
- Rename (maybe one of) the standard collections for consistency. Proposes several possible renamings.
foreachto iterators. An internal iterator.
fmtsize hints. Allows buffers to be optimized.
prockeyword. Why isn't it gone already?
- Negative bounds. Gives flexibility to avoid coherence conflicts.
- Make return types of
Fntraits associated types. More flexible because it doesn't require generic return types to be constrained.
- Early trait bounds on generic types. Create a convention to always apply trait bounds to wrapper types to improve error messages when the bounds on the underlying types or methods can't be satisfied.
- sizeof, alignof, offsetof, typeof.
- CStr, the dereferenced complement to CString.
- Forbid identifier
Selffor definitions. Fixing a weird corner case that results from
Selfnot being a keyword.
- Support incremental compilation. Rearchitect the compiler.
- Output option handling. Make rustc's
--emitoptions more consistent.
From the Team
- Weekly-meetings/2015-01-13. fott; homu; integer overflow; I/O; 1.0; comment RFC
- Thoughts about Rust from a D programmer. Good comparison. /r/rust. /r/programming.
- Recent syntactic changes. Nick discusses some of the last-minute syntax changes he's recently landed.
- Little Orphan Impls. Niko discusses options for coherence rules. /r/rust.
- Unboxed Closures and FFI Callbacks. How to use closures as foreign callbacks.
- A Quick Comparison of Nim vs. Rust. HN. /r/rust. /r/programming.
- Mooney GB: A Gameboy emulator written in Rust.
- Building a HashMap in Rust - Part 1: What's a Hashmap?. Gankro on the Rust HashMap. /r/rust.
- Worklog 2015-01-17: Rustdoc testing. Yurume on his new patch to test rustdoc output.
- Solving Project Eueler with Rust. A walk through of the first problem.
- Getting started contributing to Rust. kmc's slides from the Saturday event in SF.
- Explore ownership in Rust. Good entry level discussion of ownership. /r/rust.
- DTrace on Rust.
- SystemTap on Rust. Not to be outdone.
- Summary of Korean Rust Meetup #4. The Korean Rust contingent is always up to interesting stuff.
- Small string optimization, remove as_mut_vec. The current
Vecdoesn't allow the common 'small string' optimization. /r/rust.
- Does Rust let you develop faster than C++?. TL;DR ¯\_(ツ)_/¯
- Using Rust 1.0 for video game development. Yes, please.
- Rust support in Visual Studio. Doesn't exist yet, sorry.
- Rust Berlin community efforts. Berlin needs you!
- By value operator overloading problems. Implementing math
operators for non-copyable types means you have to pass them by
&a + &b, which some consider unsightly.
- launch-code. Cryptographic auditing of unsafe code. /r/rust.
- rust-cipher. Encryption with XSalsa20 and BLAKE2B-512 in the Encrypt-then-MAC mode.
- rust-haskell-ffi. Example of calling Rust from Haskell.
- dynamodule. Experiments with dynamic OOP.
- rdb-rs. A Redis RDB parser.
- carboxyl. Functional reactive programming.
- Sparkle. An entity component system. /r/rust.
- rust-erl-ext. Erlang 'external term' parser.
- rs-intrusive. A system for creating intrusive data structures, Rust's kryptonite.
- handlebars-iron. Template middleware for the Iron web framework.
- hematite_server. Minecraft server clone.
- This Week in Servo 19.
- Worklog 2015-01-13: Time zones, chrono, and associated types. Yurume discusses updates to rust-chrono.