2 ---------------------------
5 * `core::send_map` renamed to `core::hashmap`
7 Version 0.5 (December 2012)
8 ---------------------------
10 * ~900 changes, numerous bugfixes
13 * Removed `<-` move operator
14 * Completed the transition from the `#fmt` extension syntax to `fmt!`
15 * Removed old fixed length vector syntax - `[T]/N`
16 * New token-based quasi-quoters, `quote_tokens!`, `quote_expr!`, etc.
17 * Macros may now expand to items and statements
18 * `a.b()` is always parsed as a method call, never as a field projection
19 * `Eq` and `IterBytes` implementations can be automatically generated
20 with `#[deriving_eq]` and `#[deriving_iter_bytes]` respectively
21 * Removed the special crate language for `.rc` files
22 * Function arguments may consist of any irrefutable pattern
25 * `&` and `~` pointers may point to objects
26 * Tuple structs - `struct Foo(Bar, Baz)`. Will replace newtype enums.
27 * Enum variants may be structs
28 * Destructors can be added to all nominal types with the Drop trait
29 * Structs and nullary enum variants may be constants
30 * Values that cannot be implicitly copied are now automatically moved
31 without writing `move` explicitly
32 * `&T` may now be coerced to `*T`
33 * Coercions happen in `let` statements as well as function calls
34 * `use` statements now take crate-relative paths
35 * The module and type namespaces have been merged so that static
36 method names can be resolved under the trait in which they are
39 * Improved support for language features
40 * Trait inheritance works in many scenarios
41 * More support for explicit self arguments in methods - `self`, `&self`
42 `@self`, and `~self` all generally work as expected
43 * Static methods work in more situations
44 * Experimental: Traits may declare default methods for the implementations
48 * New condition handling system in `core::condition`
49 * Timsort added to `std::sort`
50 * New priority queue, `std::priority_queue`
51 * Pipes for serializable types, `std::flatpipes'
52 * Serialization overhauled to be trait-based
53 * Expanded `getopts` definitions
54 * Moved futures to `std`
55 * More functions are pure now
56 * `core::comm` renamed to `oldcomm`. Still deprecated
57 * `rustdoc` and `cargo` are libraries now
60 * Added a preliminary REPL, `rusti`
61 * License changed from MIT to dual MIT/APL2
63 Version 0.4 (October 2012)
64 --------------------------
66 * ~2000 changes, numerous bugfixes
69 * All keywords are now strict and may not be used as identifiers anywhere
70 * Keyword removal: 'again', 'import', 'check', 'new', 'owned', 'send',
71 'of', 'with', 'to', 'class'.
72 * Classes are replaced with simpler structs
73 * Explicit method self types
74 * `ret` became `return` and `alt` became `match`
75 * `import` is now `use`; `use is now `extern mod`
76 * `extern mod { ... }` is now `extern { ... }`
77 * `use mod` is the recommended way to import modules
78 * `pub` and `priv` replace deprecated export lists
79 * The syntax of `match` pattern arms now uses fat arrow (=>)
80 * `main` no longer accepts an args vector; use `os::args` instead
83 * Trait implementations are now coherent, ala Haskell typeclasses
84 * Trait methods may be static
85 * Argument modes are deprecated
86 * Borrowed pointers are much more mature and recommended for use
87 * Strings and vectors in the static region are stored in constant memory
88 * Typestate was removed
89 * Resolution rewritten to be more reliable
90 * Support for 'dual-mode' data structures (freezing and thawing)
93 * Most binary operators can now be overloaded via the traits in
95 * `std::net::url` for representing URLs
96 * Sendable hash maps in `core::send_map`
97 * `core::task' gained a (currently unsafe) task-local storage API
100 * An efficient new intertask communication primitive called the pipe,
101 along with a number of higher-level channel types, in `core::pipes`
102 * `std::arc`, an atomically reference counted, immutable, shared memory
104 * `std::sync`, various exotic synchronization tools based on arcs and pipes
105 * Futures are now based on pipes and sendable
106 * More robust linked task failure
107 * Improved task builder API
110 * Improved error reporting
111 * Preliminary JIT support
112 * Preliminary work on precise GC
113 * Extensive architectural improvements to rustc
114 * Begun a transition away from buggy C++-based reflection (shape) code to
115 Rust-based (visitor) code
116 * All hash functions and tables converted to secure, randomized SipHash
118 Version 0.3 (July 2012)
119 ------------------------
121 * ~1900 changes, numerous bugfixes
123 * New coding conveniences
124 * Integer-literal suffix inference
125 * Per-item control over warnings, errors
126 * #[cfg(windows)] and #[cfg(unix)] attributes
127 * Documentation comments
128 * More compact closure syntax
129 * 'do' expressions for treating higher-order functions as
131 * *-patterns (wildcard extended to all constructor fields)
134 * Name resolution pass and exhaustiveness checker rewritten
135 * Region pointers and borrow checking supersede alias
137 * Init-ness checking is now provided by a region-based liveness
138 pass instead of the typestate pass; same for last-use analysis
139 * Extensive work on region pointers
141 * Experimental new language features
142 * Slices and fixed-size, interior-allocated vectors
143 * #!-comments for lang versioning, shell execution
144 * Destructors and iface implementation for classes;
145 type-parameterized classes and class methods
146 * 'const' type kind for types that can be used to implement
147 shared-memory concurrency patterns
151 * Removal of various obsolete features
152 * Keywords: 'be', 'prove', 'syntax', 'note', 'mutable', 'bind',
153 'crust', 'native' (now 'extern'), 'cont' (now 'again')
155 * Constructs: do-while loops ('do' repurposed), fn binding,
156 resources (replaced by destructors)
158 * Compiler reorganization
159 * Syntax-layer of compiler split into separate crate
160 * Clang (from LLVM project) integrated into build
161 * Typechecker split into sub-modules
165 * Extension methods for many built-in types
166 * Arc: atomic-refcount read-only / exclusive-use shared cells
167 * Par: parallel map and search routines
168 * Extensive work on libuv interface
169 * Much vector code moved to libraries
170 * Syntax extensions: #line, #col, #file, #mod, #stringify,
171 #include, #include_str, #include_bin
174 * Cargo automatically resolves dependencies
176 Version 0.2 (March 2012)
177 -------------------------
179 * >1500 changes, numerous bugfixes
181 * New docs and doc tooling
183 * New port: FreeBSD x86_64
185 * Compilation model enhancements
186 * Generics now specialized, multiply instantiated
187 * Functions now inlined across separate crates
189 * Scheduling, stack and threading fixes
190 * Noticeably improved message-passing performance
191 * Explicit schedulers
195 * Experimental new language features
196 * Operator overloading
200 * Various language extensions
201 * C-callback function types: 'crust fn ...'
202 * Infinite-loop construct: 'loop { ... }'
203 * Shorten 'mutable' to 'mut'
204 * Required mutable-local qualifier: 'let mut ...'
205 * Basic glob-exporting: 'export foo::*;'
206 * Alt now exhaustive, 'alt check' for runtime-checked
207 * Block-function form of 'for' loop, with 'break' and 'ret'.
210 * AST quasi-quote syntax extension
211 * Revived libuv interface
212 * New modules: core::{future, iter}, std::arena
213 * Merged per-platform std::{os*, fs*} to core::{libc, os}
214 * Extensive cleanup, regularization in libstd, libcore
216 Version 0.1 (January 2012)
217 ---------------------------
219 * Most language features work, including:
220 * Unique pointers, unique closures, move semantics
221 * Interface-constrained generics
222 * Static interface dispatch
224 * Multithread task scheduling
225 * Typestate predicates
226 * Failure unwinding, destructors
227 * Pattern matching and destructuring assignment
228 * Lightweight block-lambda syntax
229 * Preliminary macro-by-example
231 * Compiler works with the following configurations:
232 * Linux: x86 and x86_64 hosts and targets
233 * MacOS: x86 and x86_64 hosts and targets
234 * Windows: x86 hosts and targets
236 * Cross compilation / multi-target configuration supported.
238 * Preliminary API-documentation and package-management tools included.
242 * Documentation is incomplete.
244 * Performance is below intended target.
246 * Standard library APIs are subject to extensive change, reorganization.
248 * Language-level versioning is not yet operational - future code will