Rust, positioned as a fast systems programming language immune to most crashes, has moved to a feature-complete 1.0 alpha release stage.
A blog post on Rust late last week from the Rust Core Team described the alpha release as a "huge milestone" for the language, which has been a Mozilla Research project. "While we plan to make many usability improvements before the final release," the post says. "All 1.0 language features are now in place, and we do not expect major breaking changes to them."
API conventions have been established, while core functionality, including traits, data structures, and concurrency primitives, have been stabilized. A beta1 release is expected the week of February 16 while a general Rust 1.0.0 release is expected following one or more subsequent six-week release cycles. "Code that compiles on the beta release should do so with minimal changes on 1.0 final as well," the team said.
The alpha release includes dynamically sized types, in which types whose size is only known at runtime are largely integrated into the language; multi-dispatch traits, in which trait implementations can be selected via multiple types; associated types, which cut down on verbosity with generics in traits; and where clauses, which provide a new way of specifying trait bounds.
An "unboxed" closures feature, meanwhile, provides that closures are now just another way of using the trait system, offering greater flexibility. The macro_rules system has been revised, and integer type changes have been made as well, with int and uint now known as isize and usize. They no longer suggest the role of "default integer." Also, marker traits used by Rust to classify data as copy-able, thread-safe, and so forth have been refactored for safer and more predictable defaults.
The Rust team also is offering a list of possible breaking changes to stable features/APIs. While any unstable API may change, big changes are expected in path and IO reform. Library features, meanwhile, include consistent conventions and stable core types and traits. Rust's concurrency modules have been overhauled, including thread-local storage and synchronization primitives. Rust's runtime system and green-threading model have been removed, cutting the static binary size of "hello world" in half.