What is the stabilization process? Reading the release notes I see a lot of different standard library APIs and even language features (e.g. underscore lifetimes). How does
Rust favors an agile approach to introducing features and APIs, in order to iterate on them based on feedback1.
However, iterating over the design of features or APIs is at odds with Rust strong commitment to backward compatibility (aka stability). Therefore, the Stabilization Process was designed to resolve this apparent conundrum:
#![feature] in their crate,This way, enthusiasts can use nightly to experiment with the feature, and provide feedback to polish it, while any other user can use any feature available and be confident they will not accidentally use an unstable one.
Once a feature is judged ready, the final step is to have the team in charge approve it; the feature gate is then removed and the feature becomes available on all channels (though it takes some time to propagate from nightly to stable, of course).
1 A famous example of specification failure was the "export template" functionality of C++98; it was only ever implemented in the EDG front-end and this sole feature took over a year. Since then, the C++ committee generally requires prototype implementations.