This Week in Rust
Hello and welcome to the 11th edition of
This Week in Rust! I’m starting uni
this week, so if you notice I’m not quite as omnipresent and omniprescient as
usual, that’d be why. Please send me an email
if you would like your pull request, project, or blog post mentioned. I would
hate to overlook something cool or important.
The Mozilla Intern talks happened this past week or so. The ones I know about relating to Rust are:
- Default Methods in Rust (sully)
- Types of Types in Rust (bblum)
- A Work-stealing Runtime for Rust (toddaaro)
- A Forest of Quadtrees: The Graphics of Servo
- Layout in Servo: Parallel and Rustic Tree Traversals (eatkinson)
- Architecting Servo: Pipelines and Parallelism (tikue)
Congratulations to them all. The interns did a ton of great work over the summer.
What’s cooking on master?
There were only 46 PRs merged this week. I don’t quite know why that number is so low this week. It certainly wasn’t for lack of PRs: the queue has been constantly backlogged. Issue churn was -26, yay!
- Some functions in Result and Either were replaced to work with external iterators
pubvisibility modifiers are now forbidden on contexts where they have no meaning. For example, marking a struct field
pub, or a module
priv. The compiler errors for this are quite informative, and the conversion is purely mechanical.
to_c_strnow raises a condition if the string contains interior
NULs, as it is impossible to create a valid C string with interior
Library improvments, bugfixes, and cleanup
ifmt!, the new formatter, has been finished. Yay!
extra::stats::write_boxplotnow works with negative or zero sample values.
- Some missing pieces in libstd have been filled in.
samplemethod has been added to
RngUtil, for resevior sampling.
Compiler improvements, bugfixes, and cleanup
- A ton of work was done on a new visitor. This is the first of a series of five.
- Vector repeat exprs (
[0, ..16]) are now allowed in statics.
- A hint has been added for incorrect use of static methods.
- Trait object coercion to
&Traithas been fixed to handle freezing and reborrowing more correctly.
- Debuginfo of lexical scopes and variable shadowing has been massively improved.
--target-cpuflag has been added to select the target CPU, rather than always using “generic”.
- Support for owned and borrowed trait objects has been made better added.
address_insignificantattribute has been added. LLVM will do merging of statics marked with that attribute.
- Intrinsics for checked overflow on add, sub, and mul have been added.
Tools, documentation, etc
- The tutorial was translated into Japanese. I think this is the first translation of anything, so it’s a pretty big milestone I think.
The Tuesday meeting discussed turning jemalloc back on, default arguments, and method invocation ordering. It also discussed the new IO code and stage0 stdtest.
- Bindings to elasticsearch
- zeromq bindings have been updated
- A spellchecker for Rust code, written in Rust
- rust-encoding: character encoding support for Rust
- A simple vocabulary trainer
rustdoc_ng: 95% done
- Some pages as rendered by Servo
- d3cap: a libpcap-based network activity visualizer
- postgres bindings
- RemoteJoy: a program for remotely viewing the screen of your PlayStation Portable. (screnshot)
- The new OpenGL loader is working, pending the function pointer fix