summaryrefslogtreecommitdiffstats
path: root/content/2014-01-11-this-week-in-rust.markdown
blob: fb77a8e2757569cee6e614c0aafdd02fb1745692 (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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
Title: This Week in Rust 32
Date: 2014-01-11 16:23
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).

0.9 was released this week, bringing with it a restructuring of our
documentation and the usual influx of attention.

<!-- more -->

# What's cooking on master?

57 pull requests were merged this week.

## Breaking Changes

- Float literals are now [more
strict](https://github.com/mozilla/rust/pull/11480). Octal and hex float
literals are no longer allowed.
- A nasty soundness bug [reported on
reddit](http://www.reddit.com/r/rust/comments/1uxbgm/moving_ownership_via_borrowed_reference/)
[has been fixed](https://github.com/mozilla/rust/pull/11465).
- `print` and `println` [have been removed from the
prelude](https://github.com/mozilla/rust/pull/11416). Use the `print!` and
`println!` macros instead.
- `Rc` [now supports weak
pointers](https://github.com/mozilla/rust/pull/10926/files), and it no longer
requires the wrapped type to be Freeze or Send. That is, it no longer
statically avoids cycles using the type system. It was found to be too
restrictive. The only constructor is now `Rc::new`.
- The `eof` method on `Reader` [has been
removed](https://github.com/mozilla/rust/pull/11376), as only files really
know when they are at eof. It is now a method on the types it makes sense for
[such as `MemReader` and
`BufReader`](https://github.com/mozilla/rust/pull/11437).
- `std::num` is seeing some simplification. [Many traits have been merged into
`Real`](https://github.com/mozilla/rust/pull/11412).
- Similarly, [`ApproxEq` has been
removed](https://github.com/mozilla/rust/pull/11402).
- The `std::io::Decorator` trait [has been
removed](https://github.com/mozilla/rust/pull/11394).
- A nasty resolve bug [has been
fixed](https://github.com/mozilla/rust/pull/11370). Importing a trait made it
available to all child modules; now it is only available in the module that
imported it, as it should be.
- Some [method renaming](https://github.com/mozilla/rust/pull/10854) has been
done to `Option`. `map_default` is now `map_or` and `mutate_default` is now
`mutate_or_set`.

## Other Changes

- A [lint for unnecessary casts](https://github.com/mozilla/rust/pull/11329)
has been added. It is set to allow by default.
- [Mutable iterators](https://github.com/mozilla/rust/pull/11342) have been
added to `std::trie`.
- A bug in rustpkg preventing it from finding any static libraries, and
libnative, [has been fixed](https://github.com/mozilla/rust/pull/11338).
- `u64_from_be_bytes` [has seen some
optimization](https://github.com/mozilla/rust/pull/11448), it is 3-6x faster.
- `box` has been
[kinda-implemented](https://github.com/mozilla/rust/pull/11055). `box(GC)` and
`box(HEAP)` now work.
- Typed arenas [have been added](https://github.com/mozilla/rust/pull/11358).
They're really fast!
- `stderr`/`stdout` is now
[per-task](https://github.com/mozilla/rust/pull/11353), which will allow
capturing or redirecting a task's output.

## New Contributors

- Andrew Chin
- Clinton Ryan
- Derek Chiang
- Mick Koch
- Nick Cameron
- Niels langager Ellegaard
- Nif Ward
- Raphael Catolino
- Rich Lane
- Dzmitry Malyshau


# Weekly Meeting

The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-01-07)
discussed Windows XP support, bounded channels, the Rc changes, using guard
pages, loadable syntax extensions, and functions that fail.

# Quotes of the Week

"[I] find it easy to get lost in this file." -
[kud1ing](https://github.com/mozilla/rust/pull/11472/files#r8810362) on
`libc.rs`
- "A language is more than just semantics, syntax, and an implementation -
it's about an ecosystem and a community. Without that it dies." -
[bjz](https://botbot.me/mozilla/rust-internals/msg/9689869/)

# This Week in Servo
Servo is a web browser engine written in Rust and is one of the primary test
cases for the Rust language.

The Servo tree has been mostly frozen for a large part of this week, as the
nearly month-long Rust upgrade is finally getting close and we wanted to avoid
additional rebases. We did land 7 PRs, many with associated fixes, however.

## Notable additions
- Patrick Kim fixed anonymous boxes and images disappearing during line
breaking in [#1461](https://github.com/mozilla/servo/pull/1461) and
[#1463](https://github.com/mozilla/servo/pull/1463).
- Patrick Walton fixed a race issue with window sizes and script code in
[#1409](https://github.com/mozilla/servo/pull/1409).
- Jaeman Park landed CSS parsing and selector matching for pseudo element
:before and :after in [#1464](https://github.com/mozilla/servo/pull/1464).
- Bruno Abinder made some DOM additions in
[#1466](https://github.com/mozilla/servo/pull/1466) and
[#1472](https://github.com/mozilla/servo/pull/1472).

## Meetings
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-01-06), we
discussed the upcoming workweek, the Rust upgrade, ARM buildbots for Rust and
Servo, and some research we're doing into the breakdown of page load.

# Announcements, etc

- [Bay Area Rust Meetup:
1/28/2014](http://www.meetup.com/Rust-Bay-Area/events/153909222/)
- [The Rust language: memory, ownership and
lifetimes](http://www.youtube.com/watch?v=gfCtbGiHcg0),
Niko's presentation at Linux.conf.au
- [An appeal for correct, capable, future-proof math in nascent programming
languages](http://www.reddit.com/r/rust/comments/1uy7rt/an_appeal_for_correct_capable_futureproof_math_in/)
- [An in-progress redesign of the
website](http://www.reddit.com/r/rust/comments/1v10ac/thehydroimpulserustwebsite/)
- [Combining rust-http with route-recognizer.rs to create routable
HTTP](http://www.reddit.com/r/rust/comments/1v104e/combining_rusthttp_with_routerecognizerrs_to/)
- [A TOML configuration file parser](https://github.com/mneumann/rust-toml)
- [Mapping High-Level Constructs to LLVM
IR](http://llvm.lyngvig.org/Articles/Mapping-High-Level-Constructs-to-LLVM-IR),
a peek at what drives the underbelly of the compiler
- [Add garbage collector to
`std::gc`](https://github.com/mozilla/rust/pull/11399)
- [rust-workspace](https://github.com/HeroesGrave/rust-workspace), a simple
shell to make maintaining Rust projects easier
- [Semantic code browser for
Rust](http://www.reddit.com/r/rust/comments/1usupv/semantic_code_browser_for_rust/)
- [Rvalue Lifetimes in
Rust](http://smallcultfollowing.com/babysteps/blog/2014/01/09/rvalue-lifetimes-in-rust/)
- [Nobody Knows Rust - Steve Klabnik's slides](http://steveklabnik.github.io/nobody_knows_rust/#/)
- [0.9 Release
Announcement](https://mail.mozilla.org/pipermail/rust-dev/2014-January/007753.html)
- [A 3d-printable Rust
logo](https://github.com/cmr/rust-logo-3d/blob/master/rlogo.stl)