summaryrefslogtreecommitdiffstats
path: root/content/2014-12-01-this-week-in-rust.md
diff options
context:
space:
mode:
authorAlexis Beingessner <a.beingessner@gmail.com>2014-12-01 10:01:22 -0500
committerAlexis Beingessner <a.beingessner@gmail.com>2014-12-01 10:01:22 -0500
commitcbea67ca65d9765f04a9953ea2eda2deabebdc7b (patch)
tree825b89b6326a71ed3e26524c2c2c1349ecb03b15 /content/2014-12-01-this-week-in-rust.md
parent0105fe32787a61f268772e6bbb483b54d5333359 (diff)
publish TWIR
Diffstat (limited to 'content/2014-12-01-this-week-in-rust.md')
-rw-r--r--content/2014-12-01-this-week-in-rust.md228
1 files changed, 228 insertions, 0 deletions
diff --git a/content/2014-12-01-this-week-in-rust.md b/content/2014-12-01-this-week-in-rust.md
new file mode 100644
index 0000000..94df99d
--- /dev/null
+++ b/content/2014-12-01-this-week-in-rust.md
@@ -0,0 +1,228 @@
+Title: This Week in Rust 59
+Date: 2014-12-01
+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).
+
+# What's cooking on master?
+
+71 pull requests were [merged in the last week][1].
+
+[1]: https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Amerged+updated%3A2014-11-24..2014-12-01
+
+## Breaking Changes
+
+* [libgetopts has had][getopts] some public re-exports removed, Fail_ renamed to Fail,
+and getopts::FailType has been removed.
+* BinarySearchResult's variants [are no longer re-exported][bstenum], and must be accessed
+through the enum itself.
+* [libsync is dead][ripsync]. Long live `std::sync` and `std::comm`. All uses of libsync
+should be able to cleanly migrate to these two modules.
+* MaybeOwned[Vector] has been deprecated [in favour of Cow][cowabunga]. See the PR for
+full details of all the consequences.
+* Non-failing `unwrap` methods [have been renamed][into-winner] to `into_inner`, as
+per [RFC 430][rfc430]
+* You can [no longer invoke Dark Magicks][never4get] and match on an enum struct variant
+as if it were a tuple. As a consequence, Rust is no longer a useful programming language.
+* non-ASCII lifetime identifiers [have been feature-gated][whatishappening]. Rust is now
+only of academic interest, and lacks any practical applications.
+
+[getopts]: https://github.com/rust-lang/rust/pull/19365
+[bstenum]: https://github.com/rust-lang/rust/pull/19287
+[ripsync]: https://github.com/rust-lang/rust/pull/19255
+[cowabunga]: https://github.com/rust-lang/rust/pull/19252
+[into-winner]: https://github.com/rust-lang/rust/pull/19149
+[rfc430]: https://github.com/rust-lang/rfcs/pull/430
+[never4get]: https://github.com/rust-lang/rust/pull/19087
+[whatishappening]: https://github.com/rust-lang/rust/pull/19073
+
+## Other Changes
+
+* CowString now [implements Str][cowstr] as MaybeOwned did.
+* Unboxed closure captures are [now avaiable in debuginfo][debuginfo].
+* tomjakubowski has taught Rustdoc about [several][tomja1] of [rust's][tomja2] new
+[features][tomja3].
+* Some missing collection iterators [have][iter1] [been][iter2] [added][iter3].
+* The inner contents of Buffered io types [are now accessible mutably][buffers].
+* Tests [now add less useless whitespace][notabs] to your terminal's output.
+* Statically allocated TLS keys are now [explicitly leaked][leaky].
+* Fields of consts are [now transitevly interpretted as const][constmemaybe],
+allowing e.g. `[T, ..MY_TUPLE.0]`.
+* `::::` [no longer appears][nonono] in module paths in debug logs.
+* AtomicOption now [correctly requires `Send`][atomic] for memory safety.
+* japaric has DST-ified more of the standard libs
+* The iterator module has been [partially stabalized][iterstab].
+* Platform-specific io modules `std::or::unix` and `std::os::windows`
+[have been added][i-oh-my] for working with lower-level `io` details
+like file descriptors, SOCKETS, HANDLES, etc.
+* Slice iterators can now [be converted to slices][sliceit] via `as_slice`.
+* Rng [now supports][random-floats] `next_f64` and `next_f32`.
+
+[debuginfo]: https://github.com/rust-lang/rust/pull/19363
+[tomja1]: https://github.com/rust-lang/rust/pull/19349
+[tomja2]: https://github.com/rust-lang/rust/pull/19272
+[tomja3]: https://github.com/rust-lang/rust/pull/19174
+[iter1]: https://github.com/rust-lang/rust/pull/19330
+[iter2]: https://github.com/rust-lang/rust/pull/19296
+[iter3]: https://github.com/rust-lang/rust/pull/19231
+[buffers]: https://github.com/rust-lang/rust/pull/19328
+[notabs]: https://github.com/rust-lang/rust/pull/19299
+[leaky]: https://github.com/rust-lang/rust/pull/19285
+[constmemaybe]: https://github.com/rust-lang/rust/pull/19266
+[nonono]: https://github.com/rust-lang/rust/pull/19262
+[atomic]: https://github.com/rust-lang/rust/pull/19250
+[dst1]: https://github.com/rust-lang/rust/pull/19248
+[iterstab]: https://github.com/rust-lang/rust/pull/19176
+[i-oh-my]: https://github.com/rust-lang/rust/pull/19169
+[sliceit]: https://github.com/rust-lang/rust/pull/18966
+[random-floats]: https://github.com/rust-lang/rust/pull/18534
+
+## New Contributors
+
+* Ben S
+* olivren
+* Pascal Hertleif
+* Roy Crihfield
+* Ulysse Carion
+
+# Approved RFC's
+
+* [Disallow type/lifetime parameter shadowing][rfc459]: Rarely what you want, confusing when it happens.
+* [Add "function name macro"][rfc466]: This RFC proposes the addition of a function! macro that expands to the function it's used in. This will greatly help error reporting.
+* [extension trait conventions][rfc445]: This is a conventions RFC establishing a definition and naming convention for extension traits: `FooExt`.
+
+[rfc459]: https://github.com/rust-lang/rfcs/pull/459
+[rfc466]: https://github.com/rust-lang/rfcs/pull/466
+[rfc445]: https://github.com/rust-lang/rfcs/pull/445
+
+# New RFC's
+
+* [Stabilize `std::{c_str, c_vec}`][rfc494]: Stabilize the std::{c_str, c_vec} modules by re-working their interfaces and refocusing each primitive for one particular task.
+* [Error Reform and Failure Box][rfc492]: This RFC proposes changes to the `Error` trait and the introduction of a `Failure<T>` wrapper type for errors and modifications to the `Error` trait for better error interoperability and debugging support. [Reddit][red492]
+* [Remove the `[]` notation for taking a whole slice][rfc491]: &* has emerged as less strange and more idomatic
+* [Change DST syntax to `T: Sized?`][rfc490]: Change the syntax for dynamically sized type parameters from `Sized? T` to `T: Sized?`, and change the syntax for traits for dynamically sized types to `trait Foo: Sized?`. Extend this new syntax to work with `where` clauses.
+* [rename `lifetime` to `lifespan`][rfc487]: 'nuff said
+* [std::ascii reform][rfc486]: Move the `std::ascii::Ascii` type and related traits to a new Cargo package on crates.io, and instead expose its functionality for `u8`, `[u8]`, `char`, and `str` types. [Reddit][red487]
+* [Make brackets optional for single attributes][rfc484]: This is an alternative to #483: instead of changing attributes to `@`, just make the brackets optional for `#`.
+* [Change attribute syntax to @foo][rfc483]: Change attribute syntax from `#[foo]` and `#![foo]` to `@foo` and `@!foo`. [Reddit][red483]
+
+[rfc494]: https://github.com/rust-lang/rfcs/pull/494
+[rfc492]: https://github.com/rust-lang/rfcs/pull/492
+[rfc491]: https://github.com/rust-lang/rfcs/pull/491
+[rfc490]: https://github.com/rust-lang/rfcs/pull/490
+[rfc487]: https://github.com/rust-lang/rfcs/pull/487
+[rfc486]: https://github.com/rust-lang/rfcs/pull/486
+[rfc484]: https://github.com/rust-lang/rfcs/pull/484
+[rfc483]: https://github.com/rust-lang/rfcs/pull/483
+
+[red492]: http://www.reddit.com/r/rust/comments/2nsufx/rfc_error_reform_and_failure_box/
+[red487]: http://www.reddit.com/r/rust/comments/2nlar3/rfc_rename_lifetime_to_lifespan/
+[red483]: http://www.reddit.com/r/rust/comments/2nfxtf/rfc_change_attribute_syntax_to_foo/
+
+# Community
+
+## From the Team
+
+* [Weekly-meetings/2014-25-12][mtg]: extension trait conventions; shadowed lifetimes; problems with unused type params; es6-style string escaping; int fallback redux redux [Reddit][mtg-reddit].
+
+[mtg]: https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2014-11-25.md
+[mtg-reddit]: http://www.reddit.com/r/rust/comments/2nhmgj/weekly_meeting_20141125_extension_trait/
+
+
+
+## Blog Posts
+
+* [Rust borrow and lifetimes][rs-borrows]: Another survey of how borrows and ownership works
+in Rust. [Reddit][rs-borrows-red]
+* [Rust, Generics, and Collections][gen-col]: A look at some of the space of generic
+programming in Rust, and how it interacts with collections.
+* [Rust compiling rust: adventures with librustc][rcr]: A quick look at using librustc
+programmatically. [Reddit][rcr-reddit]
+* [Interoperating Between Objective-C and Rust][objc]: How to write FFI code for Objective-C
+[Reddit][objc-red]
+* [Purging Proc][proc]: Niko explains the present and future of unboxed closures.
+[Reddit][proc-red]
+* [Installing Rust nightly builds into your home directory][home]: A simple guide for setting up
+ Rust in your terminal on a Mac. [Reddit][home-red]
+* [Procedural Generation in Rust Part 1: Setting up your Environment][generation]: Setting up Rust
+in Windows. (this week's author of TWiR can testify that this is sometimes harrowing)
+[Reddit][generation-red]
+* [Benchmarking is Confusing in Low Level Rust][confusing]: A dive into trying to re-implement
+Reader and Writer performantly, and determining if you've actually done that.
+[Reddit][confusing-red]
+
+[rcr]: http://jaredly.github.io/2014/11/22/rust-compiling-rust-adventures-with-librustc/
+[rcr-reddit]: http://www.reddit.com/r/rust/comments/2noy0l/rust_compiling_rust_adventures_with_librustc/
+[objc]: http://sasheldon.com/blog/2014/11/28/interoperating-between-objective-c-and-rust/
+[objc-red]: http://www.reddit.com/r/rust/comments/2nno39/interoperating_between_objectivec_and_rust/
+[proc]: http://smallcultfollowing.com/babysteps/blog/2014/11/26/purging-proc/
+[proc-red]: http://www.reddit.com/r/rust/comments/2nipwp/purging_proc/
+[home]: http://mpuppe.de/blog/2014/11/26/installing-rust-nightly-builds-into-your-home-directory/
+[home-red]: http://www.reddit.com/r/rust/comments/2niux7/installing_rust_nightly_builds_into_your_home/
+[generation]: http://brandonmhaley.com/?p=8
+[generation-red]: http://www.reddit.com/r/rust/comments/2ncc4x/procedural_generation_in_rust_part_1_setting_up/
+[confusing]: http://erickt.github.io/blog/2014/11/22/benchmarking-is-confusing/
+[confusing-red]: http://www.reddit.com/r/rust/comments/2n8l35/benchmarking_is_confusing_in_low_level_rust/
+[gen-col]: http://cglab.ca/~abeinges/blah/rust-generics-and-collections/
+[gen-col-red]: http://www.reddit.com/r/rust/comments/2nwuct/rust_generics_and_collections/
+[rs-borrows]: http://arthurtw.github.io/2014/11/30/rust-borrow-lifetimes.html
+[rs-borrows-red]: http://www.reddit.com/r/rust/comments/2nuybm/rust_borrow_and_lifetimes/
+
+## Discussions
+
+* [which classes of errors remain with rust?][error-classes]
+* [The Sad State of Zero-on-Drop][sad-state] [Reddit][sad-state-reddit]
+* [Are there any Rust books in the pipeline?][rust-books]
+* [Crates.io Package Groups Proposal][crate-names]
+* [Are there plans for a Rust runtime?][plans]
+
+[error-classes]: http://www.reddit.com/r/rust/comments/2nlis8/which_classes_of_errors_remain_with_rust/
+[sad-state]: http://discuss.rust-lang.org/t/the-sad-state-of-zero-on-drop/944
+[sad-state-reddit]: http://www.reddit.com/r/rust/comments/2nef5d/the_sad_state_of_zeroondrop/
+[rust-books]: http://www.reddit.com/r/rust/comments/2ne8jz/are_there_any_rust_books_in_the_pipeline/
+[crate-names]: https://github.com/rust-lang/cargo/issues/975
+[plans]: http://www.reddit.com/r/rust/comments/2n9pkl/are_there_plans_for_a_rust_runtime/
+
+## New Projects
+
+* [pitch_calc][pitch_calc]: A library for musical pitch conversions! Provides functions and traits for converting between frequency, midi-step and letter-octave.
+* [irc][irc]: An IRC library for Rust.
+* [SoundStream][SoundStream]: A simple-as-possible, fast audio I/O stream for Rust
+* [capture.rs][capture.rs]: A macro for explicit capture clauses
+* [morphism.rs][morphism.rs]: A structure for suspended closure composition
+* [collect-rs][collect-rs]: An experimental extension of the Rust standard library's libcollections
+* [confsolve][confsolve]: Command line tool for resolving Dropbox/Wuala conflicts
+* [enum_ns][enum_ns]: A simple compiler plugin to enable the old enum namespacing behavior for select modules and crates
+* [Multipart + Hyper][multipart]: An extension to Hyper that provides client- and server-side support for HTTP multipart/form-data requests
+* [sersve][sersve]: A directory server in Rust with Iron
+
+[pitch_calc]: https://github.com/RustAudio/pitch_calc
+[irc]: https://github.com/aaronweiss74/irc
+[SoundStream]: https://github.com/mitchmindtree/sound_stream
+[capture.rs]: https://crates.io/crates/capture
+[morphism.rs]: https://github.com/epsilonz/morphism.rs
+[collect-rs]: https://github.com/Gankro/collect-rs
+[confsolve]: https://github.com/dan-t/rust-confsolve
+[enum_ns]: https://github.com/cybergeek94/enum_ns
+[multipart]: https://github.com/cybergeek94/multipart
+[sersve]: http://till.hoeppner.ws/2014/11/30/Introducing-sersve-a-directory-server-in-Rust-with-Iron/
+
+## Project Updates
+
+* [This Week In Servo 13]
+
+[twis]: http://blog.servo.org/2014/11/25/twis-13/
+
+## Upcoming Meetups
+
+* [Rust Berlin Hack and Learn][rust-berlin]: December 9th
+* [Rust Amsterdam][rust-amsterdam]: Early 2015
+
+[rust-berlin]: http://www.meetup.com/Rust-Berlin/events/218914766/
+[rust-amsterdam]: http://www.meetup.com/Rust-Amsterdam