Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

244 lines (200 sloc) 9.411 kb
Version 0.5 (December 2012)
* ~900 changes, numerous bugfixes
* Syntax changes
* Removed `<-` move operator
* Completed the transition from the `#fmt` extension syntax to `fmt!`
* Removed old fixed length vector syntax - `[T]/N`
* New token-based quasi-quoters, `quote_tokens!`, `quote_expr!`, etc.
* Macros may now expand to items and statements
* `a.b()` is always parsed as a method call, never as a field projection
* `Eq` and `IterBytes` implementations can be automatically generated
with `#[deriving_eq]` and `#[deriving_iter_bytes]` respectively
* Removed the special crate language for `.rc` files
* Function arguments may consist of any irrefutable pattern
* Semantic changes
* `&` and `~` pointers may point to objects
* Tuple structs - `struct Foo(Bar, Baz)`. Will replace newtype enums.
* Enum variants may be structs
* Destructors can be added to all nominal types with the Drop trait
* Structs and nullary enum variants may be constants
* Values that cannot be implicitly copied are now automatically moved
without writing `move` explicitly
* `&T` may now be coerced to `*T`
* Coercions happen in `let` statements as well as function calls
* `use` statements now take crate-relative paths
* The module and type namespaces have been merged so that static
method names can be resolved under the trait in which they are
* Improved support for language features
* Trait inheritance works in many scenarios
* More support for explicit self arguments in methods - `self`, `&self`
`@self`, and `~self` all generally work as expected
* Static methods work in more situations
* Experimental: Traits may declare default methods for the implementations
to use
* Libraries
* New condition handling system in `core::condition`
* Timsort added to `std::sort`
* New priority queue, `std::priority_queue`
* Pipes for serializable types, `std::flatpipes'
* Serialization overhauled to be trait-based
* Expanded `getopts` definitions
* Moved futures to `std`
* More functions are pure now
* `core::comm` renamed to `oldcomm`. Still deprecated
* `rustdoc` and `cargo` are libraries now
* Misc
* Added a preliminary REPL, `rusti`
* License changed from MIT to dual MIT/APL2
Version 0.4 (October 2012)
* ~2000 changes, numerous bugfixes
* Syntax
* All keywords are now strict and may not be used as identifiers anywhere
* Keyword removal: 'again', 'import', 'check', 'new', 'owned', 'send',
'of', 'with', 'to', 'class'.
* Classes are replaced with simpler structs
* Explicit method self types
* `ret` became `return` and `alt` became `match`
* `import` is now `use`; `use is now `extern mod`
* `extern mod { ... }` is now `extern { ... }`
* `use mod` is the recommended way to import modules
* `pub` and `priv` replace deprecated export lists
* The syntax of `match` pattern arms now uses fat arrow (=>)
* `main` no longer accepts an args vector; use `os::args` instead
* Semantics
* Trait implementations are now coherent, ala Haskell typeclasses
* Trait methods may be static
* Argument modes are deprecated
* Borrowed pointers are much more mature and recommended for use
* Strings and vectors in the static region are stored in constant memory
* Typestate was removed
* Resolution rewritten to be more reliable
* Support for 'dual-mode' data structures (freezing and thawing)
* Libraries
* Most binary operators can now be overloaded via the traits in
* `std::net::url` for representing URLs
* Sendable hash maps in `core::send_map`
* `core::task' gained a (currently unsafe) task-local storage API
* Concurrency
* An efficient new intertask communication primitive called the pipe,
along with a number of higher-level channel types, in `core::pipes`
* `std::arc`, an atomically reference counted, immutable, shared memory
* `std::sync`, various exotic synchronization tools based on arcs and pipes
* Futures are now based on pipes and sendable
* More robust linked task failure
* Improved task builder API
* Other
* Improved error reporting
* Preliminary JIT support
* Preliminary work on precise GC
* Extensive architectural improvements to rustc
* Begun a transition away from buggy C++-based reflection (shape) code to
Rust-based (visitor) code
* All hash functions and tables converted to secure, randomized SipHash
Version 0.3 (July 2012)
* ~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
* 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
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.
Jump to Line
Something went wrong with that request. Please try again.