summaryrefslogtreecommitdiffstats
path: root/content/2014-05-11-this-week-in-rust.markdown
blob: fee185850ce82f93e4434ffa5a0dfdf7cd6ff9b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Title: This Week in Rust 48
Date: 2014-05-11 21:58
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).

<!-- more -->

# What's cooking on master?

76 pull requests were merged this week.

## Breaking Changes

- A significant amount of functionality [has
  moved](https://github.com/mozilla/rust/pull/13901) from `libstd` to a new
  `libcore` crate, which is intended to be usable in a freestanding
  environment (it doesn't use any allocation etc). See the pull request for
  further details.
- All mentions of `~` outside of `~str` and `~[]` [have been
  removed from the language](https://github.com/mozilla/rust/pull/13958).
- `~[T]` [no longer implements
  `FromIterator`](https://github.com/mozilla/rust/pull/13963), and many APIs
  have been updated to use `Vec`.
- The `local_data` API [has been
  modernized](https://github.com/mozilla/rust/pull/13835) to use methods on
  keys, RAII, and removal of essentially unused features.
- Trait inheritence with incorrect use of lifetimes [has been
  fixed](https://github.com/mozilla/rust/pull/14055). See the second commit
  for a testcase and explanation.
- Cross-crate enum variant privacy [has been
  fixed](https://github.com/mozilla/rust/pull/14001). Previously, private
  variants were always usable without restriction.
- Format string parsing [has been moved outside of
  `std`](https://github.com/mozilla/rust/pull/13985).
- The `bump_box_refcount` function [has been
  removed](https://github.com/mozilla/rust/pull/14019).
- `unsafe extern fn` definitions [are now
  allowed](https://github.com/mozilla/rust/pull/14005), with a corresponding
  change in how that type is written (previously the parser accepted `extern
  unsafe fn()`).
- `bitflags!` [now allows setting attributes on the generated
  type](https://github.com/mozilla/rust/pull/13897), and `FilePermissions` has
  been ported to it.

## Other Changes

- `Box<T>` [is the new syntax for
  `~T`](https://github.com/mozilla/rust/pull/13904).
- Sockets [now have non-blocking
  IO](https://github.com/mozilla/rust/pull/13814)!
- `TcpStream` and `UnixStream` [have methods to cancel
  reads/writes](https://github.com/mozilla/rust/pull/13751).
- There is now limited support for [mixing `rlib`s and
  `dylib`s](https://github.com/mozilla/rust/pull/13892) when linking to
  dependencies.
- The `stats` crate [has been generalized to the `Float`
  trait](https://github.com/mozilla/rust/pull/13822).
- A `graphviz` crate [has been
  added](https://github.com/mozilla/rust/pull/13749) for generating `dot`
  files.
- Some missing cases in the `type_limits` lint [have been
  fixed](https://github.com/mozilla/rust/pull/13936).
- `box` [has been added](https://github.com/mozilla/rust/pull/13908) to the
  pattern grammar.
- An injection bug in rustdoc's web frontend [has been
  fixed](https://github.com/mozilla/rust/pull/13895).
- Use of non-existent method which has the same name as an existing static
  method [now has a note
  attached](https://github.com/mozilla/rust/pull/13685).

## New Contributors

- Aaron Raimist
- Ali Smesseim
- Dirk Leifeld
- James Laverack
- Lucas Dohmen
- Phil Ruffwind
- Tim Brooks

# Weekly Meeting

The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-05-06)
discussed many things. I think I'm going to stop including this section of
TWiR because the meeting notes are very well-kept (thanks Lars!) and there's
often too much to effectively summarize.

# RFCs

- [Remove `*mut T`, add `*const T`](https://github.com/rust-lang/rfcs/pull/68)
- [Add byte and byte string
  literals](https://github.com/rust-lang/rfcs/pull/69)
- [Allow blocks in constants](https://github.com/rust-lang/rfcs/pull/71)
- [Algebraic effect system](https://github.com/rust-lang/rfcs/pull/73)
- [Split Iterator into Iterator and
  FiniteIterator](https://github.com/rust-lang/rfcs/pull/74)

# Community Updates

- [Bay Area Rust, May 2014:
  Testing](https://air.mozilla.org/rust-meetup-may-2014/)
- [New meetup at Pittsburgh Code and
  Supply](http://www.reddit.com/r/rust/comments/253vxq/rust_lang_meetup_pittsburgh_code_supply/)
- [Rust for C++ programmers - part 5: borrowed
  references](http://featherweightmusings.blogspot.co.nz/2014/05/rust-for-c-programmers-part-5-borrowed.html)
- [Header compression library for
  HTTP/2](http://www.reddit.com/r/rust/comments/24unld/header_compression_library_for_http2_written_in/)
- [rust-graphics](http://www.reddit.com/r/rust/comments/259wwp/rustgraphics_how_rusts_type_system_might_improve/),
  how Rust's type system might improve graphics programming
- [Informal survey: Which is clearer, mutability or
  uniqueness?](http://www.reddit.com/r/rust/comments/2581s5/informal_survey_which_is_clearer_mutability_or/)
- [Teepee design: header
  representation](http://www.reddit.com/r/rust/comments/254q2o/teepee_design_header_representation/)
- [How to test Rust on
  travis-ci](http://bettong.net/2014/05/09/how-to-test-rust-on-travis-ci/)