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.
0.9 is on the brink. Perhaps this week, the next at the latest. Some hefty changes come this week.
What's cooking on master?
63 pull requests were merged this week.
Breaking changes
@mut
has been removed. The replacements areGc<RefCell<T>>
or, preferably,Rc<RefCell<T>>
. See alsoCell<T>
forPod
types.- Dereferencing of unary tuple structs and enums (tuple structs with one field and enums with one variant) has been removed. An example:
struct Foo(int);
fn bar() {
let x = Foo(42);
// previously `*x` would return 42
let Foo(y) = x; // but now you do this pattern matching
}
Either
has been removed.extern mod foo (name="bar")
syntax has been removed. The newerextern mod foo = "bar"
syntax replaces it.- The hashmap iterators have
changed. Use
.keys()
and.values()
respectively. - rustc now outputs 1-based column numbers. This shouldn't affect any tooling that assume columns are 0-based. But, this brings us in line with gcc.
- The
cfg
attribute will now strip struct fields and enum variants. - The contents of the
crate_type
attribute are now checked for validity.
Other changes
Reader
/Writer
have regrown some functionality. It can now read and write strings, though only real UTF-8 strings. Encoding support will come later.write_char
also reappeared.- Unwinding on ARM has been fixed. Still no C++!
- Native UDP IO has been implemented.
- A
rust_fail
function has been added. Break on this function to catch failure. Should be easier to remember! Certainly better than_Unwind_RaiseException
. - Some more C has been converted to Rust.
- volatile load and store intrinsics have been added.
Additionally, it hasn't landed yet, but external syntax extensions, aka loadable syntax extensions, aka procedural macros, seem to be really close to landing. This is quite exciting!
New Contributors
- Alan Andrade
- Carl-Anton Ingmarsson
- John Louis Walker
- Peter Zotov
- lyuts
- Matthew Auld
Meeting
Once again, no meeting due to the holidays. There will be one on January 7, however.
This Week in Servo
Servo is a web browser engine written in Rust and is one of the primary test cases for the Rust language.
Mozilla Corp. came back from vacation this Thursday, January 2nd. We landed 14 PRs this week.
Notable additions
- Aydin Kim fixed Android support - hooray! - in #1445.
- Mike Blumenkrantz cleaned up our configure script to avoid the "configure smashed my submodule edits" problem in #1449.
- deokjinkim fixed several font-related issues in #1454 and #1452.
- Simon Sapin refactored font styles in #1455.
- Shamir Khodzha implemented
child_elements
for filtered iteration in #1443. - ms2ger landed several changes to attributes in #1439, #1456, and #1460.
New contributors
- Shamir Khodzha
- Mike Blumenkrantz
Announcements, etc
- DST, take 5. I think this might be the last DST proposal, and I quite like it.
- rust-redis and rust-msgpack.
- A capnproto-rust and zmq example.
- Post-mortem from the OS class taught in Rust.
- Using CMake with Rust
- boehm-rs, a
Gc<T>
type with a real GC! - rust-OpenBLAS, a (in-progress) library for using OpenBLAS and LAPACK.
- libhttpd, a library for writing web servers. Intended to be similar to jetty.