Version 0.3 (July 2012) - not yet! ----------------------------------- * ~1500 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 * Alias analysis is now done with region pointers and pointer borrowing * 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') * 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 Version 0.2 (March 2012) ------------------------- * >1500 changes, numerous bugfixes * New docs and doc tooling * New port: FreeBSD x86_64 * Compilation model enhancements * Generics now specialized, multiply instantiated * Functions now inlined across separate crates * Scheduling, stack and threading fixes * Noticeably improved message-passing performance * Explicit schedulers * Callbacks from C * Helgrind clean * Experimental new language features * Operator overloading * Region pointers * Classes * Various language extensions * C-callback function types: 'crust fn ...' * Infinite-loop construct: 'loop { ... }' * Shorten 'mutable' to 'mut' * Required mutable-local qualifier: 'let mut ...' * Basic glob-exporting: 'export foo::*;' * Alt now exhaustive, 'alt check' for runtime-checked * Block-function form of 'for' loop, with 'break' and 'ret'. * New library code * AST quasi-quote syntax extension * Revived libuv interface * New modules: core::{future, iter}, std::arena * Merged per-platform std::{os*, fs*} to core::{libc, os} * Extensive cleanup, regularization in libstd, libcore Version 0.1 (January 2012) --------------------------- * Most language features work, including: * Unique pointers, unique closures, move semantics * Interface-constrained generics * Static interface dispatch * Stack growth * Multithread task scheduling * Typestate predicates * Failure unwinding, destructors * Pattern matching and destructuring assignment * Lightweight block-lambda syntax * Preliminary macro-by-example * Compiler works with the following configurations: * Linux: x86 and x86_64 hosts and targets * MacOS: x86 and x86_64 hosts and targets * Windows: x86 hosts and targets * Cross compilation / multi-target configuration supported. * Preliminary API-documentation and package-management tools included. Known issues: * Documentation is incomplete. * Performance is below intended target. * Standard library APIs are subject to extensive change, reorganization. * Language-level versioning is not yet operational - future code will break unexpectedly.