发布于 2014-07-02 22:52:31 | 317 次阅读 | 评论: 0 | 来源: 网友投递
Rust 编程语言
Rust是Mozilla开发的注重安全、性能和并发性的编程语言。创建这个新语言的目的是为了解决一个很顽疾的问题:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。Rust是针对多核体系提出的语言,并且吸收一些其他动态语言的重要特性,比如不需要管理内存,比如不会出现Null指针等等。
Rust是Mozilla开发的注重安全、性能和并发性的编程语言。
Rust 0.11.0 发布了,改进记录包括:
* ~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.
下载地址:
Source * http://static.rust-lang.org/dist/rust-0.11.0.tar.gz http://static.rust-lang.org/dist/rust-0.11.0.tar.gz.asc SHA256 (of .tar.gz): d1b3e36448bf12b8c9289024df416de10774b6d3235d7b1d22b248ef634411ba Windows installer * http://static.rust-lang.org/dist/rust-0.11.0-install.exe http://static.rust-lang.org/dist/rust-0.11.0-install.exe.asc SHA256 (of .exe): fb253072ba5373eb0af388f63e51122af9dd13379d762ca4100ee7334dbec9d2 Linux binary tarballs * http://static.rust-lang.org/dist/rust-0.11.0-x86_64-unknown-linux-gnu.tar.gz http://static.rust-lang.org/dist/rust-0.11.0-x86_64-unknown-linux-gnu.tar.gz.asc SHA256 (of .tar.gz): 331d6374b3c8fca3e2b5fffb65ce75dfce3529bd47333de4a9ce636cb87be432 * http://static.rust-lang.org/dist/rust-0.11.0-i686-unknown-linux-gnu.tar.gz http://static.rust-lang.org/dist/rust-0.11.0-i686-unknown-linux-gnu.tar.gz.asc SHA256 (of .tar.gz): cbfe2050f708479f2625a935d2f41165868f354ff740d2697e08acb2255670b2 Mac OS X binary installers * http://static.rust-lang.org/dist/rust-0.11.0-x86_64-apple-darwin.pkg http://static.rust-lang.org/dist/rust-0.11.0-x86_64-apple-darwin.pkg.asc SHA256 (of .pkg): 1183d6c8ab021f4049a2906c1527f705bae4bb4935aea897f4860eb5337363c3 * http://static.rust-lang.org/dist/rust-0.11.0-i686-apple-darwin.pkg http://static.rust-lang.org/dist/rust-0.11.0-i686-apple-darwin.pkg.asc SHA256 (of .pkg): 8f5a1fe491d83c6be0a3082f0ac8504c89eed38263ae0ac0fad15d8c02e3b267 Mac OS X binary tarballs * http://static.rust-lang.org/dist/rust-0.11.0-x86_64-apple-darwin.tar.gz http://static.rust-lang.org/dist/rust-0.11.0-x86_64-apple-darwin.tar.gz.asc SHA256 (of .tar.gz): bbac91aff5464c20f39afcf078a693c4612717d6b1cc3f86f92075b2103bc22e * http://static.rust-lang.org/dist/rust-0.11.0-i686-apple-darwin.tar.gz http://static.rust-lang.org/dist/rust-0.11.0-i686-apple-darwin.tar.gz.asc SHA256 (of .tar.gz): 93d6e6e98d00df3e946e4f7765172ad522a118dd34f1fac73ba74d43df92698