Version 0.7 (2013-07-03)
-
~2000 changes, numerous bugfixes
-
Language
impls 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
selfparameter 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
forloop protocol now requiresfor-iterators to returnboolso they compose better. - The
Durabletrait is replaced with the'staticbounds. - Trait default methods work more often.
- Structs with the
#[packed]attribute have byte alignment and no padding between fields. - Type parameters bound by
Copymust now be copied explicitly with thecopykeyword. - It is now illegal to move out of a dereferenced unsafe pointer.
Option<~T>is now represented as a nullable pointer.@mutdoes dynamic borrow checks correctly.- The
mainfunction 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 beSend, not. - The
#[no_freeze]attribute makes a type that would otherwise beFreeze, not. - Unbounded recursion will abort the process after reaching the limit
specified by the
RUST_MAX_STACKenvironment variable (default: 1GB). - The
vecs_implicitly_copyablelint 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 modstatement no longer exists.
-
Syntax extensions
fail!andassert!accept~str,&'static strorfmt!-style argument list.Encodable,Decodable,Ord,TotalOrd,TotalEq,DeepClone,Rand,ZeroandToStrcan all be automatically derived with#[deriving(...)].- The
bytes!macro returns a vector of bytes for string, u8, char, and unsuffixed integer literals.
-
Libraries
- The
corecrate was renamed tostd. - The
stdcrate was renamed toextra. - More and improved documentation.
- std:
iteratormodule 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
finalizemethod ofDroprenamed todrop. - std: The
dropmethod now takes&mut selfinstead of&self. - std: The prelude no longer re-exports 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:
pathtype renamed toPath. - std:
mutmodule andMuttype 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_castremoved. Usetransmute. - std: ascii string handling in
std::ascii. - std:
Randis implemented for ~/@. - std:
runmodule for spawning processes overhauled. - std: Various atomic types added to
unstable::atomic. - std: Various types implement
Zero. - std:
LinearMapandLinearSetrenamed toHashMapandHashSet. - std: Borrowed pointer functions moved from
ptrtoborrow. - std: Added
os::mkdir_recursive. - std: Added
os::globfunction performs filesystems globs. - std:
FuzzyEqrenamed toApproxEq. - std:
Mapnow definespopandswapmethods. - std:
Cellconstructors converted to static methods. - extra:
rcmodule adds the reference counted pointers,RcandRcMut. - extra:
flatemodule moved fromstdtoextra. - extra:
fileinputmodule for iterating over a series of files. - extra:
Complexnumber type andcomplexmodule. - extra:
Rationalnumber type andrationalmodule. - extra:
BigInt,BigUintimplement numeric and comparison traits. - extra:
termuses terminfo now, is more correct. - extra:
arcfunctions converted to methods. - extra: Implementation of fixed output size variations of SHA-2.
- The
-
Tooling
unused_variableslint mode for unused variables (default: warn).unused_unsafelint mode for detecting unnecessaryunsafeblocks (default: warn).unused_mutlint mode for identifying unusedmutqualifiers (default: warn).dead_assignmentlint mode for unread variables (default: warn).unnecessary_allocationlint mode detects some heap allocations that are immediately borrowed so could be written without allocating (default: warn).missing_doclint mode (default: allow).unreachable_codelint mode (default: warn).- The
rusticommand has been rewritten and a number of bugs addressed. - rustc outputs in color on more terminals.
- rustc accepts a
--link-argsflag to pass arguments to the linker. - rustc accepts a
-Z print-link-argsflag for debugging linkage. - Compiling with
-gwill 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).