This Week in Rust
Hello and welcome to the seventh issue of This Week in Rust, a weekly overview of Rust and its community. Things are calming down quite a bit, in that nothing extraordinarily exciting is happening. Lots of great work is being done everywhere, and good progress is being made in both bugfixes and cleanup. It has been a good week!
What’s cooking on master?
Issue churn this week was -15. A total of 59 PRs were merged.
- The semantics of
range_revhave changed. This will break your code without warning. It is now, to use interval notation,
(hi, lo]rather than
priv externhave been removed from the language. This matches the previous similar change to
impl. Place the visibility qualifier (
priv) on each item in the
&'static T) is no longer allowed in
ThreadPerCorespawn mode has been removed, as it doesn’t make sense with the new scheduler.
consumemethods of the hash containers has been replaced with an external iterator. The method name is the same, though.
- Moved values can no longer be captured twice. This was a blatant soundness issue.
swap_unwrapmethod of Option has been renamed to
debug!statements generate no code unless you pass
rustc. This should help keep code size down and make your programs a (tiny bit) faster. Now you don’t have to feel bad about having
debug!in hot code.
mutate_valuesmethod of HashMap has been removed.
Notable library additions, bugfixes, and cleanup
- An iterator adaptor was added that endlessly repeats the iterator it is called on.
- Generated test runners now have a
- Metric capturing + racheting has been added for benchmarks.
local_datanow has a
extra::semverhas been updated to SemVer 2.0.0.
- Consuming iterators have been added for the hash structures.
extra::ringbufnow implements DoubleEndedIterator.
Eqnow has a default implementation of
extra::termnow knows how to handle more attributes.
- More containers implement
FromIter. This means you can use
.collect()to gather the elements from an iterator into those containers.
- Task killing, failure, and exit code propagation in the new runtime has been implemented.
Notable compiler additions, bugfixes, and cleanup
syntax::attrhas been modernized.
- Tons of debuginfo work from mw this week!
- Trait data structures have been cleaned up, as well as a default method fix.
- Intrinsics now have much better codegen.
no_implicit_preludeattribute has been added, which prevents prelude injection in the module heirarchy starting at the item which that attribute is added to.
- C-style enum variants are now
- All language items are now optional. The compiler emits an error if a language item is used but not provided.
- The removal of
- Headers have been removed for
Documentation, tools, and other stuff
- rustpkg now works when you don’t give it a package ID. It builds/installs/cleans the package in the current directory, iff the current directory is in a rustpkg workspace.
--quietis no longer passed to git during submodule operations, so you can see the progress of the huge LLVM download.
- Documentation of the lint-controlling attributes was added.
- rustpkg now handles cloning from local git repos.
- The GtkSourceView highlighting file was improved.
The Tuesday meeting discussed nothing at all of importance.