Rust 0.5.0
Released on December 21, 2012
What's Changed
- ~900 changes, numerous bugfixes
- Syntax changes
- Removed
<-move operator - Completed the transition from the
#fmtextension syntax tofmt! - 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 projectionEqandIterBytesimplementations can be automatically generated- Removed the special crate language for
.rcfiles - 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
&Tmay now be coerced to*T- Coercions happen in
letstatements as well as function calls usestatements now take crate-relative paths- The module and type namespaces have been merged so that static
- Improved support for language features
- Trait inheritance works in many scenarios
- More support for explicit self arguments in methods -
self,&self - Static methods work in more situations
- Experimental: Traits may declare default methods for the implementations
- 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
getoptsdefinitions - Moved futures to
std - More functions are pure now
core::commrenamed tooldcomm. Still deprecatedrustdocandcargoare libraries now- Misc
- Added a preliminary REPL,
rusti - License changed from MIT to dual MIT/APL2
Full Changelog
* ~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