Rust 0.3.0
Released on July 12, 2012
What's Changed
- ~1900 changes, numerous bugfixes
- New coding conveniences
- Integer-literal suffix inference
- Per-item control over warnings, errors
- #[cfg(windows)] and #[cfg(unix)] attributes
- Documentation comments
- More compact closure syntax
- 'do' expressions for treating higher-order functions as
- *-patterns (wildcard extended to all constructor fields)
- Semantic cleanup
- Name resolution pass and exhaustiveness checker rewritten
- Region pointers and borrow checking supersede alias
- Init-ness checking is now provided by a region-based liveness
- Extensive work on region pointers
- Experimental new language features
- Slices and fixed-size, interior-allocated vectors
- #!-comments for lang versioning, shell execution
- Destructors and iface implementation for classes;
- 'const' type kind for types that can be used to implement
- Type reflection
- Removal of various obsolete features
- Keywords: 'be', 'prove', 'syntax', 'note', 'mutable', 'bind',
- Constructs: do-while loops ('do' repurposed), fn binding,
- Compiler reorganization
- Syntax-layer of compiler split into separate crate
- Clang (from LLVM project) integrated into build
- Typechecker split into sub-modules
- New library code
- New time functions
- Extension methods for many built-in types
- Arc: atomic-refcount read-only / exclusive-use shared cells
- Par: parallel map and search routines
- Extensive work on libuv interface
- Much vector code moved to libraries
- Syntax extensions: #line, #col, #file, #mod, #stringify,
- Tool improvements
- Cargo automatically resolves dependencies
Full Changelog
* ~1900 changes, numerous bugfixes
* New coding conveniences
* Integer-literal suffix inference
* Per-item control over warnings, errors
* #[cfg(windows)] and #[cfg(unix)] attributes
* Documentation comments
* More compact closure syntax
* 'do' expressions for treating higher-order functions as
control structures
-patterns (wildcard extended to all constructor fields)* Semantic cleanup
* Name resolution pass and exhaustiveness checker rewritten
* Region pointers and borrow checking supersede alias
analysis
* Init-ness checking is now provided by a region-based liveness
pass instead of the typestate pass; same for last-use analysis
* Extensive work on region pointers
* Experimental new language features
* Slices and fixed-size, interior-allocated vectors
* #!-comments for lang versioning, shell execution
* Destructors and iface implementation for classes;
type-parameterized classes and class methods
* 'const' type kind for types that can be used to implement
shared-memory concurrency patterns
* Type reflection
* Removal of various obsolete features
* Keywords: 'be', 'prove', 'syntax', 'note', 'mutable', 'bind',
'crust', 'native' (now 'extern'), 'cont' (now 'again')
* Constructs: do-while loops ('do' repurposed), fn binding,
resources (replaced by destructors)
* Compiler reorganization
* Syntax-layer of compiler split into separate crate
* Clang (from LLVM project) integrated into build
* Typechecker split into sub-modules
* New library code
* New time functions
* Extension methods for many built-in types
* Arc: atomic-refcount read-only / exclusive-use shared cells
* Par: parallel map and search routines
* Extensive work on libuv interface
* Much vector code moved to libraries
* Syntax extensions: #line, #col, #file, #mod, #stringify,
#include, #include_str, #include_bin
* Tool improvements
* Cargo automatically resolves dependencies