Hello and welcome to another issue of This Week in Rust! It's a bit delayed due to finals, but like the spinning of the Earth it goes on.
Shameless plug: ask me to do things over my winter break!
What's cooking on master?
52 PRs were merged this week.
Breaking Changes
- The much-discussed
Result
API changes have happened. The gist of it is that.ok()
and.err()
return Options. The other changes didn't land, I assume they will be coming later. - The JIT support has been removed, due to lack of maintenance and upstream changes (this came with the LLVM upgrade).
- Keywords (except self) are no longer allowed as lifetime parameters.
Path::init
has been renamed back toPath::new
.std::str::from_utf8
no longer allocates.std::util::ignore
has been renamed tostd::prelude::drop
, to better reflect what it does.- Duplicate bindings are no longer
allowed in struct bindings. That
is,
let SomeStruct { foo, foo } = baz;
is no longer legal. - Dynamic library propagation is reimplemented.
extra::c_vec
has been modernized.MutableVector::mut_split
has been renamed tomut_split_at
.
Other changes
- A part of the tutorial has been rewritten.
- Vim highlighting has been updated.
deriving
has better error messages.StrSlice
has grown some documentation.- Snapshots are now statically linked.
- From the "changes I don't really understand" department, trait lifetime parameters are early bound in associated functions.
- A race in the scheduler has been squelched.
- extra now has an LRU cache.
- A
log_enabled!(level)
macro has been added, for checking if the program is being run at a given log level. - Static linking now has docs!
- Memory usage when compiling librustc has been killed by 130MB with some well-placed indirection.
MutableVector
has another iterator:mut_chunks()
, for iterating over mutable slices.- The
reverse-complement
shootout benchmark has been rewritten.
New contributors
- Alexandros Tasos
- Diego Ongaro
- Julia Evans
- osa1
Meeting
The weekly
meeting
discussed using box
for placement new, some rustpkg discussion, dropping the
dependency on a system C++ library, and the above from_utf8
and Result
pull requests.
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.
Notable additions
- Simon Sapin added the CSS visibility property in #1331.
- Juneyoung Cho landed local bookmark navigation in #1262.
- ms2ger added reporting exceptions to JS when the DOM implementation fails in #1304.
- Keegan McAllister and Patrick Kim landed several changes to continue our push to remove @-boxes to open up more of our data to safe parallel access across task boundaries.
New contributors
- Bruno de Oliveira Abinader
- Daniel Hedlund
New intern
- Isabelle Carter will be joining us as part of the GNOME Outreach Program for
Women, OPW, and will be
working on adding
position:fixed
support to Servo. The internship runs from December 10 through March 10.
Meetings
This week's meeting was short and mostly covered some build system changes that Jack is working on. In short, we will use Rust's static linking to make it easier to distribute a Servo binary and we are making a larger change to CMake in order to get both more reliable parallel/incremental builds and get support for cross-compilation.
Announcements etc
- Evict-BT - an issue tracker that integrates loosely with git.
- Rust with Emscripten
- Day 36: On programming without malloc
- Rust experience report - a pre-0.1 raytracer and response to the language.
- Rust frontend to GCC
- Types in Rust, for Beginners
- Thoughts on DST, part 4
- Slides from pnkfelix's codemash presentation.
- An ML thread on redundant APIs involving
Option
- What do you want in a Rust Docker image?
- A huge thread on lots of things Rust
- Rust bindings to libsodium/NaCl