diff options
author | Brian Anderson <banderson@mozilla.com> | 2015-01-04 19:34:28 -0800 |
---|---|---|
committer | Brian Anderson <banderson@mozilla.com> | 2015-01-04 19:34:28 -0800 |
commit | 22245d78d8f5146e27783c02ddccd5a4e59c3e8c (patch) | |
tree | fad09d54d0451f81f3bdc2b721a47d6f161d8218 /content/2015-01-02-this-week-in-rust.md | |
parent | def458b26b731f82738575ba55f59f8c06f0ebbc (diff) |
Fill out PRs for 2015-01-02
Diffstat (limited to 'content/2015-01-02-this-week-in-rust.md')
-rw-r--r-- | content/2015-01-02-this-week-in-rust.md | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/content/2015-01-02-this-week-in-rust.md b/content/2015-01-02-this-week-in-rust.md new file mode 100644 index 0000000..7632918 --- /dev/null +++ b/content/2015-01-02-this-week-in-rust.md @@ -0,0 +1,203 @@ +Title: This Week in Rust 64 +Date: 2015-01-05 +Category: This Week in Rust + +Hello and welcome to another issue of *This Week in Rust*! +[Rust](http://rust-lang.org) is a systems language pursuing the trifecta: +safe, concurrent, and fast. This is a weekly summary of its progress and +community. Want something mentioned? [Send me an +email!](mailto:corey@octayn.net?subject=This%20Week%20in%20Rust%20Suggestion) +Want to get involved? [We love +contributions](https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors). + +This Week in Rust is openly developed [on Github](https://github.com/cmr/this-week-in-rust). +If you find any errors or omissions in this week's issue, [please submit a PR](https://github.com/cmr/this-week-in-rust/pulls). + +# What's cooking on master? + +121 pull requests were [merged in the last week][1]. + +[1]: https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Amerged+updated%3A2014-12-29..2015-01-04 + +Now you can follow breaking changes *[as they happen][BitRust]*! + +[BitRust]: http://bitrust.octarineparrot.com/ + +## Breaking Changes + +* The prelude exports [fewer traits][prelude] per [RFC + 503][prelude-rfc]. This mostly affects code that implements basic + traits like operators and iterators, which will now need to import + those traits directly, but also removes the deprecated `from_str` + function, which should be replaced by the `parse` method. +* 'Object-safe' traits [can not include static methods][objsafe]. +* [Trait objects now implement their trait by + default][trait-for-trait]. +* Fixed-length array syntax is now `[T; n]` and the [old syntax no + longer works][array]. [RFC][array-rfc]. +* Importing the containing module at the same time as items it + contains is [now done with `self` instead of `mod`][self], as in + `use foo::{self, bar}`, and the `deriving` attribute is changing to + `derive`. The old deprecated syntaxes continued to work for about a + day but [were quickly terminated][oldsyntax]. [RFC][self-rfc] and + [RFC][deriving-rfc]. +* `std::comm` [now lives in `std::sync::mpsc`][comm], has seen + some minor API changes, and is considered stable. +* `RWLock` and `Mutex` methods [now return `LockResult` or + `TryLockResult`][lock] so that they can communicate whether the lock + was poisoned. +* Arguments to macros are now [properly checked for unstable + features][macrogate]. This only breaks code that was accidentally + subverting feature-gates. +* `TaskRng` is [now `ThreadRng`][rng]. +* The [hashmap iterators have been renamed][hashmapiter] to match + conventions. +* The in-tree `term` crate is [deprecated][term]. Use Cargo. +* There have been some [minor breaking changes to `std::string`][str] + during another stabilization pass. +* There have been some [minor breaking changes to `std::sync`][sync] + during another stabilization pass. +* Using the FFI to sneakily link to LLVM intrinsics [requires the + `link_llvm_intrinsics` feature gate][intrinsics]. +* [Atomic ordering variants are no longer reepxorted][atomic]. +* A number `DList` methods are [deprecated, along with some minor + breaking changes to other collections][coll]. +* The `BoxAny` trait [is removed][boxany]. Use `Box<Any>`. + +[lock]: https://github.com/rust-lang/rust/pull/19661 +[prelude]: https://github.com/rust-lang/rust/pull/20157 +[prelude-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0503-prelude-stabilization.md +[macrogate]: https://github.com/rust-lang/rust/pull/20190 +[rng]: https://github.com/rust-lang/rust/pull/20264 +[hashmapiter]: https://github.com/rust-lang/rust/pull/20215 +[comm]: https://github.com/rust-lang/rust/pull/20273 +[term]: https://github.com/rust-lang/rust/pull/20276 +[str]: https://github.com/rust-lang/rust/pull/20306 +[sync]: https://github.com/rust-lang/rust/pull/20315 +[objsafe]: https://github.com/rust-lang/rust/pull/20325 +[intrinsics]: https://github.com/rust-lang/rust/pull/20334 +[trait-for-trait]: https://github.com/rust-lang/rust/pull/20341 +[atomic]: https://github.com/rust-lang/rust/pull/20348 +[coll]: https://github.com/rust-lang/rust/pull/20356 +[array]: https://github.com/rust-lang/rust/pull/20387 +[array-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0520-new-array-repeat-syntax.md +[boxany]: https://github.com/rust-lang/rust/pull/20420 +[self]: https://github.com/rust-lang/rust/pull/20365 +[self-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0532-self-in-use.md +[deriving-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0534-deriving2derive.md +[oldsyntax]: https://github.com/rust-lang/rust/pull/20504 + +## Other Changes + +* Rust again has [picks a fallback (either `i32` or `f64`) for + uninferred numeric types][fb]. [RFC][fb-rfc]. +* [Indicating that a type parameter may be unsized][sized] is now done + with `T: ?Sized` instead of `Sized? T`, and that `Self` may be + unsized with `trait T for ?Sized` instead of `trait T for + Sized?. The old syntax still works for the immediate + future. [RFC][sized-rfc]. +* Nullable enum optimizations [have been extended to more types][null] + so that e.g. `Option<Vec<T>>` and `Option<String>` take up no more + space than the inner types themselves. +* [Preliminary AArch64 support][arm64] has landed. +* Rust includes a [`rust-gdb`][gdb] script which launches gdb with Rust-specific + pretty-printers enabled. + +[fb]: https://github.com/rust-lang/rust/pull/20189 +[fb-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0212-restore-int-fallback.md +[null]: https://github.com/rust-lang/rust/pull/19765 +[arm64]: https://github.com/rust-lang/rust/pull/19790 +[gdb]: https://github.com/rust-lang/rust/pull/19954 +[sized]: https://github.com/rust-lang/rust/issues/19607 +[sized-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0490-dst-syntax.md + +## New Contributors + +* A.J. Gardner +* Andrea Canciani +* arturo +* Ben Foppa +* bombless +* crhino +* dan@daramos.com +* Diego Giagio +* Dirk Gadsden +* Earl St Sauver +* Eric Allen +* John Albietz +* JONNALAGADDA Srinivas +* Joseph Rushton Wakeling +* Rohit Joshi +* Tamir Duberstein +* Timon Rapp +* Titouan Vervack +* YawarRaza7349 + +# Approved RFC's + +- [526: Statically enforce Unicode in `std::fmt`](https://github.com/rust-lang/rfcs/blob/master/text/0526-fmt-text-writer.md) +- [532: Rename the `mod` keyword to `self` inside of imports](https://github.com/rust-lang/rfcs/blob/master/text/0532-self-in-use.md) +- [534: Rename deriving to derive](https://github.com/rust-lang/rfcs/blob/master/text/0534-deriving2derive.md) + +# New RFC's + +- [Make the implicit type parameter `Self` have no default `Sized` bound](https://github.com/rust-lang/rfcs/pull/546) +- [Integer to Bytes](https://github.com/rust-lang/rfcs/pull/548) + +# Community + +## From the Team + +* [Weekly-meetings/2014-12-30][mtg]. + +[mtg]: https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2014-12-30.md + +## Blog Posts + +- [My thoughts on Rust in 2015](http://featherweightmusings.blogspot.co.nz/2014/12/my-thoughts-on-rust-in-2015.html) +- [A Rust adventure](http://ck.kennt-wayne.de/2014/dec/a-rust-adventure) +- [Porting a Ray Tracer to Rust, part 1](http://www.willusher.io/2014/12/30/porting-a-ray-tracer-to-rust-part-1/) +- [Dependency injection container - Learning the ropes in Rust](http://nercury.github.io/rust/di/2015/01/02/dependency-injection-learning-rust.html) +- [Make your own programming language](http://blog.ppelgren.se/2015-01-03/DIY-Make-Your-Own-Programming-language/) - Building a programming language in Rust. + +## Discussions + +- [PSA: Rust installers now come with Cargo and docs](https://www.reddit.com/r/rust/comments/2r92yw/psa_rust_installers_now_come_with_cargo_and_docs/) +- [Is Intel MPX relevant for Rust?](http://www.reddit.com/r/rust/comments/2qlbx1/is_intel_mpx_relevant_for_rust/) +- [Restarting the `int/uint` discussion](http://discuss.rust-lang.org/t/restarting-the-int-uint-discussion/1131) +- [Making safety more explicit](http://www.reddit.com/r/rust/comments/2qr5yf/making_safety_more_explicit/) +- [Erlang vs Rust for High concurrency servers](http://www.reddit.com/r/rust/comments/2qzyfb/erlang_vs_rust_for_high_concurrency_servers/) +- [crates.io dependency graph](https://www.reddit.com/r/rust/comments/2rawmg/cratesio_crate_graph/) +- [Architectural portability as a first-class artifact of the build system](http://discuss.rust-lang.org/t/architectural-portability-as-a-first-class-artifact-of-the-build-and-dependency-systems/1187) +- [Implicit widening, polymorphic indexing, and similar ideas](http://discuss.rust-lang.org/t/implicit-widening-polymorphic-indexing-and-similar-ideas/1141) + +## New Projects + +- [fern](https://github.com/daboross/fern-rs), a runtime-configurable logging library +- [Recreating F#'s active patterns with macros](http://www.reddit.com/r/rust/comments/2qqlfa/recreating_fs_active_patterns_in_rust_with_macros/) +- [di, a dependency injection container](https://github.com/Nercury/di-rs) +- [event, a fast, ergonomic thread-local event loop built on mio](https://github.com/reem/rust-event) +- [JNI bindings for Rust](https://github.com/larroy/RustJni) +- [A stopwatch library for Rust. Used to time things](https://github.com/ellisonch/rust-stopwatch) +- [TaskGraph, a task library in the spirit of C++'s TPL](https://github.com/tobbebex/TaskGraph) +- [clock_ticks](https://crates.io/crates/clock_ticks) - A simple + alternative to `precise_time_ns` that doesn't require the + (frequently broken) `time` crate. + + +## Project Updates + +- [This Week in Servo 17](http://blog.servo.org/2014/12/31/twis-17/) +- [Cross platform watch script for building cargo projects](https://gist.github.com/bvssvni/ac6c92167d260b73aa6e) +- [Update on cargo-emscripten](https://www.reddit.com/r/rust/comments/2raoad/emscripten_experiments_update_early_prototype_for/) + +## Upcoming Events + +- [Rust Seatle Meetup](https://www.eventbrite.com/e/mozilla-rust-seattle-meetup-tickets-12222326307?aff=erelexporg), +January 12th +- [Rust Beijing Meetup](https://www.eventbrite.com/e/rust-meet-up-in-beijing-tickets-14905925023), +January 17th +- [Getting started contributing to Rust](http://www.meetup.com/Rust-Bay-Area/events/203782472/), +January 17th +- The [first Rust-Amsterdam meetup](http://www.meetup.com/Rust-Amsterdam/events/218908906/#event-comments-section), +January 28th. They're [looking for speakers](http://www.reddit.com/r/rust/comments/2qxhp1/first_rustamsterdam_meetup_28th_of_january/) |