This Week in Rust
Hello and welcome to the third issue of This Week in Rust, a weekly overview of Rust and its community.
It has come to my attention that Github does not categorize some merged-by-bors pull requests as “merged” and instead categorizes it as “closed”. This skews the numbers and also the PRs that I looked through for inclusion into twir. I’ll no longer be including issue churn/PR numbers, and I hope I didn’t miss any import PRs in the last two issues.
What’s cooking in incoming?
The last of the tree breakage has been cleaned up. The mysterious stack corruption was traced down by Blei to occur in jemalloc. It has been disabled until the real cause of the error is found. A bunch more buildbot configurations have been turned on for auto, to fend off more breakage. The tree is open, and aatch got out a new snapshot!
Most of the work this week is cleanup and preparation for 0.7, but since the tree has been closed (and the extra auto buildbots lengthen the time it takes for a PR to be tested for the day it has been open), not much has landed these past few days, but a bunch happened earlier this week.
Notable additions, bugfixes, and cleanup
- doener made compiles faster by emitting less useless copies and allocations in 7259
- aatch landed part 1 and part 2 of his huge trans refactor effort, which make trans faster and less terrible.
- sully got default methods less broken
- yichoi landed a bunch of Android fixes.
- vadimcn has fixed debuginfo, which is super amazing. This makes it a lot easier for the GSoC student (mw) to get started.
- doener has fixed some pathological behavior in how codegen creates cleanup blocks. This makes the IR better, reducing compile time, and also allowing better optimization, reducing binary size.
They reduce compile times by about 10% in total.
Reduces the size of librustc by about 5% and the time required to build
it by about 10%.
The resulting code for rustc is about 13% faster (measured up to and
including the “trans” pass) and the resulting librustc is about 5%
work with iterators. The changes
that landed are vector cleanups. Probably most importantly, the
eachi methods are being removed. The
eachi removal landed but the
one broke bors, so it’s currently in limbo (UPDATE 6/23/2013: it landed).
The current replacement is:
1 2 3 4 5 6 7 8
Once the rest of the iterator work is hashed out and lands, it will just be
1 2 3 4 5 6 7 8
although the syntax might be slightly different (
for element in your_vec is
my favorite proposal).
The Tuesday meeting’s main topics were once fn’s and how namespaces work. For once fn’s, graydon says “I’m concerned with adding new features and I want to see if we can live without it, I understand it is common,” not yet making a decision to include them in the language.
- tjc’s pre-talk and talk, “Rust: A Friendly Introduction” went very well. The slides are up, and a recording is coming soon (hopefuly). tjc says the slides aren’t as understanable without the audio of the talk.
- nmatsakis has expressed willingness/interest in a Boston meetup sometime. If you’re interested, contact him on IRC or the ML.
Notable discourse and external projects
- mmap and the Rust FFI (indutny is working on mman bindings in libc, for the record. will mention in next week’s twir when it lands)
- code generation and rustc speed
- Rust for game development?
- Feed us some low hanging fruit!
- Paying Technical Debt in rustc
- What issues in Rust today effect (sic) you most?
- rustdoc rewrite and redesign
- rust-bench: a tool for profiling memory usage
- Michael Woerister (mw), the GSoC student working on debug info, has begun work. His project log will be updated weekly. I’m looking forward to a much better debug experience.