This Week in Rust
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!
This week brings a bunch of optimizations, cleanups, and the
pkgid attribute has also seen some changes.
This week also brings a bunch of tiny bugfixes, many of which I do not mention
below. Out of the 52 PRs this week, I only mention 16. The decision to include
a PR or not is fairly arbitrary, but I try to maintain a “significance
barrier” so that the list is not huge and hard to read (and also to save me
work!). Examples of things which I will stop including mentions of are test
fixes, minor documentation changes, build infrastructure fixes, and any
cleanup to the compiler that doesn’t result in a relatively significant
speedup or memory usage decrease. I don’t do this out of malice, but out of
laziness and convenience.
What’s cooking on master?
52 PRs were merged this week.
std::commhas been rewritten. In short, use
SharedChan::newto construct a Port/Chan pair. We’re in the ballpark of Go’s performance, which is exciting. Read the PR for more details.
- Some more
std::vec::rawcleanup has turned some free functions into methods.
.as_mut_bufand friends have also been removed, replaced by using
extra::ebmlhas been partially de-@d.
- A ton of useless traits,
ToOptionetc, have been removed.
- A nasty bug where having an
implfor a type forced it to be public has been fixed. Some types which were previously accessible may not be anymore, due to this.
pkgidcrate attribute has been renamed to
extra::sorthas been removed, and there is now a
sortmethod on mutable slices (
insertmethods on vectors have had some unsafe code added to make them 3x faster.
extra::stat::Stathas been made more accurate.
- debuginfo for by-value
selfhas been fixed.
returnis now allowed in closures for early return.
pkgid) now supports specifying the crate name.
#foo:1.0as the fragment will make the crate name
foo, for example
Podkind has been added for types where a memcpy is a logical copy. This behaves very similarly to the old
- Stability attributes (
#[experimental], etc) are now checked for method calls.
- Metadata reading has been made 4x faster.
- msys terminals are now
- Carter Tazio Schonwald
discusses some pull requests,
extern mod, the stdlib
module hierarchy, and renaming some of the vector methods.
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.
We landed 19 PRs this week.
- Pradeep Kumar re-enabled parallel selector matching #1429.
- Daniel Hedlund fixed window redraw on Linux #1414.
- Tetsuharu Ohzeki significantly cleaned up the compositor source code in #1425.
- Simon Sapin added support for non-UTF8 stylesheets #1377.
- Patrick Walton cleaned up made several PRs that clean up layout’s dependency on DOM nodes.
- Isabelle Carter added support for positioned offsets for layout in #1407.
In this week’s meeting, we discussed using the Critic review tool from Opera with github. We are currently experimenting it, with jgraham’s support. Jack also discussed his ongoing Rust upgrade which, as always, has uncovered several interesting Rust compiler bugs.
- The SF meetup happened. It was recorded and is available on Air Mozilla. The video is well worth watching.
- A broad vision for the Rust docs stack.
- Two bugs in the borrow checker every Rust developer should know about.
- Building Rust Code – Using Make Part 2.
- Video: 2D portaling demo in Rust and rust-sdl2.
- What do you want in a Rust book?.
- An etched copper Rust logo.
- Ohcount Rust support has been merged, so hopefully ohloh will have more accurate information for Rust projects soon.