0.3.0

0.3.0 #

  • Released on: 12 July, 2012
  • Branched from master on: 4 December, 2015
  • ~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