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!
Breaking Changes
- Some functions in Result and Either were replaced to work with external iterators
- The
priv
andpub
visibility modifiers are now forbidden on contexts where they have no meaning. For example, marking a struct fieldpub
, or a modulepriv
. The compiler errors for this are quite informative, and the conversion is purely mechanical. to_c_str
now raises a condition if the string contains interiorNUL
s, as it is impossible to create a valid C string with interiorNUL
s.
Library improvements, bugfixes, and cleanup
ifmt!
, the new formatter, has been finished. Yay!extra::stats::write_boxplot
now works with negative or zero sample values.- Some missing pieces in libstd have been filled in.
- A
sample
method has been added toRngUtil
, 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
&Trait
has been fixed to handle freezing and reborrowing more correctly. - Debuginfo of lexical scopes and variable shadowing has been massively improved.
- A
--target-cpu
flag 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.
- An
address_insignificant
attribute 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.
Meeting
The Tuesday meeting discussed turning jemalloc back on, default arguments, and method invocation ordering. It also discussed the new IO code and stage0 stdtest.
Notable discourse
External projects
- 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