about summary refs log tree commit diff
path: root/RELEASES.md
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2014-10-02 16:18:27 -0700
committerBrian Anderson <banderson@mozilla.com>2014-10-07 11:18:47 -0700
commitea4d5d2a2448de8f2299f30dfa4fcc5b39ecd078 (patch)
treeff29d6af2e9ec865a7d90b7eabee199a8a5d8c30 /RELEASES.md
parent95090922b376530e356e5160faef50bee18761da (diff)
downloadrust-ea4d5d2a2448de8f2299f30dfa4fcc5b39ecd078.tar.gz
rust-ea4d5d2a2448de8f2299f30dfa4fcc5b39ecd078.zip
Rename RELEASES.txt to RELEASES.md. It's markdown.
Diffstat (limited to 'RELEASES.md')
-rw-r--r--RELEASES.md1079
1 files changed, 1079 insertions, 0 deletions
diff --git a/RELEASES.md b/RELEASES.md
new file mode 100644
index 00000000000..ba87e575056
--- /dev/null
+++ b/RELEASES.md
@@ -0,0 +1,1079 @@
+Version 0.11.0 (July 2014)
+-------------------------
+
+  * ~1700 changes, numerous bugfixes
+
+  * Language
+    * ~[T] has been removed from the language. This type is superseded by
+      the Vec<T> type.
+    * ~str has been removed from the language. This type is superseded by
+      the String type.
+    * ~T has been removed from the language. This type is superseded by the
+      Box<T> type.
+    * @T has been removed from the language. This type is superseded by the
+      standard library's std::gc::Gc<T> type.
+    * Struct fields are now all private by default.
+    * Vector indices and shift amounts are both required to be a `uint`
+      instead of any integral type.
+    * Byte character, byte string, and raw byte string literals are now all
+      supported by prefixing the normal literal with a `b`.
+    * Multiple ABIs are no longer allowed in an ABI string
+    * The syntax for lifetimes on closures/procedures has been tweaked
+      slightly: `<'a>|A, B|: 'b + K -> T`
+    * Floating point modulus has been removed from the language; however it
+      is still provided by a library implementation.
+    * Private enum variants are now disallowed.
+    * The `priv` keyword has been removed from the language.
+    * A closure can no longer be invoked through a &-pointer.
+    * The `use foo, bar, baz;` syntax has been removed from the language.
+    * The transmute intrinsic no longer works on type parameters.
+    * Statics now allow blocks/items in their definition.
+    * Trait bounds are separated from objects with + instead of : now.
+    * Objects can no longer be read while they are mutably borrowed.
+    * The address of a static is now marked as insignificant unless the
+      #[inline(never)] attribute is placed it.
+    * The #[unsafe_destructor] attribute is now behind a feature gate.
+    * Struct literals are no longer allowed in ambiguous positions such as
+      if, while, match, and for..in.
+    * Declaration of lang items and intrinsics are now feature-gated by
+      default.
+    * Integral literals no longer default to `int`, and floating point
+      literals no longer default to `f64`. Literals must be suffixed with an
+      appropriate type if inference cannot determine the type of the
+      literal.
+    * The Box<T> type is no longer implicitly borrowed to &mut T.
+    * Procedures are now required to not capture borrowed references.
+
+  * Libraries
+    * The standard library is now a "facade" over a number of underlying
+      libraries. This means that development on the standard library should
+      be speeder due to smaller crates, as well as a clearer line between
+      all dependencies.
+    * A new library, libcore, lives under the standard library's facade
+      which is Rust's "0-assumption" library, suitable for embedded and
+      kernel development for example.
+    * A regex crate has been added to the standard distribution. This crate
+      includes statically compiled regular expressions.
+    * The unwrap/unwrap_err methods on Result require a Show bound for
+      better error messages.
+    * The return types of the std::comm primitives have been centralized
+      around the Result type.
+    * A number of I/O primitives have gained the ability to time out their
+      operations.
+    * A number of I/O primitives have gained the ability to close their
+      reading/writing halves to cancel pending operations.
+    * Reverse iterator methods have been removed in favor of `rev()` on
+      their forward-iteration counterparts.
+    * A bitflags! macro has been added to enable easy interop with C and
+      management of bit flags.
+    * A debug_assert! macro is now provided which is disabled when
+      `--cfg ndebug` is passed to the compiler.
+    * A graphviz crate has been added for creating .dot files.
+    * The std::cast module has been migrated into std::mem.
+    * The std::local_data api has been migrated from freestanding functions
+      to being based on methods.
+    * The Pod trait has been renamed to Copy.
+    * jemalloc has been added as the default allocator for types.
+    * The API for allocating memory has been changed to use proper alignment
+      and sized deallocation
+    * Connecting a TcpStream or binding a TcpListener is now based on a
+      string address and a u16 port. This allows connecting to a hostname as
+      opposed to an IP.
+    * The Reader trait now contains a core method, read_at_least(), which
+      correctly handles many repeated 0-length reads.
+    * The process-spawning API is now centered around a builder-style
+      Command struct.
+    * The :? printing qualifier has been moved from the standard library to
+      an external libdebug crate.
+    * Eq/Ord have been renamed to PartialEq/PartialOrd. TotalEq/TotalOrd
+      have been renamed to Eq/Ord.
+    * The select/plural methods have been removed from format!. The escapes
+      for { and } have also changed from \{ and \} to {{ and }},
+      respectively.
+    * The TaskBuilder API has been re-worked to be a true builder, and
+      extension traits for spawning native/green tasks have been added.
+
+  * Tooling
+    * All breaking changes to the language or libraries now have their
+      commit message annotated with `[breaking-change]` to allow for easy
+      discovery of breaking changes.
+    * The compiler will now try to suggest how to annotate lifetimes if a
+      lifetime-related error occurs.
+    * Debug info continues to be improved greatly with general bug fixes and
+      better support for situations like link time optimization (LTO).
+    * Usage of syntax extensions when cross-compiling has been fixed.
+    * Functionality equivalent to GCC & Clang's -ffunction-sections,
+      -fdata-sections and --gc-sections has been enabled by default
+    * The compiler is now stricter about where it will load module files
+      from when a module is declared via `mod foo;`.
+    * The #[phase(syntax)] attribute has been renamed to #[phase(plugin)].
+      Syntax extensions are now discovered via a "plugin registrar" type
+      which will be extended in the future to other various plugins.
+    * Lints have been restructured to allow for dynamically loadable lints.
+    * A number of rustdoc improvements:
+      * The HTML output has been visually redesigned.
+      * Markdown is now powered by hoedown instead of sundown.
+      * Searching heuristics have been greatly improved.
+      * The search index has been reduced in size by a great amount.
+      * Cross-crate documentation via `pub use` has been greatly improved.
+      * Primitive types are now hyperlinked and documented.
+    * Documentation has been moved from static.rust-lang.org/doc to
+      doc.rust-lang.org
+    * A new sandbox, play.rust-lang.org, is available for running and
+      sharing rust code examples on-line.
+    * Unused attributes are now more robustly warned about.
+    * The dead_code lint now warns about unused struct fields.
+    * Cross-compiling to iOS is now supported.
+    * Cross-compiling to mipsel is now supported.
+    * Stability attributes are now inherited by default and no longer apply
+      to intra-crate usage, only inter-crate usage.
+    * Error message related to non-exhaustive match expressions have been
+      greatly improved.
+
+Version 0.10 (April 2014)
+-------------------------
+
+  * ~1500 changes, numerous bugfixes
+
+  * Language
+    * A new RFC process is now in place for modifying the language.
+    * Patterns with `@`-pointers have been removed from the language.
+    * Patterns with unique vectors (`~[T]`) have been removed from the
+      language.
+    * Patterns with unique strings (`~str`) have been removed from the
+      language.
+    * `@str` has been removed from the language.
+    * `@[T]` has been removed from the language.
+    * `@self` has been removed from the language.
+    * `@Trait` has been removed from the language.
+    * Headers on `~` allocations which contain `@` boxes inside the type for
+      reference counting have been removed.
+    * The semantics around the lifetimes of temporary expressions have changed,
+      see #3511 and #11585 for more information.
+    * Cross-crate syntax extensions are now possible, but feature gated. See
+      #11151 for more information. This includes both `macro_rules!` macros as
+      well as syntax extensions such as `format!`.
+    * New lint modes have been added, and older ones have been turned on to be
+      warn-by-default.
+      * Unnecessary parentheses
+      * Uppercase statics
+      * Camel Case types
+      * Uppercase variables
+      * Publicly visible private types
+      * `#[deriving]` with raw pointers
+    * Unsafe functions can no longer be coerced to closures.
+    * Various obscure macros such as `log_syntax!` are now behind feature gates.
+    * The `#[simd]` attribute is now behind a feature gate.
+    * Visibility is no longer allowed on `extern crate` statements, and
+      unnecessary visibility (`priv`) is no longer allowed on `use` statements.
+    * Trailing commas are now allowed in argument lists and tuple patterns.
+    * The `do` keyword has been removed, it is now a reserved keyword.
+    * Default type parameters have been implemented, but are feature gated.
+    * Borrowed variables through captures in closures are now considered soundly.
+    * `extern mod` is now `extern crate`
+    * The `Freeze` trait has been removed.
+    * The `Share` trait has been added for types that can be shared among
+      threads.
+    * Labels in macros are now hygienic.
+    * Expression/statement macro invocations can be delimited with `{}` now.
+    * Treatment of types allowed in `static mut` locations has been tweaked.
+    * The `*` and `.` operators are now overloadable through the `Deref` and
+      `DerefMut` traits.
+    * `~Trait` and `proc` no longer have `Send` bounds by default.
+    * Partial type hints are now supported with the `_` type marker.
+    * An `Unsafe` type was introduced for interior mutability. It is now
+      considered undefined to transmute from `&T` to `&mut T` without using the
+      `Unsafe` type.
+    * The #[linkage] attribute was implemented for extern statics/functions.
+    * The inner attribute syntax has changed from `#[foo];` to `#![foo]`.
+    * `Pod` was renamed to `Copy`.
+
+  * Libraries
+    * The `libextra` library has been removed. It has now been decomposed into
+      component libraries with smaller and more focused nuggets of
+      functionality. The full list of libraries can be found on the
+      documentation index page.
+    * std: `std::condition` has been removed. All I/O errors are now propagated
+      through the `Result` type. In order to assist with error handling, a
+      `try!` macro for unwrapping errors with an early return and a lint for
+      unused results has been added. See #12039 for more information.
+    * std: The `vec` module has been renamed to `slice`.
+    * std: A new vector type, `Vec<T>`, has been added in preparation for DST.
+      This will become the only growable vector in the future.
+    * std: `std::io` now has more public-reexports. Types such as `BufferedReader`
+      are now found at `std::io::BufferedReader` instead of
+      `std::io::buffered::BufferedReader`.
+    * std: `print` and `println` are no longer in the prelude, the `print!` and
+      `println!` macros are intended to be used instead.
+    * std: `Rc` now has a `Weak` pointer for breaking cycles, and it no longer
+      attempts to statically prevent cycles.
+    * std: The standard distribution is adopting the policy of pushing failure
+      to the user rather than failing in libraries. Many functions (such as
+      `slice::last()`) now return `Option<T>` instead of `T` + failing.
+    * std: `fmt::Default` has been renamed to `fmt::Show`, and it now has a new
+      deriving mode: `#[deriving(Show)]`.
+    * std: `ToStr` is now implemented for all types implementing `Show`.
+    * std: The formatting trait methods now take `&self` instead of `&T`
+    * std: The `invert()` method on iterators has been renamed to `rev()`
+    * std: `std::num` has seen a reduction in the genericity of its traits,
+      consolidating functionality into a few core traits.
+    * std: Backtraces are now printed on task failure if the environment
+      variable `RUST_BACKTRACE` is present.
+    * std: Naming conventions for iterators have been standardized. More details
+      can be found on the wiki's style guide.
+    * std: `eof()` has been removed from the `Reader` trait. Specific types may
+      still implement the function.
+    * std: Networking types are now cloneable to allow simultaneous reads/writes.
+    * std: `assert_approx_eq!` has been removed
+    * std: The `e` and `E` formatting specifiers for floats have been added to
+      print them in exponential notation.
+    * std: The `Times` trait has been removed
+    * std: Indications of variance and opting out of builtin bounds is done
+      through marker types in `std::kinds::marker` now
+    * std: `hash` has been rewritten, `IterBytes` has been removed, and
+      `#[deriving(Hash)]` is now possible.
+    * std: `SharedChan` has been removed, `Sender` is now cloneable.
+    * std: `Chan` and `Port` were renamed to `Sender` and `Receiver`.
+    * std: `Chan::new` is now `channel()`.
+    * std: A new synchronous channel type has been implemented.
+    * std: A `select!` macro is now provided for selecting over `Receiver`s.
+    * std: `hashmap` and `trie` have been moved to `libcollections`
+    * std: `run` has been rolled into `io::process`
+    * std: `assert_eq!` now uses `{}` instead of `{:?}`
+    * std: The equality and comparison traits have seen some reorganization.
+    * std: `rand` has moved to `librand`.
+    * std: `to_{lower,upper}case` has been implemented for `char`.
+    * std: Logging has been moved to `liblog`.
+    * collections: `HashMap` has been rewritten for higher performance and less
+      memory usage.
+    * native: The default runtime is now `libnative`. If `libgreen` is desired,
+      it can be booted manually. The runtime guide has more information and
+      examples.
+    * native: All I/O functionality except signals has been implemented.
+    * green: Task spawning with `libgreen` has been optimized with stack caching
+      and various trimming of code.
+    * green: Tasks spawned by `libgreen` now have an unmapped guard page.
+    * sync: The `extra::sync` module has been updated to modern rust (and moved
+      to the `sync` library), tweaking and improving various interfaces while
+      dropping redundant functionality.
+    * sync: A new `Barrier` type has been added to the `sync` library.
+    * sync: An efficient mutex for native and green tasks has been implemented.
+    * serialize: The `base64` module has seen some improvement. It treats
+      newlines better, has non-string error values, and has seen general
+      cleanup.
+    * fourcc: A `fourcc!` macro was introduced
+    * hexfloat: A `hexfloat!` macro was implemented for specifying floats via a
+      hexadecimal literal.
+
+  * Tooling
+    * `rustpkg` has been deprecated and removed from the main repository. Its
+      replacement, `cargo`, is under development.
+    * Nightly builds of rust are now available
+    * The memory usage of rustc has been improved many times throughout this
+      release cycle.
+    * The build process supports disabling rpath support for the rustc binary
+      itself.
+    * Code generation has improved in some cases, giving more information to the
+      LLVM optimization passes to enable more extensive optimizations.
+    * Debuginfo compatibility with lldb on OSX has been restored.
+    * The master branch is now gated on an android bot, making building for
+      android much more reliable.
+    * Output flags have been centralized into one `--emit` flag.
+    * Crate type flags have been centralized into one `--crate-type` flag.
+    * Codegen flags have been consolidated behind a `-C` flag.
+    * Linking against outdated crates now has improved error messages.
+    * Error messages with lifetimes will often suggest how to annotate the
+      function to fix the error.
+    * Many more types are documented in the standard library, and new guides
+      were written.
+    * Many `rustdoc` improvements:
+      * code blocks are syntax highlighted.
+      * render standalone markdown files.
+      * the --test flag tests all code blocks by default.
+      * exported macros are displayed.
+      * reexported types have their documentation inlined at the location of the
+        first reexport.
+      * search works across crates that have been rendered to the same output
+        directory.
+
+Version 0.9 (January 2014)
+--------------------------
+
+   * ~1800 changes, numerous bugfixes
+
+   * Language
+      * The `float` type has been removed. Use `f32` or `f64` instead.
+      * A new facility for enabling experimental features (feature gating) has
+        been added, using the crate-level `#[feature(foo)]` attribute.
+      * Managed boxes (@) are now behind a feature gate
+        (`#[feature(managed_boxes)]`) in preparation for future removal. Use the
+        standard library's `Gc` or `Rc` types instead.
+      * `@mut` has been removed. Use `std::cell::{Cell, RefCell}` instead.
+      * Jumping back to the top of a loop is now done with `continue` instead of
+        `loop`.
+      * Strings can no longer be mutated through index assignment.
+      * Raw strings can be created via the basic `r"foo"` syntax or with matched
+        hash delimiters, as in `r###"foo"###`.
+      * `~fn` is now written `proc (args) -> retval { ... }` and may only be
+        called once.
+      * The `&fn` type is now written `|args| -> ret` to match the literal form.
+      * `@fn`s have been removed.
+      * `do` only works with procs in order to make it obvious what the cost
+        of `do` is.
+      * Single-element tuple-like structs can no longer be dereferenced to
+        obtain the inner value. A more comprehensive solution for overloading
+        the dereference operator will be provided in the future.
+      * The `#[link(...)]` attribute has been replaced with
+        `#[crate_id = "name#vers"]`.
+      * Empty `impl`s must be terminated with empty braces and may not be
+        terminated with a semicolon.
+      * Keywords are no longer allowed as lifetime names; the `self` lifetime
+        no longer has any special meaning.
+      * The old `fmt!` string formatting macro has been removed.
+      * `printf!` and `printfln!` (old-style formatting) removed in favor of
+        `print!` and `println!`.
+      * `mut` works in patterns now, as in `let (mut x, y) = (1, 2);`.
+      * The `extern mod foo (name = "bar")` syntax has been removed. Use
+        `extern mod foo = "bar"` instead.
+      * New reserved keywords: `alignof`, `offsetof`, `sizeof`.
+      * Macros can have attributes.
+      * Macros can expand to items with attributes.
+      * Macros can expand to multiple items.
+      * The `asm!` macro is feature-gated (`#[feature(asm)]`).
+      * Comments may be nested.
+      * Values automatically coerce to trait objects they implement, without
+        an explicit `as`.
+      * Enum discriminants are no longer an entire word but as small as needed to
+        contain all the variants. The `repr` attribute can be used to override
+        the discriminant size, as in `#[repr(int)]` for integer-sized, and
+        `#[repr(C)]` to match C enums.
+      * Non-string literals are not allowed in attributes (they never worked).
+      * The FFI now supports variadic functions.
+      * Octal numeric literals, as in `0o7777`.
+      * The `concat!` syntax extension performs compile-time string concatenation.
+      * The `#[fixed_stack_segment]` and `#[rust_stack]` attributes have been
+        removed as Rust no longer uses segmented stacks.
+      * Non-ascii identifiers are feature-gated (`#[feature(non_ascii_idents)]`).
+      * Ignoring all fields of an enum variant or tuple-struct is done with `..`,
+        not `*`; ignoring remaining fields of a struct is also done with `..`,
+        not `_`; ignoring a slice of a vector is done with `..`, not `.._`.
+      * `rustc` supports the "win64" calling convention via `extern "win64"`.
+      * `rustc` supports the "system" calling convention, which defaults to the
+        preferred convention for the target platform, "stdcall" on 32-bit Windows,
+        "C" elsewhere.
+      * The `type_overflow` lint (default: warn) checks literals for overflow.
+      * The `unsafe_block` lint (default: allow) checks for usage of `unsafe`.
+      * The `attribute_usage` lint (default: warn) warns about unknown
+        attributes.
+      * The `unknown_features` lint (default: warn) warns about unknown
+        feature gates.
+      * The `dead_code` lint (default: warn) checks for dead code.
+      * Rust libraries can be linked statically to one another
+      * `#[link_args]` is behind the `link_args` feature gate.
+      * Native libraries are now linked with `#[link(name = "foo")]`
+      * Native libraries can be statically linked to a rust crate
+        (`#[link(name = "foo", kind = "static")]`).
+      * Native OS X frameworks are now officially supported
+        (`#[link(name = "foo", kind = "framework")]`).
+      * The `#[thread_local]` attribute creates thread-local (not task-local)
+        variables. Currently behind the `thread_local` feature gate.
+      * The `return` keyword may be used in closures.
+      * Types that can be copied via a memcpy implement the `Pod` kind.
+      * The `cfg` attribute can now be used on struct fields and enum variants.
+
+   * Libraries
+      * std: The `option` and `result` API's have been overhauled to make them
+        simpler, more consistent, and more composable.
+      * std: The entire `std::io` module has been replaced with one that is
+        more comprehensive and that properly interfaces with the underlying
+        scheduler. File, TCP, UDP, Unix sockets, pipes, and timers are all
+        implemented.
+      * std: `io::util` contains a number of useful implementations of
+        `Reader` and `Writer`, including `NullReader`, `NullWriter`,
+        `ZeroReader`, `TeeReader`.
+      * std: The reference counted pointer type `extra::rc` moved into std.
+      * std: The `Gc` type in the `gc` module will replace `@` (it is currently
+        just a wrapper around it).
+      * std: The `Either` type has been removed.
+      * std: `fmt::Default` can be implemented for any type to provide default
+        formatting to the `format!` macro, as in `format!("{}", myfoo)`.
+      * std: The `rand` API continues to be tweaked.
+      * std: The `rust_begin_unwind` function, useful for inserting breakpoints
+        on failure in gdb, is now named `rust_fail`.
+      * std: The `each_key` and `each_value` methods on `HashMap` have been
+        replaced by the `keys` and `values` iterators.
+      * std: Functions dealing with type size and alignment have moved from the
+        `sys` module to the `mem` module.
+      * std: The `path` module was written and API changed.
+      * std: `str::from_utf8` has been changed to cast instead of allocate.
+      * std: `starts_with` and `ends_with` methods added to vectors via the
+        `ImmutableEqVector` trait, which is in the prelude.
+      * std: Vectors can be indexed with the `get_opt` method, which returns `None`
+        if the index is out of bounds.
+      * std: Task failure no longer propagates between tasks, as the model was
+        complex, expensive, and incompatible with thread-based tasks.
+      * std: The `Any` type can be used for dynamic typing.
+      * std: `~Any` can be passed to the `fail!` macro and retrieved via
+        `task::try`.
+      * std: Methods that produce iterators generally do not have an `_iter`
+        suffix now.
+      * std: `cell::Cell` and `cell::RefCell` can be used to introduce mutability
+        roots (mutable fields, etc.). Use instead of e.g. `@mut`.
+      * std: `util::ignore` renamed to `prelude::drop`.
+      * std: Slices have `sort` and `sort_by` methods via the `MutableVector`
+        trait.
+      * std: `vec::raw` has seen a lot of cleanup and API changes.
+      * std: The standard library no longer includes any C++ code, and very
+        minimal C, eliminating the dependency on libstdc++.
+      * std: Runtime scheduling and I/O functionality has been factored out into
+        extensible interfaces and is now implemented by two different crates:
+        libnative, for native threading and I/O; and libgreen, for green threading
+        and I/O. This paves the way for using the standard library in more limited
+        embedded environments.
+      * std: The `comm` module has been rewritten to be much faster, have a
+        simpler, more consistent API, and to work for both native and green
+        threading.
+      * std: All libuv dependencies have been moved into the rustuv crate.
+      * native: New implementations of runtime scheduling on top of OS threads.
+      * native: New native implementations of TCP, UDP, file I/O, process spawning,
+        and other I/O.
+      * green: The green thread scheduler and message passing types are almost
+        entirely lock-free.
+      * extra: The `flatpipes` module had bitrotted and was removed.
+      * extra: All crypto functions have been removed and Rust now has a policy of
+        not reimplementing crypto in the standard library. In the future crypto
+        will be provided by external crates with bindings to established libraries.
+      * extra: `c_vec` has been modernized.
+      * extra: The `sort` module has been removed. Use the `sort` method on
+        mutable slices.
+
+   * Tooling
+      * The `rust` and `rusti` commands have been removed, due to lack of
+        maintenance.
+      * `rustdoc` was completely rewritten.
+      * `rustdoc` can test code examples in documentation.
+      * `rustpkg` can test packages with the argument, 'test'.
+      * `rustpkg` supports arbitrary dependencies, including C libraries.
+      * `rustc`'s support for generating debug info is improved again.
+      * `rustc` has better error reporting for unbalanced delimiters.
+      * `rustc`'s JIT support was removed due to bitrot.
+      * Executables and static libraries can be built with LTO (-Z lto)
+      * `rustc` adds a `--dep-info` flag for communicating dependencies to
+        build tools.
+
+Version 0.8 (September 2013)
+--------------------------
+
+   * ~2200 changes, numerous bugfixes
+
+   * Language
+      * The `for` loop syntax has changed to work with the `Iterator` trait.
+      * At long last, unwinding works on Windows.
+      * Default methods are ready for use.
+      * Many trait inheritance bugs fixed.
+      * Owned and borrowed trait objects work more reliably.
+      * `copy` is no longer a keyword. It has been replaced by the `Clone` trait.
+      * rustc can omit emission of code for the `debug!` macro if it is passed
+        `--cfg ndebug`
+      * mod.rs is now "blessed". When loading `mod foo;`, rustc will now look
+        for foo.rs, then foo/mod.rs, and will generate an error when both are
+        present.
+      * Strings no longer contain trailing nulls. The new `std::c_str` module
+        provides new mechanisms for converting to C strings.
+      * The type of foreign functions is now `extern "C" fn` instead of `*u8'.
+      * The FFI has been overhauled such that foreign functions are called directly,
+        instead of through a stack-switching wrapper.
+      * Calling a foreign function must be done through a Rust function with the
+        `#[fixed_stack_segment]` attribute.
+      * The `externfn!` macro can be used to declare both a foreign function and
+        a `#[fixed_stack_segment]` wrapper at once.
+      * `pub` and `priv` modifiers on `extern` blocks are no longer parsed.
+      * `unsafe` is no longer allowed on extern fns - they are all unsafe.
+      * `priv` is disallowed everywhere except for struct fields and enum variants.
+      * `&T` (besides `&'static T`) is no longer allowed in `@T`.
+      * `ref` bindings in irrefutable patterns work correctly now.
+      * `char` is now prevented from containing invalid code points.
+      * Casting to `bool` is no longer allowed.
+      * `\0` is now accepted as an escape in chars and strings.
+      * `yield` is a reserved keyword.
+      * `typeof` is a reserved keyword.
+      * Crates may be imported by URL with `extern mod foo = "url";`.
+      * Explicit enum discriminants may be given as uints as in `enum E { V = 0u }`
+      * Static vectors can be initialized with repeating elements,
+        e.g. `static foo: [u8, .. 100]: [0, .. 100];`.
+      * Static structs can be initialized with functional record update,
+        e.g. `static foo: Foo = Foo { a: 5, .. bar };`.
+      * `cfg!` can be used to conditionally execute code based on the crate
+        configuration, similarly to `#[cfg(...)]`.
+      * The `unnecessary_qualification` lint detects unneeded module
+        prefixes (default: allow).
+      * Arithmetic operations have been implemented on the SIMD types in
+        `std::unstable::simd`.
+      * Exchange allocation headers were removed, reducing memory usage.
+      * `format!` implements a completely new, extensible, and higher-performance
+        string formatting system. It will replace `fmt!`.
+      * `print!` and `println!` write formatted strings (using the `format!`
+        extension) to stdout.
+      * `write!` and `writeln!` write formatted strings (using the `format!`
+        extension) to the new Writers in `std::rt::io`.
+      * The library section in which a function or static is placed may
+        be specified with `#[link_section = "..."]`.
+      * The `proto!` syntax extension for defining bounded message protocols
+        was removed.
+      * `macro_rules!` is hygienic for `let` declarations.
+      * The `#[export_name]` attribute specifies the name of a symbol.
+      * `unreachable!` can be used to indicate unreachable code, and fails
+        if executed.
+
+   * Libraries
+      * std: Transitioned to the new runtime, written in Rust.
+      * std: Added an experimental I/O library, `rt::io`, based on the new
+        runtime.
+      * std: A new generic `range` function was added to the prelude, replacing
+        `uint::range` and friends.
+      * std: `range_rev` no longer exists. Since range is an iterator it can be
+        reversed with `range(lo, hi).invert()`.
+      * std: The `chain` method on option renamed to `and_then`; `unwrap_or_default`
+        renamed to `unwrap_or`.
+      * std: The `iterator` module was renamed to `iter`.
+      * std: Integral types now support the `checked_add`, `checked_sub`, and
+        `checked_mul` operations for detecting overflow.
+      * std: Many methods in `str`, `vec`, `option, `result` were renamed for
+        consistency.
+      * std: Methods are standardizing on conventions for casting methods:
+        `to_foo` for copying, `into_foo` for moving, `as_foo` for temporary
+        and cheap casts.
+      * std: The `CString` type in `c_str` provides new ways to convert to and
+        from C strings.
+      * std: `DoubleEndedIterator` can yield elements in two directions.
+      * std: The `mut_split` method on vectors partitions an `&mut [T]` into
+        two splices.
+      * std: `str::from_bytes` renamed to `str::from_utf8`.
+      * std: `pop_opt` and `shift_opt` methods added to vectors.
+      * std: The task-local data interface no longer uses @, and keys are
+        no longer function pointers.
+      * std: The `swap_unwrap` method of `Option` renamed to `take_unwrap`.
+      * std: Added `SharedPort` to `comm`.
+      * std: `Eq` has a default method for `ne`; only `eq` is required
+        in implementations.
+      * std: `Ord` has default methods for `le`, `gt` and `ge`; only `lt`
+        is required in implementations.
+      * std: `is_utf8` performance is improved, impacting many string functions.
+      * std: `os::MemoryMap` provides cross-platform mmap.
+      * std: `ptr::offset` is now unsafe, but also more optimized. Offsets that
+        are not 'in-bounds' are considered undefined.
+      * std: Many freestanding functions in `vec` removed in favor of methods.
+      * std: Many freestanding functions on scalar types removed in favor of
+        methods.
+      * std: Many options to task builders were removed since they don't make
+        sense in the new scheduler design.
+      * std: More containers implement `FromIterator` so can be created by the
+        `collect` method.
+      * std: More complete atomic types in `unstable::atomics`.
+      * std: `comm::PortSet` removed.
+      * std: Mutating methods in the `Set` and `Map` traits have been moved into
+        the `MutableSet` and `MutableMap` traits. `Container::is_empty`,
+        `Map::contains_key`, `MutableMap::insert`, and `MutableMap::remove` have
+        default implementations.
+      * std: Various `from_str` functions were removed in favor of a generic
+        `from_str` which is available in the prelude.
+      * std: `util::unreachable` removed in favor of the `unreachable!` macro.
+      * extra: `dlist`, the doubly-linked list was modernized.
+      * extra: Added a `hex` module with `ToHex` and `FromHex` traits.
+      * extra: Added `glob` module, replacing `std::os::glob`.
+      * extra: `rope` was removed.
+      * extra: `deque` was renamed to `ringbuf`. `RingBuf` implements `Deque`.
+      * extra: `net`, and `timer` were removed. The experimental replacements
+        are `std::rt::io::net` and `std::rt::io::timer`.
+      * extra: Iterators implemented for `SmallIntMap`.
+      * extra: Iterators implemented for `Bitv` and `BitvSet`.
+      * extra: `SmallIntSet` removed. Use `BitvSet`.
+      * extra: Performance of JSON parsing greatly improved.
+      * extra: `semver` updated to SemVer 2.0.0.
+      * extra: `term` handles more terminals correctly.
+      * extra: `dbg` module removed.
+      * extra: `par` module removed.
+      * extra: `future` was cleaned up, with some method renames.
+      * extra: Most free functions in `getopts` were converted to methods.
+
+   * Other
+      * rustc's debug info generation (`-Z debug-info`) is greatly improved.
+      * rustc accepts `--target-cpu` to compile to a specific CPU architecture,
+        similarly to gcc's `--march` flag.
+      * rustc's performance compiling small crates is much better.
+      * rustpkg has received many improvements.
+      * rustpkg supports git tags as package IDs.
+      * rustpkg builds into target-specific directories so it can be used for
+        cross-compiling.
+      * The number of concurrent test tasks is controlled by the environment
+        variable RUST_TEST_TASKS.
+      * The test harness can now report metrics for benchmarks.
+      * All tools have man pages.
+      * Programs compiled with `--test` now support the `-h` and `--help` flags.
+      * The runtime uses jemalloc for allocations.
+      * Segmented stacks are temporarily disabled as part of the transition to
+        the new runtime. Stack overflows are possible!
+      * A new documentation backend, rustdoc_ng, is available for use. It is
+        still invoked through the normal `rustdoc` command.
+
+Version 0.7 (July 2013)
+-----------------------
+
+   * ~2000 changes, numerous bugfixes
+
+   * Language
+      * `impl`s no longer accept a visibility qualifier. Put them on methods
+        instead.
+      * The borrow checker has been rewritten with flow-sensitivity, fixing
+        many bugs and inconveniences.
+      * The `self` parameter no longer implicitly means `&'self self`,
+        and can be explicitly marked with a lifetime.
+      * Overloadable compound operators (`+=`, etc.) have been temporarily
+        removed due to bugs.
+      * The `for` loop protocol now requires `for`-iterators to return `bool`
+        so they compose better.
+      * The `Durable` trait is replaced with the `'static` bounds.
+      * Trait default methods work more often.
+      * Structs with the `#[packed]` attribute have byte alignment and
+        no padding between fields.
+      * Type parameters bound by `Copy` must now be copied explicitly with
+        the `copy` keyword.
+      * It is now illegal to move out of a dereferenced unsafe pointer.
+      * `Option<~T>` is now represented as a nullable pointer.
+      * `@mut` does dynamic borrow checks correctly.
+      * The `main` function is only detected at the topmost level of the crate.
+        The `#[main]` attribute is still valid anywhere.
+      * Struct fields may no longer be mutable. Use inherited mutability.
+      * The `#[no_send]` attribute makes a type that would otherwise be
+        `Send`, not.
+      * The `#[no_freeze]` attribute makes a type that would otherwise be
+        `Freeze`, not.
+      * Unbounded recursion will abort the process after reaching the limit
+        specified by the `RUST_MAX_STACK` environment variable (default: 1GB).
+      * The `vecs_implicitly_copyable` lint mode has been removed. Vectors
+        are never implicitly copyable.
+      * `#[static_assert]` makes compile-time assertions about static bools.
+      * At long last, 'argument modes' no longer exist.
+      * The rarely used `use mod` statement no longer exists.
+
+   * Syntax extensions
+      * `fail!` and `assert!` accept `~str`, `&'static str` or `fmt!`-style
+        argument list.
+      * `Encodable`, `Decodable`, `Ord`, `TotalOrd`, `TotalEq`, `DeepClone`,
+        `Rand`, `Zero` and `ToStr` can all be automatically derived with
+        `#[deriving(...)]`.
+      * The `bytes!` macro returns a vector of bytes for string, u8, char,
+        and unsuffixed integer literals.
+
+   * Libraries
+      * The `core` crate was renamed to `std`.
+      * The `std` crate was renamed to `extra`.
+      * More and improved documentation.
+      * std: `iterator` module for external iterator objects.
+      * Many old-style (internal, higher-order function) iterators replaced by
+        implementations of `Iterator`.
+      * std: Many old internal vector and string iterators,
+        incl. `any`, `all`. removed.
+      * std: The `finalize` method of `Drop` renamed to `drop`.
+      * std: The `drop` method now takes `&mut self` instead of `&self`.
+      * std: The prelude no longer reexports any modules, only types and traits.
+      * std: Prelude additions: `print`, `println`, `FromStr`, `ApproxEq`, `Equiv`,
+        `Iterator`, `IteratorUtil`, many numeric traits, many tuple traits.
+      * std: New numeric traits: `Fractional`, `Real`, `RealExt`, `Integer`, `Ratio`,
+        `Algebraic`, `Trigonometric`, `Exponential`, `Primitive`.
+      * std: Tuple traits and accessors defined for up to 12-tuples, e.g.
+        `(0, 1, 2).n2()` or `(0, 1, 2).n2_ref()`.
+      * std: Many types implement `Clone`.
+      * std: `path` type renamed to `Path`.
+      * std: `mut` module and `Mut` type removed.
+      * std: Many standalone functions removed in favor of methods and iterators
+        in `vec`, `str`. In the future methods will also work as functions.
+      * std: `reinterpret_cast` removed. Use `transmute`.
+      * std: ascii string handling in `std::ascii`.
+      * std: `Rand` is implemented for ~/@.
+      * std: `run` module for spawning processes overhauled.
+      * std: Various atomic types added to `unstable::atomic`.
+      * std: Various types implement `Zero`.
+      * std: `LinearMap` and `LinearSet` renamed to `HashMap` and `HashSet`.
+      * std: Borrowed pointer functions moved from `ptr` to `borrow`.
+      * std: Added `os::mkdir_recursive`.
+      * std: Added `os::glob` function performs filesystems globs.
+      * std: `FuzzyEq` renamed to `ApproxEq`.
+      * std: `Map` now defines `pop` and `swap` methods.
+      * std: `Cell` constructors converted to static methods.
+      * extra: `rc` module adds the reference counted pointers, `Rc` and `RcMut`.
+      * extra: `flate` module moved from `std` to `extra`.
+      * extra: `fileinput` module for iterating over a series of files.
+      * extra: `Complex` number type and `complex` module.
+      * extra: `Rational` number type and `rational` module.
+      * extra: `BigInt`, `BigUint` implement numeric and comparison traits.
+      * extra: `term` uses terminfo now, is more correct.
+      * extra: `arc` functions converted to methods.
+      * extra: Implementation of fixed output size variations of SHA-2.
+
+   * Tooling
+      * `unused_variable`  lint mode for unused variables (default: warn).
+      * `unused_unsafe` lint mode for detecting unnecessary `unsafe` blocks
+        (default: warn).
+      * `unused_mut` lint mode for identifying unused `mut` qualifiers
+        (default: warn).
+      * `dead_assignment` lint mode for unread variables (default: warn).
+      * `unnecessary_allocation` lint mode detects some heap allocations that are
+        immediately borrowed so could be written without allocating (default: warn).
+      * `missing_doc` lint mode (default: allow).
+      * `unreachable_code` lint mode (default: warn).
+      * The `rusti` command has been rewritten and a number of bugs addressed.
+      * rustc outputs in color on more terminals.
+      * rustc accepts a `--link-args` flag to pass arguments to the linker.
+      * rustc accepts a `-Z print-link-args` flag for debugging linkage.
+      * Compiling with `-g` will make the binary record information about
+        dynamic borrowcheck failures for debugging.
+      * rustdoc has a nicer stylesheet.
+      * Various improvements to rustdoc.
+      * Improvements to rustpkg (see the detailed release notes).
+
+Version 0.6 (April 2013)
+------------------------
+
+   * ~2100 changes, numerous bugfixes
+
+   * Syntax changes
+      * The self type parameter in traits is now spelled `Self`
+      * The `self` parameter in trait and impl methods must now be explicitly
+        named (for example: `fn f(&self) { }`). Implicit self is deprecated.
+      * Static methods no longer require the `static` keyword and instead
+        are distinguished by the lack of a `self` parameter
+      * Replaced the `Durable` trait with the `'static` lifetime
+      * The old closure type syntax with the trailing sigil has been
+        removed in favor of the more consistent leading sigil
+      * `super` is a keyword, and may be prefixed to paths
+      * Trait bounds are separated with `+` instead of whitespace
+      * Traits are implemented with `impl Trait for Type`
+        instead of `impl Type: Trait`
+      * Lifetime syntax is now `&'l foo` instead of `&l/foo`
+      * The `export` keyword has finally been removed
+      * The `move` keyword has been removed (see "Semantic changes")
+      * The interior mutability qualifier on vectors, `[mut T]`, has been
+        removed. Use `&mut [T]`, etc.
+      * `mut` is no longer valid in `~mut T`. Use inherited mutability
+      * `fail` is no longer a keyword. Use `fail!()`
+      * `assert` is no longer a keyword. Use `assert!()`
+      * `log` is no longer a keyword. use `debug!`, etc.
+      * 1-tuples may be represented as `(T,)`
+      * Struct fields may no longer be `mut`. Use inherited mutability,
+        `@mut T`, `core::mut` or `core::cell`
+      * `extern mod { ... }` is no longer valid syntax for foreign
+        function modules. Use extern blocks: `extern { ... }`
+      * Newtype enums removed. Use tuple-structs.
+      * Trait implementations no longer support visibility modifiers
+      * Pattern matching over vectors improved and expanded
+      * `const` renamed to `static` to correspond to lifetime name,
+        and make room for future `static mut` unsafe mutable globals.
+      * Replaced `#[deriving_eq]` with `#[deriving(Eq)]`, etc.
+      * `Clone` implementations can be automatically generated with
+        `#[deriving(Clone)]`
+      * Casts to traits must use a pointer sigil, e.g. `@foo as @Bar`
+        instead of `foo as Bar`.
+      * Fixed length vector types are now written as `[int, .. 3]`
+        instead of `[int * 3]`.
+      * Fixed length vector types can express the length as a constant
+        expression. (ex: `[int, .. GL_BUFFER_SIZE - 2]`)
+
+   * Semantic changes
+      * Types with owned pointers or custom destructors move by default,
+        eliminating the `move` keyword
+      * All foreign functions are considered unsafe
+      * &mut is now unaliasable
+      * Writes to borrowed @mut pointers are prevented dynamically
+      * () has size 0
+      * The name of the main function can be customized using #[main]
+      * The default type of an inferred closure is &fn instead of @fn
+      * `use` statements may no longer be "chained" - they cannot import
+        identifiers imported by previous `use` statements
+      * `use` statements are crate relative, importing from the "top"
+        of the crate by default. Paths may be prefixed with `super::`
+        or `self::` to change the search behavior.
+      * Method visibility is inherited from the implementation declaration
+      * Structural records have been removed
+      * Many more types can be used in static items, including enums
+        'static-lifetime pointers and vectors
+      * Pattern matching over vectors improved and expanded
+      * Typechecking of closure types has been overhauled to
+        improve inference and eliminate unsoundness
+      * Macros leave scope at the end of modules, unless that module is
+        tagged with #[macro_escape]
+
+   * Libraries
+      * Added big integers to `std::bigint`
+      * Removed `core::oldcomm` module
+      * Added pipe-based `core::comm` module
+      * Numeric traits have been reorganized under `core::num`
+      * `vec::slice` finally returns a slice
+      * `debug!` and friends don't require a format string, e.g. `debug!(Foo)`
+      * Containers reorganized around traits in `core::container`
+      * `core::dvec` removed, `~[T]` is a drop-in replacement
+      * `core::send_map` renamed to `core::hashmap`
+      * `std::map` removed; replaced with `core::hashmap`
+      * `std::treemap` reimplemented as an owned balanced tree
+      * `std::deque` and `std::smallintmap` reimplemented as owned containers
+      * `core::trie` added as a fast ordered map for integer keys
+      * Set types added to `core::hashmap`, `core::trie` and `std::treemap`
+      * `Ord` split into `Ord` and `TotalOrd`. `Ord` is still used to
+        overload the comparison operators, whereas `TotalOrd` is used
+        by certain container types
+
+   * Other
+      * Replaced the 'cargo' package manager with 'rustpkg'
+      * Added all-purpose 'rust' tool
+      * `rustc --test` now supports benchmarks with the `#[bench]` attribute
+      * rustc now *attempts* to offer spelling suggestions
+      * Improved support for ARM and Android
+      * Preliminary MIPS backend
+      * Improved foreign function ABI implementation for x86, x86_64
+      * Various memory usage improvements
+      * Rust code may be embedded in foreign code under limited circumstances
+      * Inline assembler supported by new asm!() syntax extension.
+
+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
+        declared
+
+   * 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
+        `core::ops'
+      * `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
+        type
+      * `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
+        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
+
+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 20, 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.