Skip to content

Rust 0.3

Compare
Choose a tag to compare
@pietroalbini pietroalbini released this 07 Sep 16:53
· 115303 commits to master since this release
  • ~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