Lang
This week we discussed and made decisions on several nominated issues and PRs, including:
- Remove volatile semantics for atomics (https://github.com/rust-lang/rust/pull/30962)
- Merge, perhaps while adding additional operations with volatile semantics.
- Loosen restriction around
use
/extern crate
in blocks (https://github.com/rust-lang/rust/pull/31144)- Merge, consider lint in the long run.
- Accessing variants through a type alias (https://github.com/rust-lang/rust/pull/31179)
- Close; given some of the tricky questions that have come up, we’d like an RFC here.
- Unsafely ascribe
'static
bounds (https://github.com/rust-lang/rust/issues/31196)- Close in favor of an RFC.
We reached a
basic decision
on the ?
/try
/catch
RFC, which is that we plan to merge the
RFC. However, there remains some bikeshedding to be done, so we will
have one more week of FCP to sort out the keywords:
- FCP PR #243: Trait-based exception handling
We moved two features into final comment period (FCP) for stabilization in Rust 1.8:
-
FCP Issue #28235:
Tracking issue for overloaded
+=
operators (RFC 953) (feature augmented_assignments) -
FCP Issue #29720:
Tracking issue for
braced_empty_structs
(RFC 218)
Finally, we brought two RFCs into final comment period (FCP):
- FCP PR #1210: RFC: impl specialization
- FCP PR #1445: Restrict constants in patterns
Libs
This week we moved several RFCs into final comment period (FCP):
- FCP PR #1299: std::sync::mpsc::SharedSender
- FCP PR #1353: Add retain_mut to Vec and VecDeque
- FCP PR #1359: RFC: Add CommandExt::{exec, before_exec}
- FCP PR #1415: RFC: Deprecate type aliases in std::os::*::raw
- FCP PR #1423: Amend RFC 1270 to describe actual implementation
We also selected unstable APIs to consider for stabilization or deprecation in Rust 1.8:
-
str::encode_utf16
- Recommendation: stabilize (renamed from
utf16_units
)
- Recommendation: stabilize (renamed from
-
scoped tls
- Recommendation: deprecate (move to crates.io probably)
-
cell extras
- Recommendation: stabilize
map
, deprecatefilter_map
, also handle other guard types
- Recommendation: stabilize
-
Condvar::wait_timeout_with
- Recommendation: deprecate
-
raw ptr
as_ref
- On the fence, comments welcome!
-
make_ascii_uppercase
- Recommendation: deprecate
-
drop_in_place
- Recommendation: stabilize, but would like comments on
*mut T
vs&mut T
- Recommendation: stabilize, but would like comments on
-
overloaded += operators
- Recommendation: stabilize
-
std::time
- Recommendation: stabilize, but rename
duration_from_earlier
- Recommendation: stabilize, but rename
-
panic::recover
- Recommendation: neither stabilize nor deprecate, but we would like to make a decision for the 1.9 release, so we’re trying to instigate early discussion about this controversial API.
Tools
This was a busy past few weeks for the tools in Rust, especially in the realm of Cargo!
- An initial port for powerpc64 and powerpc64le targets has been added.
- Static libraries and import libraries for MSVC have been renamed to have more conventional names on Windows.
- Binaries on Linux and BSDs now have the NX bit set. This brings these platforms in line with the behavior on Windows and OSX.
- A new
cargo init
subcommand has been implemented to initialize pre-existing Rust projects with Cargo configuration. - A new
cargo metadata
subcommand has been implemented to learn about a Cargo project through the CLI via JSON output. - The meaning of
cargo install
as a plain command has been changed to install the current crate (e.g. the one at$PWD
). - A new
project.publish
key in Cargo.toml has been added to indicate that a crate cannot be published to crates.io.