summaryrefslogtreecommitdiffstats
path: root/content/2014-06-14-this-week-in-rust.markdown
blob: 2db610db2bb1890149a5b05cfd2401927df82b77 (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
124
125
126
127
128
129
Title: This Week in Rust 52
Date: 2014-06-14 23:29
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?

74 pull requests were merged in the last week.

## Breaking Changes

So just dumping the breaking change log raw didn't really work out last time.
The complete log is available
[here](https://gist.github.com/cmr/d0e6d145af65e6d74713), and you can view it
with `git log --grep 'breaking-change' --since 6/7/2014 --until 6/14/2014`.
I've chosen some particular breaking changes I think are more-breaking than
the others.

- `~[T]` [has been 100% removed from the
  language](https://github.com/mozilla/rust/pull/14703). To create a `Box<[T,
  ..N]>`, however, you temporarily need to do `box () ([1, 2, 3])`, rather
  than `box [1, 2, 3]`, which will work in the future.
- Patterns that shadow themselves [are no longer
  allowed](https://github.com/mozilla/rust/pull/14801), for example `let (a,
  a) = (1, 2);`
- Some features [have been
  removed](https://github.com/mozilla/rust/pull/14831) from `format!`, namely
  pluralization and select, and escaping them has changed somewhat to no
  longer use `\`.
- The ["stronger guarantees for mutable
  borrows"](http://smallcultfollowing.com/babysteps/blog/2014/02/25/rust-rfc-stronger-guarantees-for-mutable-borrows/)
  RFC [has been implemented](https://github.com/mozilla/rust/pull/14739).
- The `@`-syntax [has been removed
  entirely](https://github.com/mozilla/rust/pull/14835). Together with `~[T]`,
  this marks the end of the tyrannical rule of sigils!
- `transmute` [no longer casts](https://github.com/mozilla/rust/pull/14859)
  between types which have type parameters.

## Other Changes

- The [`PartialEq`
  docs](http://doc.rust-lang.org/std/cmp/trait.PartialEq.html) have been [revised for
  clarity and correctness](https://github.com/mozilla/rust/pull/14733).
- The identifier name lint [now gives
  suggestions](https://github.com/mozilla/rust/pull/14740) on what you could
  rename your identifier to.
- The loadable syntax extensions work [has been
  generalized](https://github.com/mozilla/rust/pull/14554) to more arbitrary
  compiler plugins.
- Function call overloading [is now
  implemented](https://github.com/mozilla/rust/pull/14590), as part of the
  unboxed closure work.
- Unused struct fields [are now
  detected](https://github.com/mozilla/rust/pull/14696) by the `dead_code`
  lint.
- The docs [are now built with relative
  links](https://github.com/mozilla/rust/pull/14777), letting local, off-line
  copies work as expected.
- `libsync` [is now underneath
  `libstd`](https://github.com/mozilla/rust/pull/14746).
- Debuginfo type identifiers [are now unique,
  cross-crate](https://github.com/mozilla/rust/pull/14819) fixing debuginfo
  with LTO.
- The results of compiler analysis [can now be dumped to
  CSV](https://github.com/mozilla/rust/pull/13222), which the [DXR
  tool](https://wiki.mozilla.org/DXR) will use.
- Rotates and byte swaps [are now
  exposed](https://github.com/mozilla/rust/pull/14866) as nice methods on the
  `Bitwise` trait.

## New Contributors

- Michael Reinhard
- Renato Riccieri Santos Zannon
- Renato Zannon
- Valentin Tsatskin
- Zach Pomerantz
- bachm
- theptrk

# New RFCs

- [Unboxed closures](https://github.com/rust-lang/rfcs/pull/114), the unboxed
  closures RFC to rule them all.
- [Removing integer inference
  fallback](https://github.com/rust-lang/rfcs/pull/115)
- [Feature gate import shadowing](https://github.com/rust-lang/rfcs/pull/116)
- [Rename `unsafe` to `trusted`](https://github.com/rust-lang/rfcs/pull/117)
- [Overloaded arithmetic and logical operators should take `self` and their
  arguments by value](https://github.com/rust-lang/rfcs/pull/118)
- [Add support to serialize::json for incrementally reading multiple JSON
  objects](https://github.com/rust-lang/rfcs/pull/119)
- [Reintroduce `do` keyword as sugar for nested match
  statements](https://github.com/rust-lang/rfcs/pull/120)

# Community Updates

- [Comparing k-NN in Rust](http://huonw.github.io/2014/06/10/knn-rust.html)
- [Error handling in Rust: a k-NN case
  study](http://huonw.github.io/2014/06/11/error-handling-in-rust-knn-case-study.html)
- [Los Angeles Rust
  meetup](http://www.reddit.com/r/rust/comments/27x6b6/los_angeles_rust_meetup/)
- [AnyMap](https://github.com/chris-morgan/anymap), "a safe and convenient
  store for one value of each type".
- [Rust By Example](http://rustbyexample.com/) now lets you execute code
  examples on-page.
- [Piston game engine progress
  update](http://www.reddit.com/r/rust/comments/286vfx/piston_game_engine_update_notice_on_progress/)
- [floor](http://cburgdorf.github.io/Floor/doc/floor/index.html), "a simple
  and lightweight foundation for web applications written in Rust".
- [jit.rs](http://tombebbington.github.io/blog/2014/06/15/rust-libjit-wrapper/),
  a libjit wrapper
- [stompers](https://github.com/mattyhall/stompers), a STOMP client
- [Brooklyn.rs](https://mail.mozilla.org/pipermail/rust-dev/2014-June/010232.html)
- [Rust nightlies archive](http://rustly.kokakiwi.net/)
- [Rusty Tetris](https://github.com/bachm/rusty-tetris), a tetris clone using
  Piston
- [Introduction to
  Rust](http://www.meetup.com/Pittsburgh-Code-Supply/events/184125612/), a
  talk Ben Striegel is giving in Pittsburgh.