Skip to content

Commit a7e057d

Browse files
committed
auto merge of #13189 : alexcrichton/rust/relnotes, r=brson
2 parents ba2fcc1 + 24cc78d commit a7e057d

File tree

1 file changed

+158
-0
lines changed

1 file changed

+158
-0
lines changed

RELEASES.txt

+158
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,161 @@
1+
Version 0.10 (April 2014)
2+
-------------------------
3+
4+
* ~1500 changes, numerous bugfixes
5+
6+
* Language
7+
* A new RFC process is now in place for modifying the language.
8+
* Patterns with `@`-pointers have been removed from the language.
9+
* Patterns with unique vectors have been removed from the language.
10+
* `@str` has been removed from the language.
11+
* `@[T]` has been removed from the language.
12+
* `@self` has been removed from the language.
13+
* `@Trait` has been removed from the language.
14+
* Headers on `~` allocations which contain `@` boxes inside the type for
15+
reference counting have been removed.
16+
* The semantics around the lifetimes of temporary expressions have changed,
17+
see #3511 and #11585 for more information.
18+
* Cross-crate syntax extensions are now possible, but feature gated. See
19+
#11151 for more information. This includes both `macro_rules!` macros as
20+
well as syntax extensions such as `format!`.
21+
* New lint modes have been added, and older ones have been turned on to be
22+
warn-by-default.
23+
* Unnecessary parentheses
24+
* Uppercase statics
25+
* Camel Case types
26+
* Uppercase variables
27+
* Publicly visible private types
28+
* Unsafe functions can no longer be coerced to closures.
29+
* Various obscure macros such as `log_syntax!` are now behind feature gates.
30+
* The #[simd] attribute is now behind a feature gate.
31+
* Visibility is no longer allowed on `extern crate` statements, and
32+
unnecessary visibility (`priv`) is no longer allowed on `use` statements.
33+
* Trailing commas are now allowed in argument lists and tuple patterns.
34+
* The `do` keyword has been removed, it is now a reserved keyword.
35+
* Default type parameters have been implemented, but are feature gated.
36+
* Borrowed variables through captures in closures are now considered soundly.
37+
* `extern mod` is now `extern crate`
38+
* The `Freeze` trait has been removed.
39+
* The `Share` trait has been added for types that can be shared among
40+
threads.
41+
* Labels in macros are now hygienic.
42+
* Expresson/statement macro invocations can be delimited with `{}` now.
43+
* Treatment of types allowed in `static mut` locations has been tweaked.
44+
* The `*` and `.` operators are now overloadable through the `Deref` and
45+
`DerefMut` traits.
46+
* `~Trait` and `proc` no longer have `Send` bounds by default.
47+
* Partial type hints are now supported with the `_` type marker.
48+
* An `Unsafe` type was introduced for interior mutability. It is now
49+
considered undefined to transmute from `&T` to `&mut T` without using the
50+
`Unsafe` type.
51+
* The #[linkage] attribute was implemented for extern statics/functions.
52+
* The inner attribute syntax has changed from `#[foo];` to `#![foo]`.
53+
* `Pod` was renamed to `Copy`.
54+
55+
* Libraries
56+
* The `libextra` library has been removed. It has now been decomposed into
57+
component libraries with smaller and more focused nuggets of
58+
functionality. The full list of libraries can be found on the
59+
documentation index page.
60+
* std: `std::condition` has been removed. All I/O errors are now propagated
61+
through the `Result` type. In order to assist with error handling, a
62+
`try!` macro for unwrapping errors with an early return and an lint for
63+
unused results has been added. See #12039 for more information.
64+
* std: The `vec` module has been renamed to `slice`.
65+
* std: A new vector type, `Vec<T>`, has been added in preparation for DST.
66+
This will become the only growable vector in the future.
67+
* std: `std::io` now has more public-reexports. Types such as `BufferedReader`
68+
are now found at `std::io::BufferedReader` instead of
69+
`std::io::buffered::BufferedReader`.
70+
* std: `print` and `println` are no longer in the prelude, the `print!` and
71+
`println!` macros are intended to be used instead.
72+
* std: `Rc` now has a `Weak` pointer for breaking cycles, and it no longer
73+
attempts to statically prevent cycles.
74+
* std: The standard distribution is adopting the policy of pushing failure
75+
to the user rather than failing in libraries. Many functions (such as
76+
`slice::last()`) now return `Option<T>` instead of `T` + failing.
77+
* std: `fmt::Default` has been renamed to `fmt::Show`, and it now has a new
78+
deriving mode: `#[deriving(Show)]`.
79+
* std: `ToStr` is now implemented for all types implementing `Show`.
80+
* std: The formatting trait methods now take `&self` instead of `&T`
81+
* std: The `invert()` method on iterators has been renamed to `rev()`
82+
* std: `std::num` has seen a reduction in the genericity of its traits,
83+
consolidating functionality into a few core traits.
84+
* std: Backtraces are now printed on task failure if the environment
85+
variable `RUST_BACKTRACE` is present.
86+
* std: Naming conventions for iterators have been standardized. More details
87+
can be found on the wiki's style guide.
88+
* std: `eof()` has been removed from the `Reader` trait. Specific types may
89+
still implement the function.
90+
* std: Networking types are now cloneable to allow simultaneous reads/writes.
91+
* std: `assert_approx_eq!` has been removed
92+
* std: The `e` and `E` formatting specifiers for floats have been added to
93+
print them in exponential notation.
94+
* std: The `Times` trait has been removed
95+
* std: Indications of variance and opting out of builtin bounds is done
96+
through marker types in `std::kinds::marker` now
97+
* std: `hash` has been rewritten, `IterBytes` has been removed, and
98+
`#[deriving(Hash)]` is now possible.
99+
* std: `SharedChan` has been removed, `Sender` is now cloneable.
100+
* std: `Chan` and `Port` were renamed to `Sender` and `Receiver`.
101+
* std: `Chan::new` is now `channel()`.
102+
* std: A new synchronous channel type has been implemented.
103+
* std: A `select!` macro is now provided for selecting over `Receiver`s.
104+
* std: `hashmap` and `trie` have been moved to `libcollections`
105+
* std: `run` has been rolled into `io::process`
106+
* std: `assert_eq!` now uses `{}` instead of `{:?}`
107+
* std: The equality and comparison traits have seen some reorganization.
108+
* std: `rand` has moved to `librand`.
109+
* std: `to_{lower,upper}case` has been implemented for `char`.
110+
* std: Logging has been moved to `liblog`.
111+
* collections: `HashMap` has been rewritten for higher performance and less
112+
memory usage.
113+
* native: The default runtime is now `libnative`. If `libgreen` is desired,
114+
it can be booted manually. The runtime guide has more information and
115+
examples.
116+
* native: All I/O functionality except signals has been implemented.
117+
* green: Task spawning with `libgreen` has been optimized with stack caching
118+
and various trimming of code.
119+
* green: Tasks spawned by `libgreen` now have an unmapped guard page.
120+
* sync: The `extra::sync` module has been updated to modern rust (and moved
121+
to the `sync` library), tweaking and improving various interfaces while
122+
dropping redundant functionality.
123+
* sync: A new `Barrier` type has been added to the `sync` library.
124+
* sync: An efficient mutex for native and green tasks has been implemented.
125+
* serialize: The `base64` module has seen some improvement. It treats
126+
newlines better, has non-string error values, and has seen general
127+
cleanup.
128+
* fourcc: A `fourcc!` macro was introduced
129+
* hexfloat: A `hexfloat!` macro was implemented for specifying floats via a
130+
hexadecimal literal.
131+
132+
* Tooling
133+
* `rustpkg` has been deprecated and removed from the main repository. Its
134+
replacement, `cargo`, is under development.
135+
* Nightly builds of rust are now available (INSERT URL HERE)
136+
* The memory usage of rustc has been improved many times throughout this
137+
release cycle.
138+
* The build process supports disabling rpath support for the rustc binary
139+
itself.
140+
* Code generation has improved in some cases, giving more information to the
141+
LLVM optimization passes to enable more extensive optimizations.
142+
* Debuginfo compatibility with lldb on OSX has been restored.
143+
* The master branch is now gated on an android bot, making building for
144+
android much more reliable.
145+
* Output flags have been centralized into one `--emit` flag.
146+
* Crate type flags have been centralized into one `--crate-type` flag.
147+
* Codegen flags have been consolidated behind a `-C` flag.
148+
* `rustdoc` now implements syntax highlighting and rendering markdown files.
149+
* `rustdoc --test` now tests all code blocks by default.
150+
* `rustdoc` now shows documented macros.
151+
* `rustdoc` inlines documentation for reexported types.
152+
* `rustdoc` search works across crates now.
153+
* Linking against outdated crates now has improved error messages.
154+
* Error messages with lifetimes will often suggest how to annotate the
155+
function to fix the error.
156+
* Many more types are documented in the standard library, and new guides
157+
were written.
158+
1159
Version 0.9 (January 2014)
2160
--------------------------
3161

0 commit comments

Comments
 (0)