Re: [rust-dev] Rust 0.9 released

2014-01-09 Thread Brian Anderson

Just in case somebody wants one with the correct title. So sad.

On 01/09/2014 01:04 PM, Brian Anderson wrote:

Mozilla and the Rust community are pleased to announce version 0.9 of the
Rust compiler and tools. Rust is a systems programming language with a
focus on safety, performance and concurrency.

This was another eventful release in which we made extensive improvements
to the runtime and I/O subsystem, introduced static linking and link-time
optimization, and reduced the variety of closures in the language. 0.9 
also

begins a final series of planned changes to how pointers are treated in
Rust, starting with the deprecation of the built-in managed pointer 
type
and its accompanying `@` sigil, and the introduction of smart pointer 
types

to the standard library.

The brief release notes are included in this announcement, and there is
further explanation in the detailed release [notes] on the wiki.
Documentation and all the links in this email are available on the
[website]. As usual, version 0.9 should be considered an alpha release,
suitable for early adopters and language enthusiasts. Please file [bugs]
and join the [fun].

[website]: http://www.rust-lang.org
[notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes
[bugs]: https://github.com/mozilla/rust/issues
[fun]: 
https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors


This release is available as both a tarball and a Windows installer:

* http://static.rust-lang.org/dist/rust-0.9.tar.gz
http://static.rust-lang.org/dist/rust-0.9.tar.gz.asc
SHA256 (of .tar.gz):
c0911c3545b797a1ca16f3d76bf5ed234754b828efd1e22c182c7300ac7dd5d1

* http://static.rust-lang.org/dist/rust-0.9-install.exe
http://static.rust-lang.org/dist/rust-0.9-install.exe.asc
SHA256 (of .exe):
6ab14e25761d61ba724c5f77403d09d566d3187a2e048e006036b960d938fe90

Thanks to everyone who contributed!

Regards,
The Rust Team


Version 0.9 (January 2014)
--

* 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 preperation 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 `rfoo` 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 `0o`.
* 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 

Re: [rust-dev] Rust 0.9 released

2014-01-09 Thread Benjamin Striegel
Congrats everyone! Here's to 0.10. :)


On Thu, Jan 9, 2014 at 4:04 PM, Brian Anderson bander...@mozilla.comwrote:

  Mozilla and the Rust community are pleased to announce version 0.9 of the
 Rust compiler and tools. Rust is a systems programming language with a
 focus on safety, performance and concurrency.

 This was another eventful release in which we made extensive improvements
 to the runtime and I/O subsystem, introduced static linking and link-time
 optimization, and reduced the variety of closures in the language. 0.9
 also
 begins a final series of planned changes to how pointers are treated in
 Rust, starting with the deprecation of the built-in managed pointer type
 and its accompanying `@` sigil, and the introduction of smart pointer
 types
 to the standard library.

 The brief release notes are included in this announcement, and there is
 further explanation in the detailed release [notes] on the wiki.
 Documentation and all the links in this email are available on the
 [website]. As usual, version 0.9 should be considered an alpha release,
 suitable for early adopters and language enthusiasts. Please file [bugs]
 and join the [fun].

 [website]: http://www.rust-lang.org
 [notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes
 [bugs]: https://github.com/mozilla/rust/issues
 [fun]:
 https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors

 This release is available as both a tarball and a Windows installer:

 * http://static.rust-lang.org/dist/rust-0.9.tar.gz
 http://static.rust-lang.org/dist/rust-0.9.tar.gz.asc
 SHA256 (of .tar.gz):
 c0911c3545b797a1ca16f3d76bf5ed234754b828efd1e22c182c7300ac7dd5d1

 * http://static.rust-lang.org/dist/rust-0.9-install.exe
 http://static.rust-lang.org/dist/rust-0.9-install.exe.asc
 SHA256 (of .exe):
 6ab14e25761d61ba724c5f77403d09d566d3187a2e048e006036b960d938fe90

 Thanks to everyone who contributed!

 Regards,
 The Rust Team


 Version 0.9 (January 2014)
 --

 * 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 preperation 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 `rfoo` 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 `0o`.
 * 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 

Re: [rust-dev] Rust 0.9 released

2014-01-09 Thread Matthew McPherrin
Fantastic release!  I think Rust is really becoming a usable language
for real projects.  Great work from everyone involved!

I look forward to future releases, and to building some great products in Rust!

On Thu, Jan 9, 2014 at 1:10 PM, Benjamin Striegel
ben.strie...@gmail.com wrote:
 Congrats everyone! Here's to 0.10. :)


 On Thu, Jan 9, 2014 at 4:04 PM, Brian Anderson bander...@mozilla.com
 wrote:

 Mozilla and the Rust community are pleased to announce version 0.9 of the
 Rust compiler and tools. Rust is a systems programming language with a
 focus on safety, performance and concurrency.

 This was another eventful release in which we made extensive improvements
 to the runtime and I/O subsystem, introduced static linking and link-time
 optimization, and reduced the variety of closures in the language. 0.9
 also
 begins a final series of planned changes to how pointers are treated in
 Rust, starting with the deprecation of the built-in managed pointer type
 and its accompanying `@` sigil, and the introduction of smart pointer
 types
 to the standard library.

 The brief release notes are included in this announcement, and there is
 further explanation in the detailed release [notes] on the wiki.
 Documentation and all the links in this email are available on the
 [website]. As usual, version 0.9 should be considered an alpha release,
 suitable for early adopters and language enthusiasts. Please file [bugs]
 and join the [fun].

 [website]: http://www.rust-lang.org
 [notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes
 [bugs]: https://github.com/mozilla/rust/issues
 [fun]:
 https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors

 This release is available as both a tarball and a Windows installer:

 * http://static.rust-lang.org/dist/rust-0.9.tar.gz
 http://static.rust-lang.org/dist/rust-0.9.tar.gz.asc
 SHA256 (of .tar.gz):
 c0911c3545b797a1ca16f3d76bf5ed234754b828efd1e22c182c7300ac7dd5d1

 * http://static.rust-lang.org/dist/rust-0.9-install.exe
 http://static.rust-lang.org/dist/rust-0.9-install.exe.asc
 SHA256 (of .exe):
 6ab14e25761d61ba724c5f77403d09d566d3187a2e048e006036b960d938fe90

 Thanks to everyone who contributed!

 Regards,
 The Rust Team


 Version 0.9 (January 2014)
 --

 * 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 preperation 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 `rfoo` 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 `0o`.
 * The `concat!` syntax extension performs compile-time string
 concatenation.
 * The `#[fixed_stack_segment]` and `#[rust_stack]` attributes 

Re: [rust-dev] Rust 0.9 released

2014-01-09 Thread Ziad Hatahet
Awesome job! Keep up the good work.

--
Ziad


On Thu, Jan 9, 2014 at 1:10 PM, Benjamin Striegel ben.strie...@gmail.comwrote:

 Congrats everyone! Here's to 0.10. :)


 On Thu, Jan 9, 2014 at 4:04 PM, Brian Anderson bander...@mozilla.comwrote:

  Mozilla and the Rust community are pleased to announce version 0.9 of
 the
 Rust compiler and tools. Rust is a systems programming language with a
 focus on safety, performance and concurrency.

 This was another eventful release in which we made extensive improvements
 to the runtime and I/O subsystem, introduced static linking and link-time
 optimization, and reduced the variety of closures in the language. 0.9
 also
 begins a final series of planned changes to how pointers are treated in
 Rust, starting with the deprecation of the built-in managed pointer
 type
 and its accompanying `@` sigil, and the introduction of smart pointer
 types
 to the standard library.

 The brief release notes are included in this announcement, and there is
 further explanation in the detailed release [notes] on the wiki.
 Documentation and all the links in this email are available on the
 [website]. As usual, version 0.9 should be considered an alpha release,
 suitable for early adopters and language enthusiasts. Please file [bugs]
 and join the [fun].

 [website]: http://www.rust-lang.org
 [notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes
 [bugs]: https://github.com/mozilla/rust/issues
 [fun]:
 https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors

 This release is available as both a tarball and a Windows installer:

 * http://static.rust-lang.org/dist/rust-0.9.tar.gz
 http://static.rust-lang.org/dist/rust-0.9.tar.gz.asc
 SHA256 (of .tar.gz):
 c0911c3545b797a1ca16f3d76bf5ed234754b828efd1e22c182c7300ac7dd5d1

 * http://static.rust-lang.org/dist/rust-0.9-install.exe
 http://static.rust-lang.org/dist/rust-0.9-install.exe.asc
 SHA256 (of .exe):
 6ab14e25761d61ba724c5f77403d09d566d3187a2e048e006036b960d938fe90

 Thanks to everyone who contributed!

 Regards,
 The Rust Team


 Version 0.9 (January 2014)
 --

 * 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 preperation 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 `rfoo` 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 `0o`.
 * 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 

Re: [rust-dev] Rust 0.9 released

2014-01-09 Thread Nathan Myers

Much blush

Congratulations, this looks like a big step in a right direction,
and in a very short time.

When I build on Debian amd64 with g++-4.8.2, I get internal C++
compiler failures in stage 0.  I run make again, and it builds
OK for a while, and then dies on another file.  It does finish
stage 0 after a few cycles of this.  Should I be using the other
C++ compiler?

Also, running make -j4, I get failures like:

/bin/mv: cannot stat 
`/tmp/rust-0.9/x86_64-unknown-linux-gnu/llvm/utils/TableGen/Release+Asserts/AsmMatcherEmitter.d.tmp': 
No such file or directory


I haven't seen these when building with just make.

(0.8 built without hiccups on g++-4.7 and make -j3.)

Nathan Myers

On 01/09/2014 01:04 PM, Brian Anderson wrote:

Just in case somebody wants one with the correct title. So sad.

On 01/09/2014 01:04 PM, Brian Anderson wrote:

Mozilla and the Rust community are pleased to announce version 0.9 of the
Rust compiler and tools. Rust is a systems programming language with a
focus on safety, performance and concurrency.

This was another eventful release in which we made extensive improvements
to the runtime and I/O subsystem, introduced static linking and link-time
optimization, and reduced the variety of closures in the language. 0.9
also
begins a final series of planned changes to how pointers are treated in
Rust, starting with the deprecation of the built-in managed pointer
type
and its accompanying `@` sigil, and the introduction of smart pointer
types
to the standard library.

The brief release notes are included in this announcement, and there is
further explanation in the detailed release [notes] on the wiki.
Documentation and all the links in this email are available on the
[website]. As usual, version 0.9 should be considered an alpha release,
suitable for early adopters and language enthusiasts. Please file [bugs]
and join the [fun].

[website]: http://www.rust-lang.org
[notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes
[bugs]: https://github.com/mozilla/rust/issues
[fun]:
https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors

This release is available as both a tarball and a Windows installer:

* http://static.rust-lang.org/dist/rust-0.9.tar.gz
http://static.rust-lang.org/dist/rust-0.9.tar.gz.asc
SHA256 (of .tar.gz):
c0911c3545b797a1ca16f3d76bf5ed234754b828efd1e22c182c7300ac7dd5d1

* http://static.rust-lang.org/dist/rust-0.9-install.exe
http://static.rust-lang.org/dist/rust-0.9-install.exe.asc
SHA256 (of .exe):
6ab14e25761d61ba724c5f77403d09d566d3187a2e048e006036b960d938fe90

Thanks to everyone who contributed!

Regards,
The Rust Team


Version 0.9 (January 2014)
--

* 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 preperation 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 `rfoo` 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 

Re: [rust-dev] Rust 0.9 released

2014-01-09 Thread Liigo Zhuang
Great work, thanks.
在 2014年1月10日 上午5:04,Brian Anderson bander...@mozilla.com写道:

  Mozilla and the Rust community are pleased to announce version 0.9 of the
 Rust compiler and tools. Rust is a systems programming language with a
 focus on safety, performance and concurrency.

 This was another eventful release in which we made extensive improvements
 to the runtime and I/O subsystem, introduced static linking and link-time
 optimization, and reduced the variety of closures in the language. 0.9
 also
 begins a final series of planned changes to how pointers are treated in
 Rust, starting with the deprecation of the built-in managed pointer type
 and its accompanying `@` sigil, and the introduction of smart pointer
 types
 to the standard library.

 The brief release notes are included in this announcement, and there is
 further explanation in the detailed release [notes] on the wiki.
 Documentation and all the links in this email are available on the
 [website]. As usual, version 0.9 should be considered an alpha release,
 suitable for early adopters and language enthusiasts. Please file [bugs]
 and join the [fun].

 [website]: http://www.rust-lang.org
 [notes]: https://github.com/mozilla/rust/wiki/Doc-detailed-release-notes
 [bugs]: https://github.com/mozilla/rust/issues
 [fun]:
 https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors

 This release is available as both a tarball and a Windows installer:

 * http://static.rust-lang.org/dist/rust-0.9.tar.gz
 http://static.rust-lang.org/dist/rust-0.9.tar.gz.asc
 SHA256 (of .tar.gz):
 c0911c3545b797a1ca16f3d76bf5ed234754b828efd1e22c182c7300ac7dd5d1

 * http://static.rust-lang.org/dist/rust-0.9-install.exe
 http://static.rust-lang.org/dist/rust-0.9-install.exe.asc
 SHA256 (of .exe):
 6ab14e25761d61ba724c5f77403d09d566d3187a2e048e006036b960d938fe90

 Thanks to everyone who contributed!

 Regards,
 The Rust Team


 Version 0.9 (January 2014)
 --

 * 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 preperation 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 `rfoo` 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 `0o`.
 * 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