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.
Breaking changes
- The semantics of
range_rev
have changed. This will break your code without warning. It is now, to use interval notation,(hi, lo]
rather than[hi, lo)
. pub extern
andpriv extern
have been removed from the language. This matches the previous similar change toimpl
. Place the visibility qualifier (pub
/priv
) on each item in theextern
block instead.&T
(besides&'static T
) is no longer allowed in@T
.- The
ThreadPerCore
spawn mode has been removed, as it doesn't make sense with the new scheduler. - The
consume
methods 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.
- The
swap_unwrap
method of Option has been renamed totake_unwrap
. debug!
statements generate no code unless you pass--cfg debug
torustc
. This should help keep code size down and make your programs a (tiny bit) faster. Now you don't have to feel bad about havingdebug!
in hot code.- The
mutate_values
method 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
-h
/--help
option. - Metric capturing + racheting has been added for benchmarks.
local_data
now has aget_mut
function.extra::semver
has been updated to SemVer 2.0.0.- Consuming iterators have been added for the hash structures.
extra::ringbuf
now implements DoubleEndedIterator.Eq
now has a default implementation ofne
.extra::term
now 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::attr
has 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.
- A
no_implicit_prelude
attribute has been added, which prevents prelude injection in the module hierarchy starting at the item which that attribute is added to. - C-style enum variants are now
allowed in
[T, ..n]
expressions. - All language items are now optional. The compiler emits an error if a language item is used but not provided.
- The removal of
spanned<T>
has begun. - Headers have been removed for
~str
and~[T]
whereT
is unmanaged.
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.
--quiet
is 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.
Meetings
The Tuesday meeting discussed nothing at all of importance.