diff options
author | Brian Anderson <banderson@mozilla.com> | 2014-12-15 07:47:06 -0800 |
---|---|---|
committer | Brian Anderson <banderson@mozilla.com> | 2014-12-15 07:47:06 -0800 |
commit | 8e9e891351a1cf67429dba3ec38d8a00f71bb5e5 (patch) | |
tree | 233bd1ca9fd96c7252e16a7076870a9d6eaab2d3 /content/2014-12-15-this-week-in-rust.md | |
parent | d5e9147c1180b320adfae6812e34ba4644ca6f99 (diff) |
2014-12-15
Diffstat (limited to 'content/2014-12-15-this-week-in-rust.md')
-rw-r--r-- | content/2014-12-15-this-week-in-rust.md | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/content/2014-12-15-this-week-in-rust.md b/content/2014-12-15-this-week-in-rust.md new file mode 100644 index 0000000..3133768 --- /dev/null +++ b/content/2014-12-15-this-week-in-rust.md @@ -0,0 +1,252 @@ +Title: This Week in Rust 61 +Date: 2014-12-15 +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? + +60 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-08..2014-12-15 + +Now you can follow breaking changes *[as they happen][BitRust]*! + +[BitRust]: http://bitrust.octarineparrot.com/ + +## Breaking Changes + +* Implementations of `Copy` must [now be declared + explicitly][optin]. This is part of the [opt-in-builtin traits RFC + (colloquially knows as OIBIT)][optin-rfc] which is supposed to + remove some potential footguns from the typesystem. +* Most use of closures have been [converted][unboxed] to 'unboxed + closures', the new, more flexible, closure model. As a result of API + changes some downstream code will break, the PR has detailed + instructions for the transition. +* Slight adjustments have been made to the `fmt` API to make them + [safe][fmt]. These APIs are rarely used directly. +* It's now [impossible to explicitly call the `call` method][call] of + the closure types without turning on a feature + gate. Futureproofing. Doesn't affect the normal calling syntax. +* The `Option` and `Result` variants are [no longer reexported from + their respective modules][reexp]. This won't break most code + because the variants are part of the prelude. + +[optin]: https://github.com/rust-lang/rust/pull/19566 +[optin-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0019-opt-in-builtin-traits.md +[fmt]: https://github.com/rust-lang/rust/pull/19506 +[call]: https://github.com/rust-lang/rust/pull/19587 +[reexp]: https://github.com/rust-lang/rust/pull/19653 +[unboxed]: https://github.com/rust-lang/rust/pull/19467 + +## Other Changes + +* Barosl [taught bors how to do rollups][rollup]!!!!! +* Type bounds can be [constrained by the type of an associated + type][assoc-eq], as in `fn sum_uints<I>(iter: I) where I: Iterator, + I::A = uint { ... }`. [RFC][assoc-eq-rfc]. +* Lifetime elision [works on unboxed closure type sugar][sugar]. +* The [testing guide][testing] has been overhauled. +* [`unsafe impl` and `unsafe trait` have landed][unsafe] as port of + [OIBIT][oibit-rfc]. This is required to convert `Send` and `Sync` + into library types. +* [`BTreeSet` implements `BitOr`, `BitAnd`, `BitXor`, and `Sub`][btreeset]. +* The `recursion_limit` attribute [can control how deeply various + algorithms in the compiler recurse][recur]. It can be used to + convince the typechecker to keep working on particularly complicated + types. +* [`String` implements `FromIterator<&str>` and + `Extend<&str>`][extend], which means that iterators of `&str` can be + collected into or appended on to a single string, e.g. `let s: + String = vec!["foo", "bar"].collect();`, `let s = String::new(); + s.extend(vec!["foo", "bar"]);`. +* New `os::unix` and `os::windows` modules provide [platform-specific + interop with `std::io`][io]. +* The `TupleN` traits [are deprecated][tuplen] because tuple indexing + is part of the language. + +[testing]: http://doc.rust-lang.org/guide-testing.html +[sugar]: https://github.com/rust-lang/rust/pull/19589 +[recur]: https://github.com/rust-lang/rust/pull/19466 +[btreeset]: https://github.com/rust-lang/rust/pull/19514 +[extend]: https://github.com/rust-lang/rust/pull/19626 +[io]: https://github.com/rust-lang/rust/pull/19169 +[assoc-eq]: https://github.com/rust-lang/rust/pull/19391 +[assoc-eq-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0195-associated-items.md#constraining-associated-types +[tuplen]: https://github.com/rust-lang/rust/pull/19677 +[unsafe]: https://github.com/rust-lang/rust/pull/19703 +[oibit-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0019-opt-in-builtin-traits.md +[rollup]: https://github.com/graydon/bors/pull/47 + +## New Contributors + +* Aaron Weiss +* Aidan Cully +* Arthur Liao +* bluss +* Jon Haddad +* Matt Murphy +* Matt Windsor +* Maxime Quandalle +* Nafis + +# Approved RFC's + +None. + +# New RFC's + +* [505: API comment conventions][rfc505]. Standardizing current + conventions. +* [507: Release channels take 2][rfc507]. Describes the release train, + feature staging and in this iteration merges stability attributes + with feature gates. +* [509: Collections reform part 2][rfc509]. This RFC shores up the + finer details of collections reform. In particular, where the + previous RFC focused on general conventions and patterns, this RFC + focuses on specific APIs. It also patches up any errors that were + found during implementation of part 1. Some of these changes have + already been implemented, and simply need to be ratified. +* [517: `io` and `os` reform][rfc517]. This RFC proposes a significant + redesign of the std::io and std::os modules in preparation for API + stabilization. +* [519: Panicking tasks should abort process if not handled][rfc519]. +* [520: Change array syntax to prevent ambiguity introduced by RFC + 439][rfc520]. An alternative to [RFC 498]rfc498] that fixes the + ambiguity by changing the array type syntax. +* [522: Allow the `Self` type to be used in impls][rfc522]. In the + implemantion of a trait, instead of writing the explicit type for + which a trait is implemented, just write `Self`. + +[rfc498]: https://github.com/rust-lang/rfcs/pull/498 +[rfc505]: https://github.com/rust-lang/rfcs/pull/505 +[rfc507]: https://github.com/rust-lang/rfcs/pull/507 +[rfc509]: https://github.com/rust-lang/rfcs/pull/509 +[rfc517]: https://github.com/rust-lang/rfcs/pull/517 +[rfc519]: https://github.com/rust-lang/rfcs/pull/519 +[rfc520]: https://github.com/rust-lang/rfcs/pull/520 +[rfc522]: https://github.com/rust-lang/rfcs/pull/522 + +# Community + +[rustbyexample.com](http://rustbyexample.com) is an [official rust-lang project][rbe] +now. Contributions highly encouraged. [Reddit][rbe-reddit]. + +[rbe]: https://github.com/rust-lang/rust-by-example +[rbe-reddit]: https://www.reddit.com/r/rust/comments/2onzq0/rust_by_example_has_been_transferred_to_rustlang/ + +## From the Team + +* [Rust 1.0: Scheduling the Trains][trains]. About the 1.0 release + schedule. [Reddit][trains-reddit]. [HN][trains-hn]. +* [Yehuda Katz and Steve Klabnik are joining the Rust Core + Team][core]. [Reddit][core-reddit]. [HN][core-hn]. +* [Weekly-meetings/2014-18-11][mtg]: process changes; box patterns; + macros; issues in FIXMEs; placement box. [Reddit][mtg-reddit]. + +[trains]: http://blog.rust-lang.org/2014/12/12/1.0-Timeline.html +[trains-reddit]: https://www.reddit.com/r/rust/comments/2p35dk/rust_10_scheduling_the_trains/ +[trains-hn]: https://news.ycombinator.com/item?id=8740751 +[core]: http://blog.rust-lang.org/2014/12/12/Core-Team.html +[core-reddit]: https://www.reddit.com/r/rust/comments/2p47ee/yehuda_katz_and_steve_klabnik_are_joining_the/ +[core-hn]: https://news.ycombinator.com/item?id=8742953 +[mtg]: https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2014-12-09.md +[mtg-reddit]: + +## Blog Posts + +* [Fun with Threads][funthreads]: Comparing basic parallel programming in C and Rust, from a beginner's perspective. [Reddit][funthreads-reddit] +* [Rewriting Rust Serialization, Part 3: Introducing Serde][rustserial]: Part 3 of Erick's great series on serialization. [Reddit][rustserial-reddit] +* [Using Rust to Make a Safer Interface for Yahoo’s Fast MDBM Database][mdbm]: [Reddit][mdbm-reddit] +* [Bootstrapping Rust][bootstrapping]: A quick look at the issues of compiling a compiler written in itself. [Reddit][bootstrapping-reddit] +* [A Beginner’s Thoughts on Programming Languages (Part 2 — RAII, GC, Ownership, noexcept)][begginers]: [Reddit][begginers-reddit] +* [Working with AI behavior trees][behaviour]: Using some of the AI features found in Piston. [Reddit][behaviour-reddit] + + +### 24 Days of Rust continues! + +* [24 Days of Rust - racer][24days8]. [Reddit][24days8-reddit]. +* [24 Days of Rust - anymay][24days9]. [Reddit][24days9-reddit]. +* [24 Days of Rust - the glorious tau][24days10]. [Reddit][24days10-reddit]. +* [24 Days of Rust - postgres][24days11]. [Reddit][24days11-reddit]. +* [24 Days of Rust - image][24days12]. [Reddit][24days12-reddit]. +* [24 Days of Rust - uuid][24days13]. [Reddit][24days13-reddit]. +* [24 Days of Rust - nalgebra][24days14]. [Reddit][24days14-reddit]. + +[funthreads]: http://jvns.ca/blog/2014/12/14/fun-with-threads/ +[funthreads-reddit]: http://www.reddit.com/r/rust/comments/2pabnd/diving_into_concurrency_trying_out_mutexes_and/ +[rustserial]: http://erickt.github.io/blog/2014/12/13/rewriting-rust-serialization/ +[rustserial-reddit]: http://www.reddit.com/r/rust/comments/2p85za/rewriting_rust_serialization_part_3_introducing/ +[mdbm]: http://erickt.github.io/blog/2014/12/13/rust-and-mdbm/ +[mdbm-reddit]: http://www.reddit.com/r/rust/comments/2p70sj/using_rust_to_make_a_safer_interface_for_yahoos/ +[bootstrapping]: http://aidancully.blogspot.com/2014/12/bootstrapping-rust.html +[bootstrapping-reddit]: http://www.reddit.com/r/rust/comments/2ovuko/bootstrapping_rust/ +[begginers]: https://medium.com/@chcokr/a-beginners-thoughts-on-programming-languages-part-2-raii-gc-ownership-noexcept-1c08f5dfe353 +[begginers-reddit]: http://www.reddit.com/r/rust/comments/2ov7e2/a_beginners_thoughts_on_programming_languages/ +[behaviour]: http://blog.piston.rs/2014/12/09/working-with-ai-behavior-trees/ +[behaviour-reddit]: http://www.reddit.com/r/rust/comments/2orssg/working_with_ai_behavior_trees_piston/ + +[24days8]: https://siciarz.net/24-days-of-rust-racer/ +[24days8-reddit]: https://www.reddit.com/r/rust/comments/2oo1n5/24_days_of_rust_racer/ +[24days9]: https://siciarz.net/24-days-of-rust-anymap/ +[24days9-reddit]: https://siciarz.net/24-days-of-rust-anymap/ +[24days10]: https://siciarz.net/24-days-of-rust-glorious-tau/ +[24days10-reddit]: https://www.reddit.com/r/rust/comments/2ow3jm/24_days_of_rust_the_glorious_tau/ +[24days11]: https://siciarz.net/24-days-of-rust-postgres/ +[24days11-reddit]: https://www.reddit.com/r/rust/comments/2ozzeg/24_days_of_rust_postgres/ +[24days12]: https://siciarz.net/24-days-of-rust-image/ +[24days12-reddit]: https://www.reddit.com/r/rust/comments/2p3mjf/24_days_of_rust_image/ +[24days13]: https://siciarz.net/24-days-of-rust-uuid/ +[24days13-reddit]: https://www.reddit.com/r/rust/comments/2p6kvf/24_days_of_rust_uuid/ +[24days14]: https://siciarz.net/24-days-of-rust-nalgebra/ +[24days14-reddit]: https://www.reddit.com/r/rust/comments/2pa7md/24_days_of_rust_nalgebra/ + +## New Projects +* [Elliptic Curve Crypto][ecc]: Elliptic curve arithmetic and cryptography library in pure Rust +* [Rustache][rustache]: a flexible template engine for Rust +* [checked_cast!][checked]: A small macro to deal with the libc typedef hell +* [Iota][iota]: A simple text editor written in Rust +* [Metafactory][metafactory]: value construction pipeline builder +* [superchan][superchan]: A Rust crate containing types for sending data across a network +* [wxRust][wxRust]: A Rust binding of the wxWidgets cross platform toolkit + +[ecc]: https://github.com/Bren2010/ecc +[rustache]: http://rustache.github.io/ +[checked]: https://github.com/Jurily/rust-checked-cast +[iota]: https://github.com/gchp/iota +[metafactory]: https://github.com/Nercury/metafactory-rs +[superchan]: https://github.com/dradtke/superchan +[wxRust]: https://github.com/kenz-gelsoft/wxRust + +## Project Updates + +* [This Week in Servo 14][twis]. Servo has adopted [hyper]. [Reddit][twis-reddit]. +* [Servo meeting notes from Mozlandia][servo-mozlandia]. Notes from the workweek. +* [Servo running on Firefox OS][fxos]. [Reddit][fxos-reddit]. +* [rusty-tags now supports emacs][rusty-tags] + +[twis]: http://blog.servo.org/2014/12/09/twis-14/ +[twis-reddit]: https://www.reddit.com/r/rust/comments/2orabe/this_week_in_servo_15/ +[hyper]: https://github.com/hyperium/hyper +[servo-mozlandia]: https://groups.google.com/forum/#!topic/mozilla.dev.servo/zK2H8a2dTGQ +[fxos]: https://twitter.com/larsberg_/status/539937229049581568 +[fxos-reddit]: https://www.reddit.com/r/rust/comments/2orhhh/servo_running_on_firefox_os/ +[rusty-tags]: https://github.com/dan-t/rusty-tags + +## Upcoming Events + +* There will be a [talk about Rust at PyCon][pycon]. +* [12/18 Bay Area Rust: Crypto][bay]. + +[pycon]: https://us.pycon.org/2015/schedule/presentation/411/ +[bay]: http://www.meetup.com/Rust-Bay-Area/events/210632582/ |