← Back to all releases

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