Welcome to another issue of This Week in Rust. This week introduces raw string literals, the removal of the rust tool, feature gating, and the privacy overhaul.

What's cooking on master?

Only 51 PRs were merged this week, though the ones that were were fairly large.

Breaking changes

  • Visibility and privacy have been defined, and the new semantics are slightly incompatible with the old. The details are here.
  • Feature gating has been added to the compiler. This allows us to mask language features that we don't want to commit to for 1.0. The compiler will tell you when you are using an "experimental" feature. The current experimentals are glob imports, macro definitions, and struct-like variants in enums. This is an important step forward for 1.0 which, apparently, is right around the corner.
  • The rust tool has been removed.
  • Option's API has been massively simplified, and changed to be composable.
  • Strings are no longer allowed to be modified in safe code. Things like let s = ~"abcdefg"; s[4] = 0x99; are now rejected. This is because it allows one to create invalid (non-UTF8) string values.
  • extra::rc has graduated to std::rc.
  • extra::tempfile::mkdtemp has been replaced with an RAII wrapper.
  • std::rand has been improved, but changes the public API of Rng a bit.
  • IntConvertible has been removed in favor of ToPrimitive and FromPrimitive, which can be derived for enums, making interacting with C APIs substantially more DRY.

Other changes

Weekly Meeting

The weekly meeting discussed some administrative things, the removal of crypto code, the removal of the rust tool, and functions.

Announcements etc