Initial commit

This commit is contained in:
Corey Richardson 2014-11-05 17:12:45 -05:00
commit b90d2b10b0
64 changed files with 8499 additions and 0 deletions

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
*.pyc
bin
lib
include
themes
output

BIN
cache/ArticlesGenerator-Readers vendored Normal file

Binary file not shown.

BIN
cache/PagesGenerator-Readers vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,119 @@
Title: This Week In Rust 1
Date: 2013-06-07 18:46
Tags: this-week-in-rust, rust, programming
Category: This Week in Rust
Hello and welcome to the first issue of *This Week In Rust*, a weekly overview
of Rust and its community. I'll be covering what's cooking in incoming,
meeting summaries, meetups, and anything else pertinent. Any ideas, email them
to me, <mailto:corey+rust@octayn.net>.
The Rust interns arrived this week and have got cracking right away. Big hello
to Aaron Todd, Ben Blum, and Michael Sullivan! We can look forward to work all
over the place, especially in the RT and debug-info.
<!-- more -->
# What's cooking in incoming?
There were 30 pull requests merged this week. A scattering of doc fixes and a
bunch of code cleanups and optimization work as usual. Total issue churn
(excludes pull requests) this week was +6.
## Notable additions, bugfixes, and cleanups
- Ben Striegel added the `as_c_str` string function as a method as part of the
overall methodization covered by [6045][is6045].
- James Miller landed a much better optimization pipeline in [6881][is6881],
fixing a bunch of nascent optimization problems, especially with inlining,
and also fixing an earlier (huge) regression (that he introduced,
admittedly).
- James also fixed [6977][is6977], which allowed nonsensical expressions like `[0,
..-1]`. Whoops!
- I introduced terminfo handling to `extra::term` in [6826][is6826], bringing
rustc's beautiful colors to a wider audience. Unfortunately, it isn't
complete yet and, most notably, does not handle `xterm-256color` correctly
yet.
- Daniel Micay landed jemalloc as the default allocator in the runtime,
leading to nice allocation performance boosts on all platforms, as well as
much improved multithreaded performance. It also has the benefit of
cross-platform tuning and instrumentation.
## Breaking changes
It would be silly not to mention these changes, even though they weren't
strictly this week:
- `libcore` was renamed to `libstd` and `libstd` was renamed to `libextra`, to
better reflect their purpose. Confusingly, the code in rustc still uses the
old names. Something to watch out for!
- All of the module reexports were removed from the prelude, so if you use,
for example, `io::foo`, `vec::foo`, etc, you will find yourself having to
add a lot of extra imports. `use std::*` to regain the old behavior,
more or less.
- Patrick fixed the unsafe checker to safe code can no longer call unsafe
methods.
This week:
- `pub impl` was removed by Patrick Walton as part of [6944][is6944]. What
this did was have all `fn`s in a `pub impl` be `pub` by default. Now, you
must explicitly specify `pub` on all `fn`s in the impl if you want them
public.
- Also in [6944][is6944], Patrick removed the ability to have multiple
patterns appear in "let" declarations. For example: `let a = 4, b = 2;`
becomes `let (a, b) = (4, 2);`
- Daniel renamed the `Ptr` trait to `RawPtr` in [6913][is6913]
- Daniel and Huon Wilson have been working on iterators a lot. In
[6999][is6999], they start removing the `vec::each_*` functions, as the new
iterator code in `std::iterator` is now mature enough for use.
# Meetings
There were two main meetings this week. Mostly discussion about DST, closures,
and the GC. Lots of issues and details remain to be worked out, I suspoect it
will still be a bit before anything final-looking comes up in a PR. See the
[meeting][mtg1] [notes][mtg2] for more details.
# Meetups
- Erick Tryzelaar has a meetup planned in Mountain View on Wednesday, June 12,
at 7pm. See the [ML thread][sanfran] for more details.
- Tim Chevalier will be giving a talk titled "Rust: A Friendly Introduction"
on Monday, June 17, 6-9pm in Portland. See [Calagator][rafi] for more details.
# Prominent blog posts and ML threads
- <https://mail.mozilla.org/pipermail/rust-dev/2013-June/004364.html>
- <http://blog.pnkfx.org/blog/2013/06/07/detective-work-on-rust-closures/>
- <http://smallcultfollowing.com/babysteps/blog/2013/06/03/more-on-fns/>
- <http://smallcultfollowing.com/babysteps/blog/2013/06/06/reducing-dst-annotation/>
- <http://pcwalton.github.io/blog/2013/06/02/removing-garbage-collection-from-the-rust-language/>
# Other announcements
- 10gen has some interns working on a MongoDB driver for Rust, which will be
very nice to have. Good luck to them!
- Brendan Zabarauskas has fixed `lmath`. It now works on incoming. Yay!
Brendan sent in a correction:
{% blockquote %}
Unfortunately whilst it builds on incoming, due to a bug you can't use it in
external crates. moonchrome and I am are working on fixing this but it will
require us to remove the trait heirachy and use macros to generate each type
(Vec3f, Vec3f32, ... etc.) individually instead. Integer and Boolean vector
types (present in GLSL) will also be removed.
{% endblockquote %}
[is6045]: https://github.com/mozilla/rust/issues/6045
[is6881]: https://github.com/mozilla/rust/pull/6881
[is6977]: https://github.com/mozilla/rust/issues/6977
[is6826]: https://github.com/mozilla/rust/pull/6826
[is6944]: https://github.com/mozilla/rust/pull/6944
[is6913]: https://github.com/mozilla/rust/pull/6913
[mtg1]: https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-06-04
[mtg2]: https://github.com/mozilla/rust/wiki/Meeting-2013-06-07
[rafi]: http://calagator.org/events/1250464376
[sanfran]: https://mail.mozilla.org/pipermail/rust-dev/2013-June/004356.html
[is6999]: https://github.com/mozilla/rust/pull/6999

View File

@ -0,0 +1,139 @@
Title: This Week In Rust 2
Date: 2013-06-15 22:00
Tags: this-week-in-rust, programming
Category: This Week in Rust
Hello and welcome to the second issue of *This Week In Rust*, a weekly overview
of Rust and its community. I'll be covering what's cooking in incoming,
meeting summaries, meetups, and anything else pertinent.
I've decided to stop using real names and use irc/github names, simply because
that is how I, and most everyone, interacts in the community.
<!-- more -->
# What's cooking in incoming?
There's been a lot of breakage on incoming this week, with jemalloc breaking
32bit cross-compilation as well as random segfaults and stack corruption of
unknown cause. Some heroics by the core devs have got it mostly cleaned up,
though the tree is still rather chaotic. Meanwhile a handful of performance
improvements have landed, and achricto rewrote `rusti`.
There were 17 pull requests merged this week. Total issue churn (excludes pull
requests) this week was +2 (this excludes the 38 pull requests that were
closed when incoming was killed).
## `incoming` branch annihilated
Goodbye `incoming`, hello `master`! This change, long in coming, unfortunately
closed all open PRs. Start doing your development against `master` rather than
incoming.
## Notable additions, bugfixes, and cleanups
There's a concerted effort to remove duplicate freestanding functions where
possible.
- In [6986][is6986] bjz and jensnockert have cleaned up the numeric code some
more, adding methods for existing things like `sin`, as well as adding a
bunch of interpolation stuff.
- steven_is_false added prototype dynamic library loading support in
[7027][is7027], which should remove a lot of pain for people looking for
easy dynamic loading. It currently doesn't work on Windows, so if you can
sling Windows code, help would be appreciated!
- In [7029][is7029] luqmana allows having multiple impl's add static methods,
which previously did not work.
- Eridius stepped up to [fix the terminfo code][tinfo], colors should be
arriving to more people soon.
- SiegeLord [improved the CSS][css] used by rustdoc with *huge* improvements.
- sully has gotten default methods working for the most part, he is still
testing cross-crate edge casses.
- vadimcn [has fixed debuginfo][debug], and supposedly the GSoC intern is
getting started on improving it next week.
- doener has got [some nice][inline] [performance][cache] PRs in place.
- aatch is working on [cleaning up trans][trans]. Huge thanks to him!
## Breaking changes
- dbaupp and strcat continue their cleanup of the standard library, removing
the ad-hoc iterator functions where `std::iterator` can replace them.
- All of the string functions that could be reasonably converted to methods
have been.
- If you're working in the stdlib, acrichto has toggled most of the lint
settings to "deny" for std/extra, so watch out.
# Meetings
The [Tuesday meeting][tues] talked about bblum's [Effect proposal][eff],
removing the master/incoming split, and "alloc expressions", a replacement for
@-sigils.
The consensus on the effect proposal is that it needs investigation and
wouldn't be landing in 1.0.
Discussion about master/incoming mostly centered on "master isn't always
green, how can we add better coverage to bors' tests?" Consensus seems to be
that removing incoming would be beneficial, but enabling more OS and valgrind
coverage on bors would harmfully impact development speed.
The proposed syntax for alloc expressions is `new (provider) expr`, with `new
expr` becoming the replacement for the current `~expr`. This would allow
custom smart pointers. pcwalton ended the meeting with a huge cliff hanger
{% blockquote %}
I've been meaning to talk a little bit today about simplifying the
mut-borrowing story in regards to this, we may be able to effect a large
simplification on the language
{% endblockquote %}
Personally, I think [kimundi's proposal][kim] has a lot of promise, and the
syntax is more pleasing to me. It wasn't brought up at the meeting, though.
# Meetups
- The Mountain View meetup was a great success. 18 showed up. erickt is
planning for another SF Bay area meetup in July. If you want to give a
presentation, send him your proposal and how long you need to put it
together.
- Tim Chevalier will be giving a talk titled "Rust: A Friendly Introduction"
on Monday, June 17, 6-9pm in Portland. See [Calagator][rafi] for more
details. This is a preview of a talk he will be giving at [Open Source
Bridge][osb], also in Portland.
# Notable discourse
- Still more discussion about [iterators][iter], this time focusing around
[changing the semantics][for] of the `for` loop.
- Some discussion about [list comprehensions][listcomp], including initial
proofs-of-concept.
- Graydon explains hashing and versioning
https://botbot.me/mozilla/rust/msg/3792753/
- Principal author of 0install evaluates rust among other languages as a
python replacement
http://roscidus.com/blog/blog/2013/06/09/choosing-a-python-replacement-for-0install/
- Niko thinks about parallelism
http://smallcultfollowing.com/babysteps/blog/2013/06/11/data-parallelism-in-rust/
- http://smallcultfollowing.com/babysteps/blog/2013/06/11/on-the-connection-between-memory-management-and-data-race-freedom/
# Other announcements
- bjz tells me lmath is *actually* fixed now, and is usable
[is6986]: https://github.com/mozilla/rust/pull/6986
[is7027]: https://github.com/mozilla/rust/pull/7027
[is7029]: https://github.com/mozilla/rust/pull/7029
[tues]: https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-06-11
[kim]: https://gist.github.com/Kimundi/5744578
[iter]: https://mail.mozilla.org/pipermail/rust-dev/2013-June/004364.html
[rafi]: http://calagator.org/events/1250464376
[for]: https://mail.mozilla.org/pipermail/rust-dev/2013-June/004465.html
[listcomp]: http://www.reddit.com/r/rust/comments/1gag3t/list_comprehensions_in_rust_iterator/
[css]: https://github.com/mozilla/rust/pull/7077
[eff]: https://github.com/mozilla/rust/wiki/Proposal-for-effects
[tinfo]: https://github.com/mozilla/rust/pull/7133
[osb]: http://opensourcebridge.org/sessions/970
[debug]: https://github.com/mozilla/rust/pull/7134
[inline]: https://github.com/mozilla/rust/pull/7154
[cache]: https://github.com/mozilla/rust/pull/7144
[trans]: https://github.com/mozilla/rust/pull/7124

View File

@ -0,0 +1,134 @@
Title: This Week in Rust 3
Date: 2013-06-22 05:21
Category: This Week in Rust
Hello and welcome to the third issue of *This Week in Rust*, a weekly overview
of Rust and its community.
It has come to my attention that Github does not categorize some
merged-by-bors pull requests as "merged" and instead categorizes it as
"closed". This skews the numbers and also the PRs that I looked through for
inclusion into twir. I'll no longer be including issue churn/PR numbers, and I
hope I didn't miss any import PRs in the last two issues.
<!-- more -->
# What's cooking in incoming?
The last of the tree breakage has been cleaned up. The mysterious stack
corruption was traced down by Blei to occur in jemalloc. It has been disabled
until the real cause of the error is found. A bunch more buildbot
configurations have been turned on for auto, to fend off more breakage. The
tree is open, and aatch got out a new snapshot!
Most of the work this week is cleanup and preparation for 0.7, but since the
tree has been closed (and the extra auto buildbots lengthen the time it takes
for a PR to be tested for the day it has been open), not much has landed these
past few days, but a bunch happened earlier this week.
## Notable additions, bugfixes, and cleanup
- doener made compiles faster by emitting less useless copies and allocations
in [7259](https://github.com/mozilla/rust/pull/7259)
- aatch landed [part 1](https://github.com/mozilla/rust/pull/7124) and [part
2](https://github.com/mozilla/rust/pull/7182) of his huge trans refactor
effort, which make trans faster and less terrible.
- sully got [default methods](https://github.com/mozilla/rust/pull/7203)
less broken
- yichoi landed a [bunch](https://github.com/mozilla/rust/pull/7128) of
Android fixes.
- vadimcn has [fixed debuginfo](https://github.com/mozilla/rust/pull/7134),
which is super amazing. This makes it a lot easier for the GSoC student (mw)
to get started.
- doener has [fixed](https://github.com/mozilla/rust/pull/7186) some
pathological behavior in how codegen creates cleanup blocks. This makes the
IR better, reducing compile time, and also allowing better optimization,
reducing binary size.
{% blockquote @dotdash https://github.com/mozilla/rust/pull/7259 %}
They reduce compile times by about 10% in total.
{% endblockquote %}
{% blockquote @dotdash https://github.com/mozilla/rust/pull/7186 %}
Reduces the size of librustc by about 5% and the time required to build
it by about 10%.
{% endblockquote %}
{% blockquote @dotdash https://github.com/mozilla/rust/pull/7154 %}
The resulting code for rustc is about 13% faster (measured up to and
including the "trans" pass) and the resulting librustc is about 5%
smaller.
{% endblockquote %}
## Breaking changes
strcat [continues](https://github.com/mozilla/rust/pull/7263)
[work](https://github.com/mozilla/rust/pull/7162) with iterators. The changes
that landed are vector cleanups. Probably most importantly, the `each` and
`eachi` methods are being removed. The `eachi` removal landed but the `each`
one broke bors, so it's currently in limbo (**UPDATE** 6/23/2013: it landed).
The current replacement is:
```
// each
for your_vec.iter().advance |element| {
...
}
// eachi
for your_vec.iter().enumerate().advance |(i, element)| {
...
}
```
Once the rest of the iterator work is hashed out and lands, it will just be
```
// each
for your_vec |element| {
...
}
// eachi
for your_vec.enumerate() |(i, element)| {
...
}
```
although the syntax might be slightly different (`for element in your_vec` is
my favorite proposal).
# Meetings
The [Tuesday
meeting's](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-06-18)
main topics were once fn's and how namespaces work. For once fn's, graydon
says "I'm concerned with adding new features and I want to see if we can live
without it, I understand it is common," not yet making a decision to include
them in the language.
# Meetups
- tjc's pre-talk and talk, "Rust: A Friendly Introduction" went very well. The
[slides](http://catamorphism.org/Writing/Rust-Tutorial-tjc.pdf) are up, and
a recording is coming soon (hopefuly). tjc says the slides aren't as
understanable without the audio of the talk.
- nmatsakis has expressed willingness/interest in a Boston meetup sometime. If
you're interested, contact him on IRC or the ML.
# Notable discourse and external projects
- [mmap and the Rust FFI](http://maniagnosis.crsr.net/2013/06/mmap-and-rust-foreign-function-interface.html)
(indutny is working on mman bindings in libc, for the record. will mention
in next week's twir when it lands)
- [code generation and rustc speed](https://mail.mozilla.org/pipermail/rust-dev/2013-June/004480.html)
- [Rust for game development?](http://www.reddit.com/r/rust/comments/1gs93k/rust_for_game_development/)
- [Feed us some low hanging fruit!](http://www.reddit.com/r/rust/comments/1grj61/feed_us_some_low_hanging_fruit/)
- [Paying Technical Debt in rustc](http://aatch.github.io/blog/2013/06/19/paying-technical-debt-in-rustc/)
- [What issues in Rust today effect (sic) you most?](http://www.reddit.com/r/rust/comments/1gpbcs/what_issues_in_rust_today_effect_you_most/)
- [rustdoc rewrite and redesign](https://mail.mozilla.org/pipermail/rust-dev/2013-June/004520.html)
- [rust-bench: a tool for profiling memory usage](http://www.reddit.com/r/rust/comments/1gmac5/linux_rustbench_a_tool_for_profiling_memory_usage/)
# Other announcements
- Michael Woerister (mw), the GSoC student working on debug info, has begun
work. His [project log](http://michaelwoerister.github.io/) will be updated
weekly. I'm looking forward to a much better debug experience.

View File

@ -0,0 +1,107 @@
Title: This Week in Rust 4
Date: 2013-06-29 12:26
Category: This Week in Rust
Hello and welcome to the fourth issue of *This Week in Rust*, a weekly overview of Rust and its community.
`0.7` is being cut soon (today, I think). There are preliminary release notes [on
GitHub](https://github.com/mozilla/rust/blob/master/RELEASES.txt). The tree has been quite calm, with regards to
breakage. Cycle time is still high, but at least when things land they don't break master.
<!-- more -->
# What's cooking on master?
Issue churn this week was -1. Yay! Issue churn this month was -47. 61 people pushed 1,080 commits, changing 2,117 files
and adding a total of 53347 lines. The top 10 committers were pcwalton, brson, dbaupp, strcat, bblum, nmatsakis,
acricto, Blei, me (cmr), and aatch.
Much of the work this week was cleanup or rebases of older PRs that just hadn't made it in yet.
## Notable additions, bugfixes, and cleanup
- Eridius has finished (I think!) the last bit of UNIX [terminal support](https://github.com/mozilla/rust/pull/7436),
adding fallback and smarter detection. It should work in 8-color terminals now too.
- pcwalton [rewrote each_path](https://github.com/mozilla/rust/pull/7451), with the goal of future performance
enhancements.
- tjc has done a [bunch](https://github.com/mozilla/rust/pull/7397) of
[rustpkg](https://github.com/mozilla/rust/pull/7403) work.
- aatch did some [trans cleanup](https://github.com/mozilla/rust/pull/7272).
- gifnksm added [`max_by` and `min_by`](https://github.com/mozilla/rust/pull/7414) methods to `IteratorUtil` for getting
the largest/smallest value in an iterator given a score function.
- brson got a fix that [releases large stacks](https://github.com/mozilla/rust/pull/7111) after they are used to lower
memory usage.
- mw has a bunch of [debuginfo](https://github.com/mozilla/rust/pull/7432) work, as well as [docs and
cleanup](https://github.com/mozilla/rust/pull/7255).
- Blei did an [intrinsic overhaul](https://github.com/mozilla/rust/pull/7254).
- acrichto implemented [`static mut`](https://github.com/mozilla/rust/pull/7291), for globals. Using them requires
unsafe code.
- DaGenix [cleaned up and extended](https://github.com/mozilla/rust/pull/7207) the SHA code.
- acrichto renamed `.rc` files to `.rs`. `.rc` is deprecated and functionally equivalent to `.rs`, all new code should
use it. He also [added](https://github.com/mozilla/rust/pull/7371) a `warnings` lint attribute for enabling/disabling
warnings in bulk.
- indutny added [`mman` (including `mmap`)](https://github.com/mozilla/rust/pull/7257) FFI.
- dbaupp found a [curious performance win](https://github.com/mozilla/rust/pull/7297) by changing some ordering around,
while also enabling conditionally defined macros and macro expansion to items with `#[cfg]` attributes.
- Luqman [fixed by-value self](https://github.com/mozilla/rust/pull/7410).
- acrichto expanded the `deriving(ToStr)` code to use `ToStr` on fields rather than using `fmt!("%?", x)`.
- Blei [fixed a lot of problems](https://github.com/mozilla/rust/pull/7214) with owned trait objects (`~Trait`).
- sully has [landed some default method fixes](https://github.com/mozilla/rust/pull/7471)
## Breaking Changes
- As usual, [a](https://github.com/mozilla/rust/pull/7274) [bunch](https://github.com/mozilla/rust/pull/7334)
[of](https://github.com/mozilla/rust/pull/7373) [iterator](https://github.com/mozilla/rust/pull/7319) work.
- pcwalton renamed Owned to Send and Const to Freeze, better reflecting their actual semantics.
- He also disallowed `mut` from distributing over bindings. For example, the following code no longer works: `let mut
(a, b) = (c, d)`.
- dbaupp [converted](https://github.com/mozilla/rust/pull/7430) many vector functions to methods. He has a [second
part](https://github.com/mozilla/rust/pull/7487) in line.
- Luqman renamed the `finalize` method in the `Drop` trait to `drop`.
## Other changes
bblum did some trait/fn/closure bounds
[here](https://github.com/mozilla/rust/pull/7314) and
[here](https://github.com/mozilla/rust/pull/7354), but I don't really
understand what they do or their significance. He said:
{% blockquote %}
it changes the way traits/closures and captured data fulfill kind bounds, so
you can restrict or loosen the requirements instead of having the fixed
defaults of "can only capture Send things in ~fn/~Trait"
one example is that you can add the extra requirement of Freeze, so you can
put existential data inside of ARCs
see https://github.com/mozilla/rust/blob/master/src/test/run-pass/trait-bounds-in-arc.rs
http://smallcultfollowing.com/babysteps/blog/2013/06/11/data-parallelism-in-rust/
is another, more complicated but less contrived, example for how they would be
useful
{% endblockquote %}
# Meetings
The [Tuesday meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-06-25)
mainly discussed `@mut` and iterators, as well as some minor 0.7 releng stuff.
I suggest reading the `@mut` discussion yourself, but essentially it revolves
around it not quite fitting into the language, and that it could be easily
punted to a library. The iterator discussion was not notable.
# Discussion + Blog posts
- [New container/iterator tutorial](http://static.rust-lang.org/doc/tutorial-container.html)
- ["Language support for external iterators"](http://thread.gmane.org/gmane.comp.lang.rust.devel/4528)
- ["Rust gets a lot of things right"](http://spin.atomicobject.com/2013/06/25/rust-language/)
- ["Planning a project in rust?"](http://www.reddit.com/r/rust/comments/1ha3yi/planning_a_project_in_rust/)
- ["Memory layout of types"](https://mail.mozilla.org/pipermail/rust-dev/2013-June/004572.html)
- [mw's second status report](http://michaelwoerister.github.io/2013/06/28/Status-Update-2.html)
# External projects
- QuickCheck for Rust.
- [GitHub](https://github.com/blake2-ppc/qc.rs)
- [Reddit discussion](http://www.reddit.com/r/rust/comments/1h0217/mockup_of_quickcheck/)
- RustGnuplot ([GitHub](https://github.com/SiegeLord/RustGnuplot))

View File

@ -0,0 +1,110 @@
Title: The State of Rust 0.7
Date: 2013-07-05 09:51
Category: Rust
Given the influx of newcomers from the 0.7 release, I thought it'd be a good
idea to summarize the condition of Rust, its libraries, and its documentation.
bstrie said it best I think, "basically, any question of the form 'is there a
reason for this stupid and terrible thing' is 'no, sorry, we're working on
it'&nbsp;".
<!-- more -->
# Iterators
External iterators are a main feature of the 0.7 release, and there is ongoing
work to remove all of the library features that use internal iterators. Most
of them are gone, and there are few uses of internal iterators. However, they
are clunky to use. The `for` loop semantics are going to change from internal
iteration to external iteration, but they are still internal iteration right
now, which means the `advance` adaptor is necessary for most uses of
iterators. Additionally, the `iter()` helper function is necessary to actually
return an iterator. This will be obviated by an `Iterable` trait that many
things will hopefully implement. Due to
[5898](https://github.com/mozilla/rust/issues/5898), many methods are oddly
named or have an underscore appended (ie, `transform` instead of `map`,
`position_` instead of `position`).
# IO
IO has been a bit of a losing proposition since at least 0.2. The interface is
very primitive and inefficient. It requires using `@Trait` objects (`@Reader`
/ `@Writer`). It's also very undocumented. But the situation isn't going to
improve much because all of that code is getting torn out when brson/the
interns finish their work on the new runtime. On the plus side, we'll have
shiny new IO when they're done! If you want to contribute, there's plenty of
work to be done in this area:
- [issue 6169](https://github.com/mozilla/rust/issues/6169)
- [issue 6850](https://github.com/mozilla/rust/issues/6850)
- [issue 4419](https://github.com/mozilla/rust/issues/4419)
- [brson's status report for June](https://mail.mozilla.org/pipermail/rust-dev/2013-May/004305.html)
# Compiler
The compiler is still buggy and inefficient. Lots of things work, but lots of
things don't. There's still some resolve bugs (the one mentioned above, as
well as some others, and perpetually poor error messages), default methods
don't work, debuginfo is incomplete, the compiler has quadratic codegen when
using `match`, so on and so forth. There's a lot of work to be done here but
it's not easy. I'm writing a series about the compiler that should help new
contributors get started and grok how it all fits together. The only thing
making Rust usable right now is LLVM's fantastic optimization. Our no-opt
builds run slower than our opt builds under Valgrind. Ponder that for a
minute.
# `rustpkg`
rustpkg is still heavily in-progress and unfinished. It's usable, but not
everything is implemented, and the documentation is incomplete. It's rather
unintuitive to use right now, but it does work! Read the
[manual](https://github.com/mozilla/rust/blob/master/doc/rustpkg.md) carefully
if you want to use it.
# Documentation
Documentation is poor. `rustdoc` is really bad, which doesn't help. I'm
working on a new rustdoc ([I log my progress
here](http://rustlog.octayn.net)), but it won't be ready for some weeks. Lots
of things are undocumented or near impossible to find because of how bad
`rustdoc` is. The tutorials need lots of work, and a guided tour of the
libraries would be nice, as well as a "Rust By Example," showing how to
accomplish common goals. These aren't really hard to do, it's just that nobody
has done them yet.
# Libraries
There are few robust libraries or bindings to libraries, for anything, besides
what is in std/extra. There's the stuff servo uses (glfw, skia, sdl), and an
opengl binding somewhere, but beyond that, you're on your own. The
[rust-bindgen](https://github.com/crabtw/rust-bindgen) tool can help with
wrapping a C library. There is no GUI library available yet, no real
networking. It's easy to wrap a C library, you just need to be careful with
your `unsafe` blocks. Once again, these things aren't hard, they just haven't
been done yet.
# The future
Basically everything is heavily WIP, but it's constantly improving. We always
need more contributors, ask in IRC if you're interested. Rust 0.7 is pre-alpha
quality, IMO. It would be silly to use Rust for something important, but don't
let that stop you from trying to do something ambitious. If you feel Rust is
still too young to get involved, but you want to track its progress, I write
[This Week in Rust](http://cmr.github.io/blog/categories/this-week-in-rust/),
which is an easy way to track our progress. 1.0 is tentatively planned for
first-quarter 2014, last I heard, and I don't think that is out of reach. 1.0
corresponds to "maturity #2" at the absolute minimum (the maturiy levels are
listed [as milestones](https://github.com/mozilla/rust/issues/milestones)).
But don't be discouraged. It was far worse before! Rust is in a good position,
it's just not quite all there yet. This post may seem pessimistic, but the
progress Rust has made is astonishing. Here's to a wonderful 0.8!
# Some links
- [Rust subreddit](http://www.reddit.com/r/rust/)
- [Mailing list](https://mail.mozilla.org/listinfo/rust-dev)
- [Mailing list archives](http://blog.gmane.org/gmane.comp.lang.rust.devel)
- [IRC
Channel](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust)
(it's `#rust` on irc.mozilla.org)

View File

@ -0,0 +1,114 @@
Title: This Week in Rust 5
Date: 2013-07-06 15:45
Category: This Week in Rust
Hello and welcome to the fifth issue of *This Week in Rust*, a weekly overview
of Rust and its community.
`0.7` was released this week. Hello to the newcomers! I've also decided to put
breaking changes first. Feel free to skip the rest, it's relatively
unimportant.
<!-- more -->
# Newcomers
There's already a lot of traffic from Rust newbies, so you get your own
section! Welcome to Rust. I wrote [The State of Rust
0.7](http://cmr.github.io/blog/2013/07/05/the-state-of-rust/) especially for
newcomers, so you should read that. Jump on IRC if you have any questions or
need help. We're a quite friendly bunch, and we usually don't bite.
# What's cooking on master?
Issue churn this week was +12. 35 PRs were merged, total PR churn was -8.
There continues to be a lot more cleanup than breaking changes, which is
encouraging! As I understand it, graydon wants to focus this release cycle on
cleanup, rather than language features. Hopefully the compiler can get into a
much better state.
## Breaking changes
- dbaupp [continues](https://github.com/mozilla/rust/pull/7487) to
[slaughter](https://github.com/mozilla/rust/pull/7566) the free functions in
`std::vec` where methods can replace them.
- He also [added a lint for lowercase
statics](https://github.com/mozilla/rust/pull/7523), which is enabled by
default because of an astoundingly poor error message.
- Seldaek [moved a bunch of iter
stuff](https://github.com/mozilla/rust/pull/7474) to `extra`.
## Notable compiler additions, bugfixes, and cleanup
- doener [removed an extra layer of
indirection](https://github.com/mozilla/rust/pull/7452) that method calls incurred.
- Blei [fixed a codegen problem](https://github.com/mozilla/rust/pull/7457)
with structs containing `f32` when used with FFI.
- I [propagated the great renaming](https://github.com/mozilla/rust/pull/7468)
throughout the rest of the codebase (besides compiletest, apparently).
- acrichto [rewrote some str code](https://github.com/mozilla/rust/pull/7465)
to avoid allocations.
- strcat is [removing](https://github.com/mozilla/rust/pull/7495) headers
from exchange allocs (see also
[#7605](https://github.com/mozilla/rust/pull/7605) and
[#7521](https://github.com/mozilla/rust/pull/7521)). They are entirely
unused, they just need to be removed and the fallout fixed throughout the
compiler.
- yjh0502 [fixed a bug](https://github.com/mozilla/rust/pull/7443) that
allowed duplicate struct fields (like `struct Foo {a: uint, a: uint}`)
- acrichto [turned on](https://github.com/mozilla/rust/pull/7409) LLVM
threading.
- Luqman [changed configure](https://github.com/mozilla/rust/pull/7498) to
require either wget *or* curl.
- Dretch [improved the error
message](https://github.com/mozilla/rust/pull/7510) for implementing unknown
traits to mention the trait name.
- sankha93 [improved the error
message](https://github.com/mozilla/rust/pull/7531) for trying to capture
environment in a plain `fn`.
- bblum [improved the error mssage](https://github.com/mozilla/rust/pull/7534)
for using a moved value, it now gives better suggestions than just `copy`.
- sanxiyn [fixed a bug](https://github.com/mozilla/rust/pull/7543) where
eligible newtype structs weren't marked as an immediate value (and thus not
passed in registers when they could have been).
- Luqman [paved the way](https://github.com/mozilla/rust/pull/7547) for 64-bit
windows support.
- jensnockert [added byte swapping
intrinsics](https://github.com/mozilla/rust/pull/7194) that specialize
per-platform, avoiding unnecessary operations.
- jld [removed an unused function](https://github.com/mozilla/rust/pull/7554)
- sully [fixed more default method bugs](https://github.com/mozilla/rust/pull/7545).
## Notable library additions, bugfixes, and cleanup
- sfackler [fixed up some
documentation](https://github.com/mozilla/rust/pull/7549) related to the
drop/finalize renaming.
- acrichto [fixed a correctness
bug](https://github.com/mozilla/rust/pull/7530) in TreeMap's `Ord`
implementation.
- sfackler [much improved](https://github.com/mozilla/rust/pull/7513) and
genericized the base64 handling.
- graydon did a [bunch of cleanup](https://github.com/mozilla/rust/pull/7518)
in `extra::stats`.
- Seldaek [fixed a patological case with
`str::each_split_within`](https://github.com/mozilla/rust/pull/7475).
# Meetings
The [Tuesday meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-07-02)
featured more discussion about `@` and `@mut`, that was honestly over my head
(as most of the type system stuff is). If someone wants to write some more
here, feel free to email me (<corey+blog@octayn.net>) a paragraph or two. You
will get attribution, of course.
# Discussion + Blog posts
- [The State of Rust 0.7](http://cmr.github.io/blog/2013/07/05/the-state-of-rust/)
- ["Rust switches to external iteration" (D forums)](http://forum.dlang.org/thread/kr2vpp$2jmf$1@digitalmars.com)
- [Segmented stacks](https://mail.mozilla.org/pipermail/rust-dev/2013-July/004686.html)
- [Is Rust Slim Yet? (Is Rust Fast Yet v2)](http://huonw.github.io/isrustfastyet/mem/)
- [Rust Design Patterns](http://joshldavis.com/rust-design-patterns/)
- [Program to an Interface, Fool](http://joshldavis.com/2013/07/01/program-to-an-interface-fool/)
- [Would You Bet $100,000,000 on [Rust]?](http://www.reddit.com/r/rust/comments/1hg88c/i_think_i_would_take_that_for_rust_when_its_done/)
- [mw's third status report](http://michaelwoerister.github.io/2013/06/28/Status-Update-3.html)

View File

@ -0,0 +1,162 @@
Title: This Week in Rust 6
Date: 2013-07-13 16:07
Category: This Week in Rust
Hello and welcome to the sixth issue of *This Week in Rust*, a weekly overview
of Rust and its community.
<!-- more -->
# What's cooking on master?
Issue churn this week was -17! A total of 63 PRs were merged this week, twice
as many as last week. Not bad!
## Breaking changes
- The [task local storage (TLS)
API](https://github.com/mozilla/rust/pull/7677) was cleaned up (there's
still [one PR](https://github.com/mozilla/rust/pull/7751) in the queue that
finishes it up).
- [DList was modernized](https://github.com/mozilla/rust/pull/7652).
- [`extra::json` now uses `Iterator<char>` rather than a
`@Reader`](https://github.com/mozilla/rust/pull/7704)
- [Various free-standing functions in f32 etc were
removed](https://github.com/mozilla/rust/pull/7117)
- [ref bindings in irrefutable patterns has been tightened
up](https://github.com/mozilla/rust/pull/7262). This potentially fixes *and
breaks* code. It's breaking because the compiler now rejects incorrect
programs that it did not before.
- [str no longer encodes invalid
utf-8](https://github.com/mozilla/rust/pull/7612).
- [`extra::rope` was removed](https://github.com/mozilla/rust/pull/7629)
- [`extra::net_ip` and so on were
removed](https://github.com/mozilla/rust/pull/7594). They were redundant
names for `extra::net::ip` and such
- [`Iterator::size_hint`'s lower bound is no longer an
Option](https://github.com/mozilla/rust/pull/7570)
## Notable compiler additions, bugfixes, and cleanup
- [Unnecessary basic blocks were
removed](https://github.com/mozilla/rust/pull/7763). This makes for much
easier to read unoptimized IR.
- [Use of `*int`/`*uint` is now properly
warned](https://github.com/mozilla/rust/pull/7734) in FFI functions.
- [More default method fixes](https://github.com/mozilla/rust/pull/7725).
- A [needless copy](https://github.com/mozilla/rust/pull/7717) was removed
from immediate values (I'm pretty sure LLVM optimized it away when
optimizations were on, not positive).
- A [lint for overqualified names](https://github.com/mozilla/rust/pull/7706)
was added.
- [SIMD arithmetic](https://github.com/mozilla/rust/pull/7705) was
implemented.
- A [graph abstraction and CFG](https://github.com/mozilla/rust/pull/7688) was
introduced, to unify how the various pieces of the compiler use graphs.
- [The maximum lifetime of stack
closures](https://github.com/mozilla/rust/pull/7455) is now constrained. Not
quite sure what that means, but it fixes a segfault.
- [repr doesn't infinite loop](https://github.com/mozilla/rust/pull/7683) on
zero-sized structs (ie, unit structs).
- [Type parameter pretty printing](https://github.com/mozilla/rust/pull/7698)
was fixed, it now prints the type name rather than `'a` and `'b` and
soforth.
- [`mut` in default method arguments is now
allowed](https://github.com/mozilla/rust/pull/7631).
- [IR for calls with immediate return
values](https://github.com/mozilla/rust/pull/7645) was improved.
- [Exchange allocation headers (ie, the headers on `~T`) were
removed](https://github.com/mozilla/rust/pull/7605). This was a heroic
effort by strcat and Luqman.
- [`-Z trans-stats` now reports perf-function
statistics](https://github.com/mozilla/rust/pull/7456)
- [Scopes were decoupled from LLVM basic
blocks](https://github.com/mozilla/rust/pull/7636), improving unoptimized
builds, and allowing more things in optimized builds to be inlined.
- [An infinite loop when recursively including
modules](https://github.com/mozilla/rust/pull/7585) was fixed.
- An [ICE involving struct-like enum
variants](https://github.com/mozilla/rust/pull/7557) was fixed.
- The buildsystem [cleans up old
libraries](https://github.com/mozilla/rust/pull/7637) when it needs to.
- [A bunch of managed boxes](https://github.com/mozilla/rust/pull/7615) were
removed from the AST.
## Notable library additions, bugfixes, and cleanup
- [`print!` and `println!` macros](https://github.com/mozilla/rust/pull/7775)
were added (though [#7779](https://github.com/mozilla/rust/issues/7779)
renames them).
- [Ord now uses default methods](https://github.com/mozilla/rust/pull/7765),
allowing you to get default implementations for everything but `lt`.
- [`extra::Bitv` now takes `&[bool]` rather than
`~[uint]`](https://github.com/mozilla/rust/pull/7730).
- [x64 now uses large stacks (4 MiB) by
default](https://github.com/mozilla/rust/pull/7728).
- [`is_utf8` is now 22% faster](https://github.com/mozilla/rust/pull/7696)
- [Metrics reporting and
ratcheting](https://github.com/mozilla/rust/pull/7623) was added to the test
harness.
- A [DoubleEndedIterator](https://github.com/mozilla/rust/pull/7707) was
added.
- A [`mut_split` method was added](https://github.com/mozilla/rust/pull/7691)
to partition a `&mut [T]` into two pieces.
- We [now have pointer arithmetic](https://github.com/mozilla/rust/pull/7631).
- A [month's work of runtime work](https://github.com/mozilla/rust/pull/7265)
landed.
- [A safe, cross-platform `mmap`
wrapper](https://github.com/mozilla/rust/pull/7528) was added.
- [SmallIntMap and SmallIntSet have external
iterators](https://github.com/mozilla/rust/pull/7614).
- [JSON parsing got 93% faster](https://github.com/mozilla/rust/pull/7608)
- [Deque](https://github.com/mozilla/rust/pull/7562) got a good cleanup and
speedup.
- [vec now implements `pop_opt` and `shift_opt`
methods](https://github.com/mozilla/rust/pull/7602).
- A [`peek_` adaptor](https://github.com/mozilla/rust/pull/7604) was added,
which calls a closure on ever item before returning it. Mostly useful for
debugging your iterators.
## Documentation etc
- [vim](https://github.com/mozilla/rust/pull/7742)
[improvements](https://github.com/mozilla/rust/pull/7665) landed.
- [`po4a` support for translation](https://github.com/mozilla/rust/pull/7641)
was added.
- [`libc::c_void` is better
documented](https://github.com/mozilla/rust/pull/7690).
- [Man pages](https://github.com/mozilla/rust/pull/7632) for all the tools are
now included.
- The [iterator tutorial](https://github.com/mozilla/rust/pull/7736) was
extended.
# Meetings
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-07-09) was
all about split stacks and FFI. It's complex and above my ability to
summarize, but from what I can tell no real consensus was made. But, it's the
best enumeration of all the various issues surrounding split stacks that I've
seen.
# Discussion + Blog posts
From now on I'm going to just link to the reddit thread if there is one, as it
often has additional comments or insights.
- [A simple, self-contained example of using a shared
library](https://gist.github.com/jmptable/5980297)
- [Experimental Actor
Library (reddit)](http://www.reddit.com/r/rust/comments/1i3c15/experimental_actor_library_in_rust/)
- [Herb Sutter describes Rust
(reddit)](http://www.reddit.com/r/rust/comments/1i30sw/herb_sutter_describes_rust_c_questions_and/)
- [Philosophy and "for" loops
(reddit)](http://www.reddit.com/r/rust/comments/1i2y9e/philosophy_and_for_loops_more_from_go_and_rust/)
- [Reddit thread about the weekly
meeting](http://www.reddit.com/r/rust/comments/1hy6l9/meetingweekly20130709_split_stacks_ffi/)
- [BZIP2 bindings
(reddit)](http://www.reddit.com/r/rust/comments/1hxp2s/little_bzip2_binding_library_as_well_as_a_bigger/)
- [Proposal for an additional use case of the "in" keyword besides for loops
(reddit)](http://www.reddit.com/r/rust/comments/1hsqf5/proposal_for_an_additional_use_case_of_the_in/)
- [Technical Q&A on Servo
(reddit)](http://www.reddit.com/r/rust/comments/1i6ykh/technical_qa_on_servo/)

View File

@ -0,0 +1,142 @@
Title: This Week in Rust 7
Date: 2013-07-21 09:36
Category: This Week in Rust
Hello and welcome to the seventh issue of *This Week in Rust*, a weekly
overview of Rust and its community. Things are calming down quite a bit, in
that nothing extraordinarily exciting is happening. Lots of great work is
being done everywhere, and good progress is being made in both bugfixes and
cleanup. It has been a good week!
<!-- more -->
# What's cooking on master?
Issue churn this week was -15. A total of 59 PRs were merged.
## Breaking changes
- **[The semantics of `range_rev` have
changed](https://github.com/mozilla/rust/pull/7684). This will break your
code without warning.** It is now, to use [interval
notation](https://en.wikipedia.org/wiki/Interval_%28mathematics%29#Notations_for_intervals),
`(hi, lo]` rather than `[hi, lo)`.
- `pub extern` and `priv extern` [have been
removed](https://github.com/mozilla/rust/pull/7896) from the language. This
matches the previous similar change to `impl`. Place the visibility
qualifier (`pub`/`priv`) on each item in the `extern` block instead.
- `&T` (besides `&'static T`) is [no longer allowed in
`@T`](https://github.com/mozilla/rust/pull/7894).
- The `ThreadPerCore` spawn mode [has been
removed](https://github.com/mozilla/rust/pull/7856), as it doesn't make
sense with the new scheduler.
- The `consume` methods of the hash containers [has been replaced with an
external iterator](https://github.com/mozilla/rust/pull/7833). The method
name is the same, though.
- Moved values can [no longer be captured
twice](https://github.com/mozilla/rust/pull/7849). This was a blatant
soundness issue.
- The `swap_unwrap` method of Option has been [renamed to
`take_unwrap`](https://github.com/mozilla/rust/pull/7831).
- `debug!` statements [generate no
code](https://github.com/mozilla/rust/pull/7822) unless you pass `--cfg
debug` to `rustc`. This should help keep code size down and make your
programs a (tiny bit) faster. Now you don't have to feel bad about having
`debug!` in hot code.
- The `mutate_values` method of HashMap [has been
removed](https://github.com/mozilla/rust/pull/7815).
## Notable library additions, bugfixes, and cleanup
- An iterator adaptor was added that [endlessly repeats the iterator it is
called on](https://github.com/mozilla/rust/pull/7882).
- Generated test runners [now have a
`-h`/`--help`](https://github.com/mozilla/rust/pull/7840) option.
- Metric capturing + racheting [has been
added](https://github.com/mozilla/rust/pull/7829) for benchmarks.
- `local_data` [now has a
`get_mut`](https://github.com/mozilla/rust/pull/7841) function.
- `extra::semver` [has been updated to SemVer
2.0.0](https://github.com/mozilla/rust/pull/7726).
- Consuming iterators [have been
added](https://github.com/mozilla/rust/pull/7806) for the hash structures.
- `extra::ringbuf` [now implements
DoubleEndedIterator](https://github.com/mozilla/rust/pull/7808).
- `Eq` [now has a default implementation of
`ne`](https://github.com/mozilla/rust/pull/7799).
- `extra::term` [now knows how to handle more
attributes](https://github.com/mozilla/rust/pull/7716).
- More containers [implement
FromIter](https://github.com/mozilla/rust/pull/7788). This means you can use
`.collect()` to gather the elements from an iterator into those containers.
- [Task killing, failure, and exit code
propagation](https://github.com/mozilla/rust/pull/7858) in the new runtime
has been implemented.
## Notable compiler additions, bugfixes, and cleanup
- `syntax::attr` [has been
modernized](https://github.com/mozilla/rust/pull/7902).
- [Tons of debuginfo work](https://github.com/mozilla/rust/pull/7710) from mw
this week!
- Trait data structures [have been cleaned
up](https://github.com/mozilla/rust/pull/7886), as well as a default method
fix.
- Intrinsics [now have much better
codegen](https://github.com/mozilla/rust/pull/7851).
- A `no_implicit_prelude` attribute [has been
added](https://github.com/mozilla/rust/pull/7844), which prevents prelude
injection in the module heirarchy starting at the item which that attribute
is added to.
- C-style enum variants are [now
allowed](https://github.com/mozilla/rust/pull/7827) in `[T, ..n]`
expressions.
- All language items are [now
optional](https://github.com/mozilla/rust/pull/7828). The compiler emits an
error if a language item is used but not provided.
- The removal of `spanned<T>` [has
begun](https://github.com/mozilla/rust/pull/7826).
- Headers [have been removed](https://github.com/mozilla/rust/pull/7816) for
`~str` and `~[T]` where `T` is unmanaged.
## Documentation, tools, and other stuff
- rustpkg [now works when you don't give it a package
ID](https://github.com/mozilla/rust/pull/7419). It builds/installs/cleans
the package in the current directory, *iff* the current directory is in a
rustpkg workspace.
- `--quiet` is [no longer passed](https://github.com/mozilla/rust/pull/7847)
to git during submodule operations, so you can see the progress of the huge
LLVM download.
- Documentation of the [lint-controlling
attributes](https://github.com/mozilla/rust/pull/7823) was added.
- rustpkg [now handles cloning from local git
repos](https://github.com/mozilla/rust/pull/7681).
- The GtkSourceView highlighting file [was
improved](https://github.com/mozilla/rust/pull/7795).
# Meetings
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-07-16)
discussed nothing at all of importance.
# Discussion + Blog posts
- [A pure-Rust memory allocator
(malloc)](http://www.reddit.com/r/rust/comments/1ibd48/proofofconcept_pure_rust_malloc_implementation/)
- [mw's fourth weekly
update](http://michaelwoerister.github.io/2013/07/12/Status-Update-4.html).
- [mw's fifth weekly
update](http://michaelwoerister.github.io/2013/07/20/Status-Update-5.html)
- [Discussion and slides from Niko's presentation at the Northeastern
University Programming Language
Seminar](http://www.reddit.com/r/rust/comments/1imeac/guaranteeing_memory_safety_in_rust_niko_matsakis/)
- [A nightly Ubuntu
PPA](http://thread.gmane.org/gmane.comp.lang.rust.devel/4829)
- [SIMD
discussion](http://www.reddit.com/r/rust/comments/1igvye/vision_for_rust_simd/)
- [Rust on bare metal
ARM](https://mail.mozilla.org/pipermail/rust-dev/2013-July/004841.html)
- [dherman's OSCON
presentation](http://www.oscon.com/oscon2013/public/schedule/detail/28741)

View File

@ -0,0 +1,138 @@
Title: Last Week in Rust 8
Date: 2013-07-29 06:55
Category: This Week in Rust
Hello and welcome to the eighth issue of *This Week in Rust*. Due to me being
busy and forgetful over the weekend, this is a special issue, *Last Week in
Rust*.
<!-- more -->
# What's cooking on `master`?
Issue churn continues to be negative, -15 this week. A total of 63 PRs were
merged.
## Breaking Changes
There were impressively few breaking changes last week.
- **You now need to pass `--cfg debug` to `rustc` to emit debug logging.**
- [**`mod.rs` is now "blessed".**](https://github.com/mozilla/rust/pull/7926).
When loading `mod foo;`, rustc will now look for `foo.rs`, then
`foo/mod.rs`, and will generate an error when both are present.
- [A bunch of `str` functions](https://github.com/mozilla/rust/pull/7996) were
renamed or shuffled around to be more consistent.
- [`SmallIntSet` was removed](https://github.com/mozilla/rust/pull/7934) in
favor for the more efficient, equivalent `BitvSet`.
- [`Bitv` and `Bitvset` have switched to external
iterators](https://github.com/mozilla/rust/pull/7703).
- [`extra::net` and a bunch of other obsolete
features](https://github.com/mozilla/rust/pull/7883) have been removed.
## Notable library additions, bugfixes, and cleanup
- Various [TCP/UDP additions](https://github.com/mozilla/rust/pull/8040) have
been made in the new rt.
- Some more [atomic operations](https://github.com/mozilla/rust/pull/8039)
have been added.
- A [`chain_mut_ref` method](https://github.com/mozilla/rust/pull/7931) was
added to `Option`.
- [Random access iterators](https://github.com/mozilla/rust/pull/7982) have
been implemented.
- Some missing [memory orderings on atomic
types](https://github.com/mozilla/rust/pull/7993) have been added.
- [workcache has seen a bunch of
attention](https://github.com/mozilla/rust/pull/7885).
- [DList has seen some more cleanup
too](https://github.com/mozilla/rust/pull/7944).
- [Timers have been added to the new
rt](https://github.com/mozilla/rust/pull/7916).
- [Vectors now implement `slice_from` and
`slice_to`](https://github.com/mozilla/rust/pull/7943).
## Notable compiler additions, bugfixes, and cleanup
- [debuginfo for destructured locals and function
args](https://github.com/mozilla/rust/pull/8045) is now implemented.
- [Raw representations are now
consolidated](https://github.com/mozilla/rust/pull/7986).
- [Impossible branches on
constants](https://github.com/mozilla/rust/pull/8041) are now omitted.
- [It is now possible to link against crates with
`#[no_std]`](https://github.com/mozilla/rust/pull/7924).
- [There is now a warning when matching against
NaN](https://github.com/mozilla/rust/pull/8029), since it is impossible to
match against NaN (NaN != NaN).
- A lot of [default method and trait inheritance
bugs](https://github.com/mozilla/rust/pull/8015) have been fixed.
- [`uint` enum discriminants are now
allowed](https://github.com/mozilla/rust/pull/8000).
- The [section placement of static and fn items is now
configurable](https://github.com/mozilla/rust/pull/7958).
- Some [trans naming modernization has
occured](https://github.com/mozilla/rust/pull/7848).
- Some unnecessary branches and blocks [have been
removed](https://github.com/mozilla/rust/pull/7941), resulting in a 10%
speedup of unoptimized rustc.
## Documentation, tools, and other stuff
- [Some benchmarks](https://github.com/mozilla/rust/pull/7912), and [some more
benchmarks](https://github.com/mozilla/rust/pull/7980).
- Crnobog has [fixed](https://github.com/mozilla/rust/pull/8001)
[some](https://github.com/mozilla/rust/pull/7979) Windows testsuite issues.
- [`Makefile` dependencies](https://github.com/mozilla/rust/pull/7820) have
been fixed. `rustc` will never be invoked without its dependencies being
built.
- [`rust-mode` has been rewritten](https://github.com/mozilla/rust/pull/8031).
- [There are some build system changes surrounding the `--cfg debug`
changes](https://github.com/mozilla/rust/pull/8020).
# Meetings
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-07-23) was
quite productive. A quick summary:
- Graydon wants to investigate using the Memory Pool System as the Rust GC,
rather than a bespoke one. The [MPS](http://www.ravenbrook.com/project/mps/) is
a very mature and robust memory management library.
- The buildbots now collect and report some metrics as JSON. Take a poke in
`http://static.rust-lang.org/build-metrics/<git-sha1>/<builder>/<slave>/<metricsfile>.json`
if you're interested.
- pcwalton proposes allowing `Self` in impls, like in trait definitions.
- There was some discussion of destructors taking `self` by value.
- There was a proposal to remove `*mut`, but it can be useful. There was no
consensus.
- There was also some discussion on closures and mutable captures. I don't
really have enough context to understand the conversation, something to do
with "thunks".
- Removing `&const` was discussed as well. The "plan is that we add a lint
flag but document it as a reserved word", as it doesn't really seem to be
useful.
# Discussion + Blog posts
- [Iterator Blocks for
Rust](http://michaelwoerister.github.io/2013/07/26/Iterator-Blocks.html)
- [RFC: Removing
`*T`](http://www.reddit.com/r/rust/comments/1j5vbn/rustdev_rfc_removing_t/)
- [dherman's OSCON
slides](https://speakerdeck.com/dherman/rust-low-level-programming-without-the-segfaults)
- [Mozilla is hiring a Rust research
engineer](https://careers.mozilla.org/en-US/position/oKiEXfwn)
- [An alpha release of the MongoDB
Driver](http://blog.mongodb.org/post/56426792420/introducing-the-mongodb-driver-for-the-rust-programming)
- [A fairly useless benchmark of random number
generation](https://togototo.wordpress.com/2013/07/23/benchmarking-level-generation-go-rust-haskell-and-d/)
# Projects
- [color-rs: A library that provides types and conversions for working with
various color formats.](https://github.com/bjz/color-rs)
- [grease-bench: a runtimeless
benchmarker](https://github.com/Aatch/grease-bench)
- [rustfind, a "jump to definition"
tool](https://github.com/dobkeratops/rustfind)
- [RustyXML, a pure-Rust XML parser](https://github.com/Florob/RustyXML)

View File

@ -0,0 +1,181 @@
Title: This Week in Rust 9
Date: 2013-08-04 18:40
Category: This Week in Rust
Hello and welcome to the ninth issue of *This Week in Rust*. This week brings
the new `for` loop, which is very exciting, as well as a bunch of runtime
changes and cleanup.
<!-- more -->
# What's cooking on `master`?
Issue churn was +4 this week. A total of 63 PRs were merged (again).
## Breaking Changes
- **The `for` loop now uses external iterators.** This means any code written
to use the old internal iterator protocol will no longer work. See the
[iterator tutorial](http://static.rust-lang.org/doc/tutorial-container.html)
for more information on how to use it. Related pull requests:
[#8141](https://github.com/mozilla/rust/pull/8141),
[#8184](https://github.com/mozilla/rust/pull/8184),
[#8190](https://github.com/mozilla/rust/pull/8190),
[#8244](https://github.com/mozilla/rust/pull/8244). A few uses now
require `do` rather than `for` because they cannot/have not been
implemented in terms of external iterators.
- `unsafe` is [no longer allowed](https://github.com/mozilla/rust/pull/8235)
for functions in `extern` blocks: they are all unsafe.
- The [`extra::dbg` module](https://github.com/mozilla/rust/pull/8175) has
been removed.
- `uint::range` and all its friends have been replaced with an [external
iterator](https://github.com/mozilla/rust/pull/8216), that is in the
prelude. Code like the following now works:
```
for x in range(0, 10) {
println(x.to_str());
}
```
- The pipes compiler (the thing driving `proto!`) [has been
removed](https://github.com/mozilla/rust/pull/8170), as it saw limited
use, was very old, and was a significant maintenance burden.
- `PortSet` [has been removed](https://github.com/mozilla/rust/pull/8164) from
std, as the new scheduler does not support it.
- A bunch of old task APIs [have been
removed](https://github.com/mozilla/rust/pull/8139), aslo in preparation for
the new schduler.
- `is_utf8` now [rejects overlong
encodings](https://github.com/mozilla/rust/pull/8133).
- The iterator adaptors [no longer have the Iterator
suffix](https://github.com/mozilla/rust/pull/8090), same with [str and vec
iterators](https://github.com/mozilla/rust/pull/8095) as well.
## newrt changes
A bunch of newrt things landed this week, so it gets its own section.
- Some [bugs preventing the arc and sync tests from
passing](https://github.com/mozilla/rust/pull/8234) have been fixed.
- The new scheduler now supports [the `SingleThreaded` spawn
mode](https://github.com/mozilla/rust/pull/8221).
- A bunch of work with task killing [has
landed](https://github.com/mozilla/rust/pull/8195).
- Some [major TLS changes](https://github.com/mozilla/rust/pull/8116) also
landed.
- Tasks can [now be named](https://github.com/mozilla/rust/pull/8158).
- [`select` on newrt pipes](https://github.com/mozilla/rust/pull/8008) has
been implemented.
## Notable library additions, bugfixes, and cleanup
- `Map::contains_key` is [now a default
method](https://github.com/mozilla/rust/pull/8246) implemented in terms of
`Map::find`
- A `dynamic_lib` segfault [has been
fixed](https://github.com/mozilla/rust/pull/8219).
- A keyed `HashMap` constructor is [now
exposed](https://github.com/mozilla/rust/pull/8186) for runtimeless programs
that want to use it.
- The `Str` trait now has an [`into_owned`
method](https://github.com/mozilla/rust/pull/8204) to avoid copies when you
already have a `~str`.
- A bunch of [SHA1 and SHA2
cleanup/optimizations](https://github.com/mozilla/rust/pull/8174) landed. I
hear that the speed is almost optimal, only a few cycles/byte short of
Intel's optimized implementation.
- Errno coverage has been [significantly expanded for
Linux](https://github.com/mozilla/rust/pull/8193). I added all of the ones
that were missing, at least the ones that were present on my system.
- `assert!()` without a message [now does less
allocation](https://github.com/mozilla/rust/pull/8150).
- '\' is [no longer treated as a path
separater](https://github.com/mozilla/rust/pull/8138) on POSIX system.
- `getopt`'s `opts_str` [has been corrected to use more than just the first
element of the vector](https://github.com/mozilla/rust/pull/8135).
- Some more methods [were added](https://github.com/mozilla/rust/pull/8115) in
`std::num`.
- An iterator over the offsets of each character in a string [was
added](https://github.com/mozilla/rust/pull/8082).
- A bunch of `RandomAccessIterator` implementations [have been
added](https://github.com/mozilla/rust/pull/8120).
- `Clone` and `DeepClone` are [now
implemented](https://github.com/mozilla/rust/pull/8109) for `extern "Rust"
fn`.
## Notable compiler additions, bugfixes, and cleanup
- A `cfg!` syntax extension [has been
added](https://github.com/mozilla/rust/pull/8188) for conditionally running
code based on crate configuration, similar to what `#[cfg]` does for
conditional compilation. It expands into a true/false constant, so LLVM
should optimize out the dead branches.
- Some more codegen tests [have been
added](https://github.com/mozilla/rust/pull/8165).
- `copy` [has been removed as a
keyword](https://github.com/mozilla/rust/pull/8162).
- Static struct initializers [can now contain
`..base`](https://github.com/mozilla/rust/pull/8091) for functional update.
- Take glue [has been unified](https://github.com/mozilla/rust/pull/8146) for
unique pointer type.
- Pointer arithmetic is [now implemented with
GEP](https://github.com/mozilla/rust/pull/8121) rather than casting to int
and back to the pointer.
- Some more AST types [were
renamed](https://github.com/mozilla/rust/pull/8107).
- Cross-crate conditions [now
work](https://github.com/mozilla/rust/pull/8185).
## Documentation, tools, and other stuff
- LLVM assertions [can now be
disabled](https://github.com/mozilla/rust/pull/8147) with a configure
option.
- Benchmarking can [now be
disabled](https://github.com/mozilla/rust/pull/8111) by passing `NO_BENCH=1`
to make.
- `NO_REBUILD` [no longer requires a
re-boostrap](https://github.com/mozilla/rust/pull/8110), which should make
debug cycles on libstd much shorter.
- `vec` [now has module
documentation](https://github.com/mozilla/rust/pull/7223).
- rustpkg [now handles tags](https://github.com/mozilla/rust/pull/8032), and
not just version numbers, in the package ID.
# Meetings
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-07-30) this
week was quite meaty. I'm not going to try to summarize it, as it seems no
real decisions were made.
# Discussion + Blog posts
- [Visibility scopes in Rust Debug
Info](http://michaelwoerister.github.io/2013/08/03/visibility-scopes.html).
- [Architecting Servo: Pipelines and
Parallelism](https://air.mozilla.org/2013-intern-kuehn/), a talk by Tim
Kuehn.
- [Runtimeless
sprocketnes](http://www.reddit.com/r/rust/comments/1jo431/runtimeless_sprocketnes/).
- [Porting machine learning algorithms to
Rust](http://www.reddit.com/r/rust/comments/1joy7f/porting_machine_learning_algorithms_to_rust/).
- [RFC: Overloadable dereference
operator](https://mail.mozilla.org/pipermail/rust-dev/2013-July/005039.html).
# External projects
- [RustGnuplot](https://github.com/SiegeLord/RustGnuplot) was updated to
latest Rust.
- A [protobuf implementation](https://github.com/stepancheg/rust-protobuf) has
been started.
- [rustsqlite](https://github.com/linuxfood/rustsqlite) has
been updated to latest Rust.
- A [library for HTML escaping](https://github.com/veddan/rust-htmlescape) has
been created.
- A [library for procedurally generating
noise](https://github.com/bjz/noise-rs) has been created.
- A [pure-Rust implementation of
Keccak](https://github.com/MarkJr94/rust-keccak) has been created.
- [rust-zmq](https://github.com/erickt/rust-zmq) has been updated to latest
Rust, as well as cleaner error/constant interface.
- [q3](https://github.com/Jeaye/q3) now does multithreaded rendering.

View File

@ -0,0 +1,112 @@
Title: This Week in Rust 10
Date: 2013-08-10 21:39
Category: This Week in Rust
Hello and welcome to the tenth issue of *This Week in Rust*. This week marks
the enabling of the new runtime written entirely in Rust. A lot happens every
week, so I'm going to start omitting PRs that I deem of lesser importance.
This process is entirely arbitrary, don't feel hurt if I exclude your PR :).
<!-- more -->
# What's cooking on `master`?
Issue churn was -12 this week. A total of 70 PRs were merged.
[The new runtime has been enabled by
default](https://github.com/mozilla/rust/pull/8358). This is the culmination
of a lot of work by brson and the rt interns (toddaaro, bblum, and ecr being
the ones I know of). It's written entirely in Rust, and lives in `std::rt`.
Additionally, the [old C++ runtime has been
removed](https://github.com/mozilla/rust/pull/8387).
## Breaking Changes
- [**Trailing nulls have been removed from all string
types.**](https://github.com/mozilla/rust/pull/8296). This will break your
FFI code in subtle and mysterious ways, if you didn't explicitly use the
`as_c_str` methods. FFI code using the new `str::c_str` code will be more
robust, as it forbids interior nulls, and ensures that a trailing null
always exists. The replacement for `str.as_c_str` is
`str.to_c_str().as_slice()`, from what I can tell.
- [The `priv` keyword is no longer allowed where it has no
meaning](https://github.com/cmr/rust/commit/e99eff172a11816f335153147dd0800fc4877bee).
- [`iter` and `iter_err` in Result have been replaced with external
iterators](https://github.com/mozilla/rust/pull/8265).
- [The `get` method of `Option`, `Either`, and `Result` has been removed in
favor of `unwrap`](https://github.com/mozilla/rust/pull/8288). They both did
the same thing, which was useless duplication.
- [`std::gc` and `std::stackwalk`](https://github.com/mozilla/rust/pull/8218)
have been removed, as they are obsolete with the new runtime.
- [The transitionary `foreach` has been
removed](https://github.com/mozilla/rust/pull/8264).
## Notable library additions, bugfixes, and cleanup
- [Some redundant `Ord` methods were removed from
impls](https://github.com/mozilla/rust/pull/8357) where the default methods
sufficed.
- [FromStr for IpAddr and
SocketAddr](https://github.com/mozilla/rust/pull/8336) is implemented.
- [Work steealing is implemented for the newrt
scheduler](https://github.com/mozilla/rust/pull/8356).
- [A frequency counting function has been added to
`extra::stat`](https://github.com/mozilla/rust/pull/8320).
- [Saturating math](https://github.com/mozilla/rust/pull/8323) is now
implemented. I knew this as "clamping": it is arithmetic that clamps results
into a specific interval.
- [A hexadecimal encoding module](https://github.com/mozilla/rust/pull/8287)
has been added to `extra`.
- [`EnumSet` has been moved into `extra`, it previously existed as a utility
in `rustc`](https://github.com/mozilla/rust/pull/8054)
- [`str::is_utf8` has seen some more
optimization](https://github.com/mozilla/rust/pull/8237).
## Notable compiler additions, bugfixes, and cleanup
- [Initial support for the new formatting
code](https://github.com/mozilla/rust/pull/8245) has been added.
- [A `no_main` attribute has been
added](https://github.com/mozilla/rust/pull/8279), to omit the Rust entry
point entirely.
- [Vanilla Linux on ARM](https://github.com/mozilla/rust/pull/8220) is now
supported.
- [Extra copies of rvalues ](https://github.com/mozilla/rust/pull/8262) are no
longer omitted.
- [Some cross-arch bugs with node hash
metadata](https://github.com/mozilla/rust/pull/8361) have been fixed.
- [A soundness bug in struct matching has been
fixed](https://github.com/mozilla/rust/pull/8350).
- [An `option_env!` syntax extension has been
added](https://github.com/mozilla/rust/pull/8362) for compile-time inclusion
of environment variables that may or may not be present.
- [`extern mod a = "b/c/d"` has been
implemented](https://github.com/mozilla/rust/pull/8176), paving the way for
more rustpkg awesomeness.
# Meetings
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-08-06) seems
to have been a bit under-attended. SIMD, ARM, trailing nulls, order of `mod`
and `use`, and the condition system were all briefly discussed..
# Discussion + Blog posts
- ["A Work-stealing Runtime for
Rust"](https://air.mozilla.org/2013-intern-todd/), toddaaro's intern
presentation.
- ["Iterator Blocks for Rust - Feature
Survey"](http://michaelwoerister.github.io/2013/08/10/iterator-blocks-features.html)
# External projects
- [Galvanized: a simple JIT VM written in Rust, using
LibJIT](http://www.reddit.com/r/rust/comments/1k43px/a_simple_jit_vm_written_using_rust_and_libjit/)
- [Q3 has a new
logger](https://github.com/Jeaye/q3/commit/f4c82ce9c276327cababdb6650038e2c1d62f2d5).
I think it's nicer than the built-in one!
- [rust-protobuf: a protobuf implementation generating rust code, written in
rust](https://github.com/stepancheg/rust-protobuf).
- [Servo: almost passing acid1
!](https://twitter.com/metajack/status/364571230331875331/photo/1)

View File

@ -0,0 +1,125 @@
Title: This Week in Rust 11
Date: 2013-08-19 00:33
Category: This Week in Rust
Hello and welcome to the 11th edition of `This Week in Rust`! I'm starting uni
this week, so if you notice I'm not quite as omnipresent and omniprescient as
usual, that'd be why. **Please** [send me an email](mailto:corey@octayn.net)
if you would like your pull request, project, or blog post mentioned. I would
hate to overlook something cool or important.
<!-- more -->
The Mozilla Intern talks happened this past week or so. The ones I know about
relating to Rust are:
- [Default Methods in Rust
(sully)](https://air.mozilla.org/intern-presentation-sullivan/)
- [Types of Types in Rust
(bblum)](https://air.mozilla.org/ben-blum-from-the-research-team-presents-types-of-types-in-rust/)
- [A Work-stealing Runtime for Rust
(toddaaro)](https://air.mozilla.org/2013-intern-todd/)
- [A Forest of Quadtrees: The Graphics of
Servo](https://air.mozilla.org/eston-schweickart-from-the-research-team-presents-a-forest-of-quadtrees-the-graphics-of-servo/)
- [Layout in Servo: Parallel and Rustic Tree Traversals
(eatkinson)](https://air.mozilla.org/2013-intern-presentations-august-13/)
- [Architecting Servo: Pipelines and Parallelism
(tikue)](https://air.mozilla.org/2013-intern-kuehn/)
Congratulations to them all. The interns did a ton of great work over the
summer.
# What's cooking on master?
There were only 46 PRs merged this week. I don't quite know why that number is
so low this week. It certainly wasn't for lack of PRs: the queue has been
constantly backlogged. Issue churn was -26, yay!
## Breaking Changes
- [Some functions in Result and Either were replaced to work with external
iterators](https://github.com/mozilla/rust/pull/8526)
- [The `priv` and `pub` visibility modifiers are now forbidden on contexts
where they have no meaning](https://github.com/mozilla/rust/pull/8423). For
example, marking a struct field `pub`, or a module `priv`. The compiler
errors for this are quite informative, and the conversion is purely
mechanical.
- [`to_c_str` now raises a condition if the string contains interior `NUL`s,
as it is impossible to create a valid C string with interior
`NUL`s](https://github.com/mozilla/rust/pull/8532).
## Library improvments, bugfixes, and cleanup
- [`ifmt!`, the new formatter, has been
finished](https://github.com/mozilla/rust/pull/8446). Yay!
- [`extra::stats::write_boxplot` now works with negative or zero sample
values](https://github.com/mozilla/rust/pull/8453).
- [Some missing pieces in libstd have been filled
in](https://github.com/mozilla/rust/pull/8452).
- [A `sample` method has been added to `RngUtil`, for resevior
sampling](https://github.com/mozilla/rust/pull/8491).
## Compiler improvements, bugfixes, and cleanup
- [A ton of work was done on a new
visitor](https://github.com/mozilla/rust/pull/8527). This is the first of a
series of five.
- [Vector repeat exprs (`[0, ..16]`) are now allowed in
statics](https://github.com/mozilla/rust/pull/8483).
- [A hint has been added for incorrect use of static
methods](https://github.com/mozilla/rust/pull/8477).
- [Trait object coercion to `&Trait` has been fixed to handle freezing and
reborrowing more correctly](https://github.com/mozilla/rust/pull/8497).
- [Debuginfo of lexical scopes and variable shadowing has been massively
improved](https://github.com/mozilla/rust/pull/8329).
- [A `--target-cpu` flag has been added to select the target CPU, rather than
always using "generic"](https://github.com/mozilla/rust/pull/8410).
- [Support for owned and borrowed trait objects has been made better
added](https://github.com/mozilla/rust/pull/8455).
- [An `address_insignificant` attribute has been
added](https://github.com/mozilla/rust/pull/8421). LLVM will do merging of
statics marked with that attribute.
- [Intrinsics for checked overflow on add, sub, and mul have been
added](https://github.com/mozilla/rust/pull/8408).
## Tools, documentation, etc
- [The tutorial was translated into
Japanese](https://github.com/mozilla/rust/pull/8469). I think this is the
first translation of anything, so it's a pretty big milestone I think.
# Meeting
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-08-13)
discussed turning jemalloc back on, default arguments, and method invocation
ordering. It also discussed the new IO code and stage0 stdtest.
# Notable discourse
- [Phantom Types in
Rust](http://bluishcoder.co.nz/2013/08/15/phantom_types_in_rust.html)
- [RFC: Runtimeless
libstd](http://www.reddit.com/r/rust/comments/1k6hua/rustdev_rfc_runtimeless_libstd/)
# External projects
- [Bindings to elasticsearch](https://github.com/erickt/rust-elasticsearch)
- [zeromq bindings have been updated](https://github.com/erickt/rust-zmq)
- [A spellchecker for Rust code, written in Rust](https://github.com/huonw/spellck)
- [rust-encoding: character encoding support for
Rust](http://www.reddit.com/r/rust/comments/1kd8ah/rustencoding_character_encoding_support_for_rust/)
- [A simple vocabulary
trainer](http://www.reddit.com/r/rust/comments/1kctjn/my_first_rust_program_vocabulary_trainer/)
- [`rustdoc_ng`: 95%
done](http://www.reddit.com/r/rust/comments/1k7mfn/rustdev_rustdoc_ng_95_done/)
- [Some pages as rendered by
Servo](http://www.reddit.com/r/rust/comments/1k5kqx/some_pages_in_servo_as_of_20130810/)
- [d3cap: a libpcap-based network activity
visualizer](https://github.com/jfager/d3cap)
- [postgres bindings](https://github.com/sfackler/rust-postgres)
- [RemoteJoy: a program for remotely viewing the screen of your PlayStation
Portable](https://gist.github.com/luqmana/6264106).
([screnshot](http://i.imgur.com/9Kda25J.jpg))
- [The new OpenGL loader is working, pending the function pointer
fix](https://github.com/bjz/gl-rs)

View File

@ -0,0 +1,105 @@
Title: This Week in Rust 12
Date: 2013-08-25 12:54
Category: This Week in Rust
Hello and welcome to the 12th issue of *This Week in Rust*. Sorry for the
brevity, though most weeks are probably going to be like this, as I've started
uni and have much less free time than in the summer.
<!-- more -->
# What's cooking in master?
A whopping 71 pull requests were merged this week, and issue churn remains
negative at -32.
## Breaking changes
- [**`yield` is now reserved as a
keyword**](https://github.com/mozilla/rust/pull/8560), with the hope of
maybe using it for generators.
- [The type of `extern fn foo` is now `extern "C" fn`, rather than
`*u8`](https://github.com/mozilla/rust/pull/8666).
- [Some free functions in `extra::json` were turned into associated functions
on the Json enum](https://github.com/mozilla/rust/pull/8679).
- [`XorShiftRng::new()` now uses a random
seed](https://github.com/mozilla/rust/pull/8558). This is only breaking if
you were depending on that constant seed, which you shouldn't have.
## Library changes
- [`extra::getopts` aligns based on codepoint count and not byte
count](https://github.com/mozilla/rust/pull/8710), as a step towards more
correct unicode handling.
- [`fprintf` has been added, as well as some `ifmt`
cleanup](https://github.com/mozilla/rust/pull/8637).
[The new runtime has seen a lot of
optimization](https://github.com/mozilla/rust/pull/8740).
- [File IO has been added to the new
runtime](https://github.com/mozilla/rust/pull/8655).
- [Some parsing errors related to ports have been fixed in
`extra::url`](https://github.com/mozilla/rust/pull/8616).
- [CharIterator has seen some optimization too, with reverse iterators being
much closer in performance to forward iterators
now](https://github.com/mozilla/rust/pull/8590).
- [sysconf names have been added for
android](https://github.com/mozilla/rust/pull/8602).
- [The new runtime now has threadsafe
IO](https://github.com/mozilla/rust/pull/8631).
- [A callback optimization has sped up message passing benchmarks to the tune
of 40%](https://github.com/mozilla/rust/pull/8566).
- [jemalloc is back](https://github.com/mozilla/rust/pull/8584).
## Compiler changes
- [gnueabihf actually uses hard floats
now](https://github.com/mozilla/rust/pull/8736).
- [Frame pointer elimination is no longer
disabled](https://github.com/mozilla/rust/pull/8695).
- [Some debuginfo fixes landed](https://github.com/mozilla/rust/pull/8684).
Supposedly, libstd can now be compiled with `-Z debug-info`. Yay!
- [Stack unwinding on 32-bit windows now
works](https://github.com/mozilla/rust/pull/8596). This is a major step
forward for Windows support, I'm very excited to see it land.
- [A handful of default method bugs have been
fixed](https://github.com/mozilla/rust/pull/8659).
- [Inheriting from kinds now sorta
works](https://github.com/mozilla/rust/pull/8562), you can do `trait Foo:
Freeze`, for example.
- [Supertrait methods can now be used from a trait
object](https://github.com/mozilla/rust/pull/8519).
- The rest of pnkfelix's visitor trait rewrite series landed.
[2](https://github.com/mozilla/rust/pull/8539),
[3](https://github.com/mozilla/rust/pull/8619),
[4](https://github.com/mozilla/rust/pull/8623), and
[5](https://github.com/mozilla/rust/pull/8638).
- [Foreign function wrappers have been
removed](https://github.com/mozilla/rust/pull/8535).
- [LLVM has been updated](https://github.com/mozilla/rust/pull/8328).
## Docs etc
- [A new condition tutorial has been
added](https://github.com/mozilla/rust/pull/8563).
- [Some docs for trait bounds have been
added](https://github.com/mozilla/rust/pull/8725).
# Meeting
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-08-20)
discussed cycle time and how to fix it.
# Projects and discussion
- [gl-rs](https://github.com/bjz/gl-rs) is now ready for use, since the
foreign function wrappers have been removed!
- [msgpack-rust](https://github.com/omasanori/msgpack-rust) has been created.
It ties into `extra::serialize`.
- [A template for Arduino Due
projects](https://github.com/jensnockert/dueboot).
- [Parallel cross-language level generation
benchmarks](http://www.reddit.com/r/rust/comments/1kxz7y/benchmarks_round_two_parallel_go_rust_d_scala_and/).
- [A Week with
Rust](http://www.reddit.com/r/rust/comments/1ktjrw/a_week_with_mozillas_rust/).

View File

@ -0,0 +1,73 @@
Title: This Week in Rust 13
Date: 2013-08-31 19:10
Category: This Week in Rust
Hello and welcome to the lucky 13th issue of *This Week in Rust*. Graydon has
stepped down as project lead. It seems to be a bit ambiguous whether he'll
still be working on the project. Brian (brson) will be taking over as lead.
<!-- more -->
# What's cooking in master?
## Breaking Changes
- [Some functions have been removed from
`std::str`](https://github.com/mozilla/rust/pull/8857).
- [The unit test framework now uses RUST_TEST_TASKS instead of
RUST_THREADS](https://github.com/mozilla/rust/pull/8823).
- [`typeof` is now a reserved
keyword](https://github.com/mozilla/rust/pull/8718).
- [`offset_inbounds` has been
removed](https://github.com/mozilla/rust/pull/8807).
- [Some edge cases with writing to a borrowed `&mut` have been
closed](https://github.com/mozilla/rust/pull/8797), rejecting more incorrect
programs.
- [Option no longer implements
Add](https://github.com/mozilla/rust/pull/8772).
- [Some pass handling stuff has
changed](https://github.com/mozilla/rust/pull/8700).
- [Enum descriminants are now always
u64](https://github.com/mozilla/rust/pull/8744).
## Other Changes
- [String byte conversion functions which return an Option have been
added](https://github.com/mozilla/rust/pull/8750).
- [The main tutorial links to the condition and error handling
tutorials](https://github.com/mozilla/rust/pull/8764).
- [A trait for default initialization has been
added](https://github.com/mozilla/rust/pull/8438).
- [debuginfo tests have been enabled on Windows, and debuginfo generation
works on Windows!](https://github.com/mozilla/rust/pull/8757).
- [A better, more complete module tutorial has been
written](https://github.com/mozilla/rust/pull/8777).
- [Some fixes to repr (the code that powers `%?` in fmt) have been
made](https://github.com/mozilla/rust/pull/8771).
- [`rustpkg build` with no arguments now behaves a bit
differently](https://github.com/mozilla/rust/pull/8697).
- [`std::run` has been reimplemented on top of
libuv](https://github.com/mozilla/rust/pull/8645).
- [Frame pointer elimination has been
re-disabled](https://github.com/mozilla/rust/pull/8838).
- [LLVM has been updated, giving us mingw-w64
support](https://github.com/mozilla/rust/pull/8840).
- [Unit tests have been enabled on
Windows](https://github.com/mozilla/rust/pull/8819).
- [Some compile speedups landed](https://github.com/mozilla/rust/pull/8802).
# Meeting
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-08-27)
discussed rustpkg's timeline, extern fns, and LLVM asserts.
# Projects, discussion, and announcements
- Jeaye says that anyone having problems with the q3 repo should re-clone. If
that doesn't fix it, pop into IRC: #q3 on irc.freenode.net.
- ["Making rustpkg work"](http://tim.dreamwidth.org/1820526.html)
- ["nphysics: a 2d and 3d rigid body physics engine for
Rust"](http://www.reddit.com/r/rust/comments/1lai9u/nphysics_a_2d_and_3d_rigid_body_physics_engine/)
- ["First university computer science class taught in
Rust"](http://www.reddit.com/r/rust/comments/1l8hd4/first_university_computer_science_class_taught/)

View File

@ -0,0 +1,79 @@
Title: This Week in Rust 14
Date: 2013-09-07 18:30
Category: This Week in Rust
Welcome to another *This Week in Rust*.
<!-- more -->
# What's cooking in master?
65 pull requests were merged this week, and bors has had some idle time when
there wasn't anything approved in the queue.
## Breaking changes
- `std::os::glob` has been replaced with a [pure Rust
version](https://github.com/mozilla/rust/pull/8914), for cross-platform and
compatability reasons.
- `std::str::from_bytes` has been
[renamed](https://github.com/mozilla/rust/pull/8997) to
`std::str::from_utf8`, to be explicit about what it accepts.
- Casting to bool with `as` is [no longer
allowed](https://github.com/mozilla/rust/pull/8980), and surrogate
characters are no longer allowed in strings.
- char is [no longer](https://github.com/mozilla/rust/pull/8974) treated as an
integer type (meaning it can't be casted to/from them), which removes the
ability for safe code to create invalid characters.
- Opening a listening socket and actually listening on it [have been
split](https://github.com/mozilla/rust/pull/8954). If you're jiggy with the
jive, listen and accept are now separate operations. (*ed*: this used to say
bind and accept wereseparate; thanks to ecr for the correction.)
## Additions
- `let` var hygiene has [landed](https://github.com/mozilla/rust/pull/9026).
I'm sure this has cool implications, but I don't really know what they are.
- An [`export_name` attribute](https://github.com/mozilla/rust/pull/8903) has
been added to control what symbol name something is exported as (similar to
`no_mangle`).
- An `ExactSize` trait [has been
added](https://github.com/mozilla/rust/pull/8884) to mark an iterator that
always accurately reports its size in the `size_hint` method.
- `ToStr` has been [implemented](https://github.com/mozilla/rust/pull/8960)
for char and Ascii.
- Safe accessors of `MutexArc` [have been
implemented](https://github.com/mozilla/rust/pull/8966)
- A bytes iterator [has been added](https://github.com/mozilla/rust/pull/8935)
for newrt readers.
- Stream is [automatically
implemented](https://github.com/mozilla/rust/pull/8984) for types which
implement Reader and Writer from newrt.
- An `unreachable` macro [has been
added](https://github.com/mozilla/rust/pull/8992) for better error reporting
than a function could do.
- newrt [can now do](https://github.com/mozilla/rust/pull/9000) simple DNS
resolution.
- strptime/strftime [now support](https://github.com/mozilla/rust/pull/9016)
fractional seconds, out to tenths of a nanosecond.
## Changes etc
- Name mangling [has been
improved](https://github.com/mozilla/rust/pull/8875).
- `rust_log.cpp` [has been
converted](https://github.com/mozilla/rust/pull/8880) into pure Rust.
- Debuginfo [now does closure
capture](https://github.com/mozilla/rust/pull/8855) and very large structs.
- A [bunch](https://github.com/mozilla/rust/pull/8947)
[of](https://github.com/mozilla/rust/pull/8927)
[repr](https://github.com/mozilla/rust/pull/8928) improvements landed.
# Meeting
There was no meteting this week listed on the wiki or that I saw.
# Projects
- [rust-nanomsg](https://github.com/glycerine/rust-nanomsg) - bindings to the
nanomsg library.

View File

@ -0,0 +1,78 @@
Title: This Week in Rust 15
Date: 2013-09-15 17:59
Category: This Week in Rust
Hello and welcome to another issue of *This Week in Rust*. We're gearing up
for the 0.8 release in 2-3 weeks. It looks like it's going to be a really
solid release. I'll write another `State of Rust`, hopefully before it is
released.
<!-- more -->
# What's cooking in master?
68 PRs were merged this week.
## Breaking changes
- `std::iterator` [has been
renamed](https://github.com/mozilla/rust/pull/9065) to `std::iter`.
- The `std::num::Primitive` trait is [now
constrained](https://github.com/mozilla/rust/pull/9051) by the `Clone` and
`DeepClone` traits, as well as
[`Orderable`](https://github.com/mozilla/rust/pull/9182).
- Some [more free functions](https://github.com/mozilla/rust/pull/9062) have
been removed from `std::vec`. `unzip` now takes an iterator, a
`Permutations` iterator has been added, and some rarely-used, obsolete,
functions were removed.
- A bunch of changes to `Option` and `Result` [were
made](https://github.com/mozilla/rust/pull/9115). Specifically, `chain` was
changed to `and_then` and `unwrap_or_default` to `unwrap_or`.
- rustpkg [builds into
target-specific](https://github.com/mozilla/rust/pull/9151) subdirectories
now.
## Additions and fixes
- debuginfo now has [namespace
support](https://github.com/mozilla/rust/pull/9097). Looking at all the
various PRs Michael has opened over the summer, it seems DWARF is a very
flexible, nice debuginfo format, but gdb and LLVM don't support it very
well.
- Correct `range_step` and `range_step_inclusive` iterators [have been
added](https://github.com/mozilla/rust/pull/9199). They are correct in cases
of overflow, and are generic.
- A handy `sleep` function [has been
added](https://github.com/mozilla/rust/pull/9191) to newrt.
- File IO in newrt [works on
windows](https://github.com/mozilla/rust/pull/9165) now.
- A bug where nested items in a default method weren't compiled [has been
fixed](https://github.com/mozilla/rust/pull/9162).
- A rendezvous concurrency structure, much like Ada's, [has been
added](https://github.com/mozilla/rust/pull/8908).
- Buffered IO wrappers [have been
added](https://github.com/mozilla/rust/pull/9091).
- nmatsakis landed a PR that [closed 7 issues at
once](https://github.com/mozilla/rust/pull/9088).
- rustpkg now uses `extra::workcache` [to prevent recompilation of
already-compiled crates](https://github.com/mozilla/rust/pull/9034).
# Meeting
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-09-10)
discussed the github commit policy, implicit copyability, patterns, and the
fate of `&const`.
# Other things
- Eric Reed (ecr)'s intern presentation: [An I/O System for
Rust](https://air.mozilla.org/intern-presentations-reed/). Unfortunately,
the audio cuts out.
- [Evict-BT](https://github.com/singingboyo/evict), a git-integrated issue
tracker.
- [Computer Graphics and Game
Development](https://github.com/mozilla/rust/wiki/Computer-Graphics-and-Game-Development).
Also note the `#rust-gamedev` channel.
- [rust-for-real](https://github.com/FlaPer87/rust-for-real), a collection of
Rust examples to aid in learning. Needs more examples!

View File

@ -0,0 +1,117 @@
Title: This Week in Rust 16
Date: 2013-09-23 13:08
Category: This Week in Rust
Tags: programming, rust
Welcome to another issue of *This Week in Rust*. We're gearing up for a 0.8
release, tentatively planned for Thursday. Additionally, a huge welcome of
Alex Crichton to the Rust team! He's been doing some great work, it's
wonderful to have another full-time Rust dev.
<!-- more -->
# What's cooking in master?
There were 86 PRs merged this week.
## rustdoc\_ng
rustdoc\_ng was merged into mainline and enabled as the new rustdoc, in time
for 0.8. This makes me incredibly happy, as it marks the conclusion of my
quest to a better rustdoc. Not to say that rustdoc is finished or perfect,
but it's already much better than the old rustdoc. My sincere thanks go to
Jordi Boggiano (Seldaek), who worked unceasingly to create a beautiful,
usable frontend, and to Meret Vollenweider (meretv) for donating her amazing
design skills. Also thanks to Huon Wilson (dbaupp) for moral support and
creating the awesome DocFolder interface that passes over the documentation
use. And, of course, to Alex Crichton, who pushed these past few days to port
the static site generator to Rust and to integrate it into the build system.
The new docs have replaced the old docs. You can view them [on the Rust
website](http://static.rust-lang.org/doc/master/std/index.html). Still to-do
is proper cross-crate doc hyperlinking. To run it on your own crate, build a
recent Rust and do `rustdoc html path/to/your/crate.rs`. It will eventually be
integrated into `rustpkg`.
## Breaking changes
- `extra::par` has been [removed](https://github.com/mozilla/rust/pull/9380).
- Some unsound functional struct updates (FSU, `{a: 5, ..b}`) [are now
disallowed](https://github.com/mozilla/rust/pull/9350).
- `--cfg debug` is no longer required. If you want to disable debug logging,
use [`--cfg ndebug`](https://github.com/mozilla/rust/pull/9278).
- The various uses of `NaN` are now [lowercased to
`nan`](https://github.com/mozilla/rust/pull/9321).
- `std::util::unreachable` has been removed in factor of the
[`unreachable!`](https://github.com/mozilla/rust/pull/9320) macro.
- `extra::future` has been [cleaned
up](https://github.com/mozilla/rust/pull/9285) a bit, including some method
shuffling/renames.
- `extra::getopts` has been [cleaned
up](https://github.com/mozilla/rust/pull/9267) as well, with most free
functions now being methods.
- The `from_str` methods in the numeric modules have been
[removed](https://github.com/mozilla/rust/pull/9275) in favor of the FromStr
trait and the `from_str` free function in the prelude. Same for
[`from_str_radix`](https://github.com/mozilla/rust/pull/9209).
- The `Drop` trait now uses [`&mut
self`](https://github.com/mozilla/rust/pull/9244), as part of the transition
to by-value drops.
- `extra::json` uses a [different
encoding](https://github.com/mozilla/rust/pull/9231) when encoding/decoding
enums, so any Rust-generated JSON before this patch will now be rejected by
the decoder.
## Other changes
- debuginfo now works for [recursive
types](https://github.com/mozilla/rust/pull/9168).
- You can now [pass parameters](https://github.com/mozilla/rust/pull/9213) to
the generated test with `rust test`.
- `extern fn`s from external crates now use the [declared
ABI](https://github.com/mozilla/rust/pull/9196), rather than assuming cdecl.
- `CString` has gained an
[`as_str`](https://github.com/mozilla/rust/pull/9220) method.
- Some [overflow bugs](https://github.com/mozilla/rust/pull/9108) in `vec` and
`str` have been fixed.
- `statics` are now [properly
inlined](https://github.com/mozilla/rust/pull/9130) cross-crate.
- The `bytes!` macro's error reporting has been [tightened
up](https://github.com/mozilla/rust/pull/9245) to make it more obvious where
the error is.
- `rustpkg init` [has been added](https://github.com/mozilla/rust/pull/9236),
to create a new workspace.
- File IO in newrt has been [massively
reworked](https://github.com/mozilla/rust/pull/9235) and is much more
complete than the oldrt.
- The exact meaning of "unsafety" [is now
documented](https://github.com/mozilla/rust/pull/9258).
- `\0` escapes in strings [is now
supported](https://github.com/mozilla/rust/pull/9248).
- `rustpkg` now thinks in terms of crates, not packages, to you can now have
[multiple crates in a single
package](https://github.com/mozilla/rust/pull/9263) and have things work
correctly.
- newrt has [pipes and process
support](https://github.com/mozilla/rust/pull/9260/files) now.
- `format!` now allows [trailing
commas](https://github.com/mozilla/rust/pull/9299) in its arguments.
- The lexer now throws [vastly better
errors](https://github.com/mozilla/rust/pull/9308).
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-09-17)
discussed quite a bit, most interesting to me was the crypto discussion,
putting `macro_rules!` behind an experimental flag, and the default arguments
discussion.
# Project announcements etc
- [rustymem](https://github.com/williamw520/rustymem) - a pure-rust memcached
library.
- ["Where to learn more about Rust's concurrency
model?"](http://www.reddit.com/r/rust/comments/1myesy/where_to_learn_more_about_rusts_concurrency_model/)
- [q3 now has skeletal
animation!](https://raw.github.com/jeaye/q3/master/pics/016_1_animated_skele.png).

View File

@ -0,0 +1,106 @@
Title: This Week in Rust 17
Date: 2013-09-30 13:11
Category: This Week in Rust
Tags: rust, programming
Welcome to another issue of *This Week in Rust*! This week saw the release of
0.8, the removal of `@fn`, and a bunch of other changes. The tutorial has been
updated significantly, surrounding pointers and boxes, so you should re-read
those sections if you're still feeling shaky on when you should use which.
<!-- more -->
# What's cooking on master?
There were 79 PRs merged this week.
## Breaking changes
- `printf!` and `printfln!` have been
[removed](https://github.com/mozilla/rust/pull/9550).
- `continue` is now a keyword, a [synonym for
`loop`](https://github.com/mozilla/rust/pull/9504), preceeding `loop`'s
removal (https://github.com/mozilla/rust/issues/9467)
- Item visibility is [properly encoded in
metadata](https://github.com/mozilla/rust/pull/9432), so code which used
private items that may have worked before is now rejected.
- Char literals which should have been escaped [are now rejected when they
aren't escaped](https://github.com/mozilla/rust/pull/9335).
- `impl Foo for T;` is now [disallowed](https://github.com/mozilla/rust/pull/9336).
Use `impl Foo for T {}`.
- `@fn` has been [removed from the
language](https://github.com/mozilla/rust/pull/9310). Replace it with
`@Trait` objects, if you really need `@fn` (you probably don't).
- `start` [no longer takes a crate
map](https://github.com/mozilla/rust/pull/9301).
- Some more keywords have been
[reserved](https://github.com/mozilla/rust/pull/9389): `alignof`,
`offsetof`, and `sizeof`.
## Everything else
- A ton of documentation work was put in this week. The box section of the
tutorial has been [rewritten](https://github.com/mozilla/rust/pull/9589),
and there's a new [rustpkg
tutorial](https://github.com/mozilla/rust/pull/9439) too. The module
tutorial saw the file section
[extended](https://github.com/mozilla/rust/pull/9398). There was a bunch of
module documentation updated/added too.
- rustdoc(_ng) also saw a lot of work. It [completely
replaced](https://github.com/mozilla/rust/pull/9402) the old rustdoc, as
well as seeing a [lot](https://github.com/mozilla/rust/pull/9577) of
[fixes](https://github.com/mozilla/rust/pull/9475). Huge thanks to Alex
Crichton for all the work with it!
- `std::vec` has seen some [nice
changes](https://github.com/mozilla/rust/pull/9583) to `connect_vec` and
`concat_vec` (they were really awful before).
- `rustpkg test` is [implemented](https://github.com/mozilla/rust/pull/9549).
- `type_use` has been [removed](https://github.com/mozilla/rust/pull/9538).
This did some nasty things and LLVM's `mergefunc` pass will do a better job
of the same optimization (once it's enabled).
- `with_c_str` is now [optimized](https://github.com/mozilla/rust/pull/9352)
to be allocation-free for short vectors.
- The logging system, when using the new formatting code (so `debug2` etc) is
[allocation-free](https://github.com/mozilla/rust/pull/9261).
- `std::rand` has seen some
[cleanup](https://github.com/mozilla/rust/pull/9362), in preparation for its
overhaul.
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-09-24)
discussed a bunch of things, the main things of importance to me being:
- `loop` -> `continue`
- Allowing nested comments
# Announcements
- [wxRust](https://github.com/kenz-gelsoft/wxRust) - A binding to the
wxWidgets toolkit.
- [widmann](http://www.reddit.com/r/rust/comments/1neu74/the_start_of_a_sinatra_clone/)
\- A Sinatra clone
- [gl-rs](http://www.reddit.com/r/rust/comments/1nab2s/rustdev_opengl_glrs_updated_with_command_line/)
has been updated to generate only bindings for a select version / set of
extensions.
- [Debugging Rust in
Eclipse](http://www.reddit.com/r/rust/comments/1n8y5b/debugging_rust_in_eclipse/)
\- Michael Woerister's final GSoC post. He did really great work this
summer!
- [Rust for Rubyists](https://github.com/steveklabnik/rust_for_rubyists) has
been open sourced!
- The [Claymore](https://code.google.com/p/claymore-game/) project has just
come to my attention. Apparently it has been going on for quite some time.
There are some screenshots at <http://claymore-dev.blogspot.com/>.
- [rustenstein3d](https://github.com/JeremyLetang/rustenstein3D/) - a
Wolfenstein3D engine
- [clio](https://github.com/eevee/clio), a roguelike. This one also slipped
under my radar for a while.
- [rust-gmp](https://github.com/thestinger/rust-gmp) has been updated for
0.8/master.
- [rustdoc_ng](https://github.com/cmr/rustdoc_ng), being merged into mainline,
has concluded as a project.
- And, of course, the [0.8
release](http://www.reddit.com/r/rust/comments/1n7q8v/08_released/)
discussion on reddit.

View File

@ -0,0 +1,89 @@
Title: The State of Rust 0.8
Date: 2013-10-06 20:32
Category: Rust
Another 3 months, another release. This is the first release that I've
witnessed in its entirety! This is a summary of Rust: its compiler,
libraries, documentation, and community. ([What is
Rust?](http://rust-lang.org))
<!-- more -->
# Compiler
The compiler is faring well. It received a lot of attention in compile speed,
although memory usage regressed significantly. It is now mostly fixed in
master. Time compiling `fn main() { }` went from 172ms to 112ms on my box.
When compiling programs of any significance, the gap is much larger. There's
also been some thought put into parallelizing rustc. Michael Woerister's GSoC
project was debuginfo, and it's almost in a fully-working state. As of 0.8,
it's not completely baked -- libstd can't be compiled with it, and stepping
through code isn't perfect -- but it's a huge step forward, and he created an
extensive testsuite, so it shouldn't regress. The pretty printer hasn't seen
much improvement. Default methods, one of the major things Michael Sullivan
worked on over the summer, are in a much better state. If there are any
remaining bugs in them, I haven't seen them.
# Iterators
Iterators are hugely improved for 0.8. The `for` loop syntax now uses the
Iterator trait. Additionally, most uses of vector iterators now compile to the
exact same code that indexing or iteration would in C or C++, including the
ability to be vectorized. Additionally, they now use default methods instead
of extension implementations. A bunch of other extensions to Iterator were
added, such as DoubleEndedIterator and RandomAccessIterator.
# Documentation
The documentation is in a much better state than it was 3 months ago. The new
rustdoc was started and finished. I started it, and Alex Crichton really
polished and finished it the last two weeks before the release. The API
documentation is now navigable, and one can actually see the relationship
between various types. A bunch of work also went into the tutorials, yielding
three new documents: error handling and conditions, iterators and containers,
and rustpkg.
# `rustpkg`
Rustpkg continues to advance. Tim put out the call for community involvement,
and it's getting significant traction in actual libraries. There are still a
few kinks when using it for development, but when just fetching and building
dependencies, it works very well. Servo is porting its whole mini-ecosystem
over to rustpkg, uncovering bunches of problems and deficiencies in the
process. If you're interested in helping out with Rust, rustpkg is a major
area. Tim is also super nice, and will happily help you get into the codebase.
# Libraries
Rust is slowly accreting more and more useful libraries: mostly coming from
the gamedev community, but sometimes other useful things as well. The
new runtime has completely replaced the old, a significant step forward for
Rust's maturity. `rust-http` is making some really nice strides, as well as
the opengl bindings. The standard libraries are becoming nicer to use.
`std::run`, in particular, stands out to me as something that's quite easy to
use, and `std::str` saw a lot of work making it more correct.
# The Future
This was a great release cycle, and I think the next one will be even better.
Alex Crichton was hired as a full-time Rust developer, and he has been doing a
lot of important work that just would have taken a while to happen otherwise.
I'm very optimistic about this release, much more so than 0.7. I think we
might be able to hit milestone 1 for 0.9 or 0.10, though that's just
speculation on my part.
# Is Rust Ready?
No. Rust is approaching maturity, but it isn't there yet. There are still
backwards-incompatible changes being made to try and get to milestone 2. The
major things that come to mind are closure reform and privacy overhaul (which
is being worked on in master [right
now](https://github.com/mozilla/rust/pull/9735)). Additionally, people in the
gamedev community are starting to [hit walls with the type
system](http://www.reddit.com/r/rust/comments/1nxs1h/the_state_of_rust_08/ccnb8ya).
Those probably won't be fixed in the time leading up to 1.0, but this is also
speculation.
Experimenting with Rust is becoming more viable as time goes on, but using it
in production is a bad idea, especially if "low maintenance" is at all
valuable.

View File

@ -0,0 +1,89 @@
Title: This Week in Rust 18
Date: 2013-10-06 18:25
Category: This Week in Rust
Welcome to another issue of *This Week in Rust*.
<!-- more -->
# What's cooking on master?
Only 63 PRs were merged this week. Currently in the queue is the massive
privacy change, the path rewrite, enum descriminant shrinking, a `rand`
rework, a lock-free scheduler message queue, and libuv signal bindings.
## Breaking Changes
- `float` has been [removed from the
language](https://github.com/mozilla/rust/pull/9519).
- `loop` has been [removed](https://github.com/mozilla/rust/pull/9665). The
transition to `continue` is complete.
- A macro ignoring tokens now [throws an
error](https://github.com/mozilla/rust/pull/9673) rather than silently
ignoring it.
- `IntConvertible` has been
[replaced](https://github.com/mozilla/rust/pull/9250) with `ToPrimitive` and
`FromPrimitive`. This also heralds the ability to derive to/from int methods
on enums.
## Everything Else
- `rustpkg` can [fetch remote packages
again](https://github.com/mozilla/rust/pull/9741).
- A bunch of unsafe code surrounding logging [has been
remove](https://github.com/mozilla/rust/pull/9593).
- A bunch of work was done to make more things immediate. A
[bugfix](https://github.com/mozilla/rust/pull/9643), [small
tuples](https://github.com/mozilla/rust/pull/9656), [small
enums](https://github.com/mozilla/rust/pull/9677), and [unit/C-like
enums](https://github.com/mozilla/rust/pull/9699).
- A bunch of work went into decreasing our memory usage. The massive spike at
the beginning [has been fixed](https://github.com/mozilla/rust/pull/9612).
The tcx (type context, holds the result of *all* compiler analysis) is also
free'd before translation now, reducing memory usage by a good [500+
MB](https://github.com/mozilla/rust/pull/9686). Another cache during
constant evaluation [reduces memory usage by
200MB](https://github.com/mozilla/rust/pull/9722).
- We're now [bundling our
dependencies](https://github.com/mozilla/rust/pull/9662) on Windows, making
it easier to bootstrap and to setup a working Rust environment.
- All of the really old obsolete syntax checkers [have been
removed](https://github.com/mozilla/rust/pull/9712).
- Hyperlinking between crates is [now
reimplemented](https://github.com/mozilla/rust/pull/9691) in rustdoc.
- Gearing up for its removal, [all `fmt!` usage in the compiler has been
removed](https://github.com/mozilla/rust/pull/9599).
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-10-01)
discussed a bunch of proposed changes, including rustpkg submodules, removing
float (which has already happened), raw string literals (which have a patch
almost finished), and the changes to the Option API.
# Announcements
- [ncurses-rs](https://github.com/jeaye/ncurses-rs) - a safe wrapper that
keeps the same ncurses interface you know and "love", but more rustic.
- [The Rusticon](https://github.com/mozilla/rust/wiki/The%20Rusticon) - A
living glossary of Rust terms.
- [A production use of
Rust!](http://www.reddit.com/r/rust/comments/1nqzth/zeromq_helping_us_block_malicious_domains_in_real/)
- [Understanding the Servo
Strategy](http://www.reddit.com/r/rust/comments/1ntnvf/understanding_the_servo_strategy/)
\- The Servo presentation given at the various Mozilla Summits
- [Dynamic Typing implemented as a
library](http://www.reddit.com/r/rust/comments/1nmarr/dynamic_typing_implemented_as_library_code/)
\- a pretty cool use of our reflection.
- [Running Rust Tests on Travis
CI](http://www.reddit.com/r/rust/comments/1ni84a/running_rust_tests_on_travis_ci/).
- [Rust bindings for
FUSE](http://www.reddit.com/r/rust/comments/1ngqgr/rust_bindings_for_fuse_filesystem_in_userspace/)
# Meetups
Haven't had a meetup section in a long time, but two are forming!
- [Francisco Bay Area](http://www.meetup.com/Rust-Bay-Area/)
- [Rust Skåne (Lund, Sweden)](http://www.meetup.com/rust-skane/)

View File

@ -0,0 +1,105 @@
Title: This Week in Rust 19
Date: 2013-10-12 22:53
Category: This Week in Rust
Welcome to another issue of *This Week in Rust*. This week introduces raw
string literals, the removal of the `rust` tool, feature gating, and the
privacy overhaul.
<!-- more -->
# What's cooking on master?
Only 51 PRs were merged this week, though the ones that were were fairly
large.
## Breaking changes
- Visibility and privacy have been defined, and the new semantics are slightly
incompatible with the old. The details are
[here](https://github.com/mozilla/rust/pull/9735).
- Feature gating has been [added to the
compiler](https://github.com/mozilla/rust/pull/9703). This allows us to
mask language features that we don't want to commit to for 1.0. The compiler
will tell you when you are using an "experimental" feature. The current
experimentals are glob imports, macro definitions, and struct-like variants
in enums. This is an important step forward for 1.0 which,
[apparently](http://www.reddit.com/r/rust/comments/1o90f9/fn_types_in_rust_take_3/ccq8qev),
is right around the corner.
- The `rust` tool [has been
removed](https://github.com/mozilla/rust/pull/9785).
- `Option`'s API has been [massively
simplified](https://github.com/mozilla/rust/pull/9359), and changed to be
composable.
- Strings are [no longer allowed to be modified in safe
code](https://github.com/mozilla/rust/pull/9750). Things like `let s =
~"abcdefg"; s[4] = 0x99;` are now rejected. This is because it allows one to
create invalid (non-UTF8) string values.
- `extra::rc` has [graduated to
`std::rc`](https://github.com/mozilla/rust/pull/9794).
- `extra::tempfile::mkdtemp` [has been replaced with an RAII
wrapper](https://github.com/mozilla/rust/pull/9802).
- `std::rand` [has been improved](https://github.com/mozilla/rust/pull/9695),
but changes the public API of Rng a bit.
- `IntConvertible` has been removed in favor of [`ToPrimitive` and
`FromPrimitive`](https://github.com/mozilla/rust/pull/9250), which can be
derived for enums, making interacting with C APIs substantially more
[DRY](http://en.wikipedia.org/wiki/Don%27t_repeat_yourself).
## Other changes
- [Raw strings](https://github.com/mozilla/rust/pull/9674) are now supported.
The basic syntax is `r"Foo"`, but also `r###"Foo"###`, for arbitrary
nesting of raw strings.
- rustpkg's remote fetching [is
fixed](https://github.com/mozilla/rust/pull/9741), but [other
](https://github.com/mozilla/rust/issues/9482)
[problems](https://github.com/mozilla/rust/issues/9781) prevent it from
being fully usable right now.
- debuginfo namespace handling [has been
unified](https://github.com/mozilla/rust/pull/9658), and marks the ability
to build all of Rust (libstd, libextra, compiler and tools) with debuginfo,
which is very awesome.
- Small structs [are immediate](https://github.com/mozilla/rust/pull/9759).
- When there are unbalanced delimiters, [the opening delimiters leading up to
it](https://github.com/mozilla/rust/pull/9756) are printed, avoiding the
"Expected a }, saw EOF at line 9001" problem.
- libuv and jemalloc are only [built once, rather than once per
stage](https://github.com/mozilla/rust/pull/9772).
- Macros [now take attributes](https://github.com/mozilla/rust/pull/9753) and,
in turn, can be documented.
- In the opposite direction, [macros can now expand to items with
attributes](https://github.com/mozilla/rust/pull/9783).
- There were some [minor logging
changes](https://github.com/mozilla/rust/pull/9664), the biggest result of
which is that inlined functions won't be logged by the modules they're
inlined into.
- [`std::rt::io::native` has been
implemented](https://github.com/mozilla/rust/pull/9749). The idea of this is
to live in `std::io::native` and to use the OS's native APIs rather than
libuv, and also to not require the scheduler or any other runtime support.
- rustpkg [marks checked out repos as
read-only](https://github.com/mozilla/rust/pull/9732), to prevent
modifications.
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-10-08)
discussed some administrative things, the removal of crypto code, the removal
of the `rust` tool, and functions.
# Announcements etc
- [rust-fuse](http://www.reddit.com/r/rust/comments/1o35ns/fuse_userspace_library_in_rust/)
\- a FUSE userspace library in Rust. This is pure Rust, not using libfuse.
- [ears](http://www.reddit.com/r/rust/comments/1o46cv/ears_a_simple_library_for_playing_sounds/)
\- a simple library for playing sounds.
- [rustic](https://github.com/pcmattman/rustic) - another operating system
project.
- [Refactoring the milestones on the issue
tracker](https://mail.mozilla.org/pipermail/rust-dev/2013-October/005981.html).
- [Fn Types in Rust, Take
3](http://smallcultfollowing.com/babysteps/blog/2013/10/10/fn-types-in-rust/)
\- another attempt at tackling the problems with closures.
- mcpherrin in `#rust` says "Hello, everyone!"

View File

@ -0,0 +1,104 @@
Title: This Week in Rust 20
Date: 2013-10-19 10:49
Category: This Week in Rust
Welcome to another issue of *This Week in Rust*, a weekly summary of Rust's
progress and happenings in the community.
<!-- more -->
# What's cooking in master?
48 PRs were merged this week.
## Breaking changes
- Slices are now represented as [number of elements, not number of
bytes](https://github.com/mozilla/rust/pull/9885).
- `fmt!` has been [completely
removed](https://github.com/mozilla/rust/pull/9919).
- Some fields in `std::comm` [have been made
private](https://github.com/mozilla/rust/pull/9935).
- `std::sys::refcount` [has been
moved](https://github.com/mozilla/rust/pull/9922) to
`std::managed::refcount`.
- [A bunch of
functions](https://github.com/mozilla/rust/pull/9896/files#diff-69196c6d2488bf8d5b3471084e854407L22)
have moved from `std::sys` to `std::mem`.
- `once fn` is [now a feature gate](https://github.com/mozilla/rust/pull/9863)
rather than a `-Z` flag.
- `Path` has been [completely
rewritten](https://github.com/mozilla/rust/pull/9655).
- `extra::flatpipes` [has been
removed](https://github.com/mozilla/rust/pull/9886).
## Other changes
- `jemalloc` has been [removed from the
runtime](https://github.com/mozilla/rust/pull/9933). The [associated
issue](https://github.com/mozilla/rust/issues/9925) is quite scary.
- `rustdoc` [struct field
visibility](https://github.com/mozilla/rust/pull/9946) is now corrected (it
stripped fields where it should not have).
- `rustdoc` also [uses the actual privacy
rules](https://github.com/mozilla/rust/pull/9941) to strip methods.
- `format!` now gives [much better](https://github.com/mozilla/rust/pull/9932)
error messages for invalid format strings.
- The `fmt::Default` trait, used for default formatting with `format!`, is
[now documented](https://github.com/mozilla/rust/pull/9938).
- `include_bin!` has been optimized, and the `k-nucleotides` benchmark now
compiles [187x faster](https://github.com/mozilla/rust/pull/9851).
- Vectors now have [`starts_with` and `ends_with`
methods](https://github.com/mozilla/rust/pull/9907), which take slices.
- An `abort` intrinsic [has been
added](https://github.com/mozilla/rust/pull/9860).
- Vectors now have a [`get_opt`
method](https://github.com/mozilla/rust/pull/9608).
## New contributors
A new section for new contributors! The new contributors this week are (as
reported by git):
- Chris Sainty
- Eduard Burtescu
- Erik Lyon
- Harry Marr
- Sébastien Chauvel
- Vijay Korapaty
- Ziad Hatahet
- chitra
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-10-15)
discussed removing rusti, changing the attribute syntax, destructors in
statics, and more multi-crate packages with rustpkg.
# Announcements etc
- Rust (and Servo) are participating in the [GNOME Outreach Program for
Women](https://groups.google.com/forum/#!topic/mozilla.dev.servo/7kX_E0FlfkA).
A bunch of people have already come into IRC about it.
- <http://exercism.io> [is getting full Rust
support](https://github.com/kytrinyx/exercism.io/pull/866). This is a very
cool resource, and could help a lot getting newcomers acclimated.
- [Unified Function/method Call Syntax and further
simplification](https://mail.mozilla.org/pipermail/rust-dev/2013-October/006034.html).
- [Safe Memory Management in
Cyclone](http://www.reddit.com/r/rust/comments/1osbq2/safe_manual_memory_management_in_cyclone_research/).
- [Audio](http://opensourcebridge.org/sessions/970) from Tim's talk in June is
finally available!
- An
[OSdev](https://github.com/mozilla/rust/wiki/Operating-system-development)
community has sprung up! The channel is `#rust-osdev`.
- [Should I/O use
conditions?](http://www.reddit.com/r/rust/comments/1omw47/should_io_use_conditions/).
- [Pointers in Rust: A
Guide](http://www.reddit.com/r/rust/comments/1opo36/pointers_in_rust_a_guide/).
- I am on a [Rust hiatus](http://cmr.github.io/blog/2013/10/14/rust-hiatus/),
for the time being. TWiR will still be happening, as you are reading it
right now.
- [rust-core](https://github.com/thestinger/rust-core) - A stub standard
library.

View File

@ -0,0 +1,88 @@
Title: This Week in Rust 21
Date: 2013-10-28 16:20
Category: This Week in Rust
Welcome to another issue of *This Week in Rust!* This week marks the addition
of some more feature gates, removal of `std::io`, and some feature proposals.
<!-- more -->
# What's cooking on master?
47 PRs were merged this week, and we passed issue number 10000.
## Breaking Changes
- Most of the crypto in the stdlib [has been
removed](https://github.com/mozilla/rust/pull/9744).
- `std::io` [has been removed](https://github.com/mozilla/rust/pull/9901),
with corresponding improvements in `std::rt::io`.
- The `frame_address` intrinsic [has been
removed](https://github.com/mozilla/rust/pull/10040).
- `@`-ptrs are [now feature-gated](https://github.com/mozilla/rust/pull/9923),
reflecting the fact that they will exist in a very different form once they
are finished.
- All of the logging that used `fmt` (`debug!` and so forth) [have been
transitioned to `format!`](https://github.com/mozilla/rust/pull/10006).
- `asm!` [is also featured gated](https://github.com/mozilla/rust/pull/10009).
- `sys::log_str` [has moved](https://github.com/mozilla/rust/pull/9937).
## Other changes
- The long-awaited addition of `mut` in patterns [has finally
happened](https://github.com/mozilla/rust/pull/10026). `let (mut x, y) = (1,
2);` works.
- The scheduler now uses [lock free data
structures](https://github.com/mozilla/rust/pull/10080), which are supposed
to perform much better.
- The homing code [now does less
work](https://github.com/mozilla/rust/pull/10070), which does one third as
many `write`'s.
- `stdout` [is now buffered](https://github.com/mozilla/rust/pull/10060).
- A [non-libuv event loop](https://github.com/mozilla/rust/pull/10054) has
been added.
- `std::rand` has seen [more](https://github.com/mozilla/rust/pull/9810)
[work](https://github.com/mozilla/rust/pull/10015).
- `rustpkg` [now supports arbitrary
dependencies](https://github.com/mozilla/rust/pull/9654), such as C
libraries.
- `mut` is [now allowed on self](https://github.com/mozilla/rust/pull/9989).
- Nested comments [are now
allowed](https://github.com/mozilla/rust/pull/9936).
- `rustpkg` will now [find crates in the current directory], so you can say
`rustpkg build` in a source dir and it will build in a workspace.
- Some new float intrinsics [have been
exposed](https://github.com/mozilla/rust/pull/9986).
- `println!` [allocates less](https://github.com/mozilla/rust/pull/9979).
## New contributors
- Igor Bukanov
- Mark Rowe
- Michael Letterle
- reedlepee
# Announcements etc
- There will be a
[meetup](http://www.meetup.com/Rust-Bay-Area/events/143439552/) in the San
Fransisco Mozilla office. Patrick Walton will be talking about sprocketnes.
If you're in the area, you should definitely go!
- [rust-ci](http://hiho.io/rust-ci/) has been created, which lets you have
travis automatically rebuild and test your repo daily, to reduce
language/library breakage.
- [rust-mustache](https://github.com/erickt/rust-mustache) and
[rust-zmq](https://github.com/erickt/rust-zmq) have been updated for master.
- [Short talk about Rust at Scala.IO in Paris (October
25th)](http://www.reddit.com/r/rust/comments/1pdrv6/short_talk_about_rust_at_scalaio_in_paris_october/).
- [A Bit of Functional Programming in Rust, or A Misguided First Look at Rust
for ML
Programmers](http://www.reddit.com/r/rust/comments/1pe2lc/a_bit_of_functional_programming_in_rust_or_a/).
- [A draft proposal for single
inheritance](http://www.reddit.com/r/rust/comments/1p52tj/a_draft_proposal_for_single_inheritance_in_rust/).
- [Iterators yielding mutable
references](http://www.reddit.com/r/rust/comments/1p4vnk/iterators_yielding_mutable_references/).
- [Servo transitions from libcss to a new CSS library written in
Rust](http://www.reddit.com/r/rust/comments/1p4qeh/servo_transitions_from_libcss_to_a_new_css/).
- [On stack
safety](http://www.reddit.com/r/rust/comments/1owhwi/on_stack_safety/).

View File

@ -0,0 +1,141 @@
Title: These Weeks in Rust 22
Date: 2013-11-09 05:21
Category: This Week in Rust
Welcome to a mega-*This Week in Rust*. I was swamped this past week with
schoolwork, so TWiR was put off. This week's combines the past two weeks of
progress. These past two weeks were fairly exciting in terms of language and
library progress. The next few weeks should be even more exciting.
<!-- more -->
# What's cooking on master?
There were 108 PRs merged these past two weeks.
## Breaking Changes
- The very long-awaited [enum discriminant size
patch](https://github.com/mozilla/rust/pull/9613) has landed. This will
affect FFI. Size of enum discriminant is now configurable via the `repr`
attribute, and will by default shrink to the smallest needed.
- The extension traits for `Reader` and `Writer` have [been transformed into
default methods on their respective
trait](https://github.com/mozilla/rust/pull/10079).
- Non-string literals are now
[disallowed](https://github.com/mozilla/rust/pull/10166) in attributes.
- Type parameters are now
[forbidden](https://github.com/mozilla/rust/pull/10189) on inner statics
(statics inside functions).
- The interface to flush stdout [has
changed](https://github.com/mozilla/rust/pull/10218). It was previously
unsound by allowing aliased `&mut`.
- `Result`'s API has changed [quite a
bit](https://github.com/mozilla/rust/pull/10119), to be more consistent with
`Option`, and hopefully simpler.
- Linker arguments [no longer](https://github.com/mozilla/rust/pull/10199)
propagate across crates. This means that if you link to a crate, its linker
arguments won't be automatically added when your crate is linked.
- The memory intrinsics [have been
simplified](https://github.com/mozilla/rust/pull/10251). A single intrinsic
for `memcpy`/`memmove`/`memset` is now exposed, rather than one per
platform.
- `#[link(name = "...")]` is now [taken into
account](https://github.com/mozilla/rust/pull/10260) by rustc when creating
build artifacts.
- `std::rt::io::file` [has been fleshed out and
tweaked](https://github.com/mozilla/rust/pull/10179). In particular, it has
been renamed to `std::rt::io::fs`, many previously-free functions are now
associated functions on `std::rt::io::File`, and `FileInfo` has been renamed
to `FileStat`.
## Other Changes
- Calling variadic functions with the C FFI [is now
implemented](https://github.com/mozilla/rust/pull/10064). This is a pretty
sweet change. The only thing missing in our C FFI now is unions.
- We [now have](https://github.com/mozilla/rust/pull/10243) octal numeric
literals, for all your esoteric numeric needs!
- An `Any` type [has been added](https://github.com/mozilla/rust/pull/9967),
and it is now possible to retrieve the object a task failed with. Previously
tasks could only fail with a string, now they can fail with anything.
- A `concat!` syntax extension [has been
added](https://github.com/mozilla/rust/pull/9740) for compile-time string
concatenation.
- Timers are [now also ports](https://github.com/mozilla/rust/pull/10083), and
the creator of a timer can cancel it.
- As the first part of closure reform, `proc` is [now sugar](https://github.com/mozilla/rust/pull/10132) for `~once
fn`, and `|A| -> B` (and `fn(A) -> B` for bare functions) [are now
allowed](https://github.com/mozilla/rust/pull/10187) in types.
- The section in the tutorial on vectors and strings [has been
rewritten](https://github.com/mozilla/rust/pull/10354) for correctness with
modern Rust.
- A bunch of C++ has been removed and rewritten. [Thread
creation](https://github.com/mozilla/rust/pull/10290), [memory
regions](https://github.com/mozilla/rust/pull/10094) (used for debugging and
`@`-boxes, from what I can tell), and an [unused
`array_list`](https://github.com/mozilla/rust/pull/10163/files).
- Bounds check failures are [now marked as a cold
path](https://github.com/mozilla/rust/pull/10113), and a `cold` [function
attribute](https://github.com/mozilla/rust/pull/10127) has been added.
- The build system [can cross-compile to iOS
now](https://github.com/mozilla/rust/pull/10203), even though Rust doesn't
actually run on that platform (yet!).
- `std::rand` [now implements the Gamma
distribution](https://github.com/mozilla/rust/pull/10223).
- Cross-crate destructor inlining [now
works](https://github.com/mozilla/rust/pull/10242).
- A `type_id` intrinsic [has been
added](https://github.com/mozilla/rust/pull/10182).
- Everything in the runtime that uses `libuv` has been [split into its own
crate](https://github.com/mozilla/rust/pull/10058). This means that the
runtime really is pluggable: you can implement your own event loop and so
forth.
## New Contributors
Welcome to our new contributors!
- Brian
- Carol Willing
- Dirkjan Bussink
- Guillaume Pinot
- Gyorgy Andrasek
- Joshua Yanovski
- Mat Carberry
- Noufal Ibrahim
- Robert Irelan
- Tomas Sedovic
- Jennifer Ward
- Patrick Kim
At .85 new contributors a day, we'll soon dwarf every other language in the
"awesome volunteer" category.
# Weekly Meetings
Last week's
[meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-10-29)
discussed segmented stacks (spoiler: [they're not coming
back](https://mail.mozilla.org/pipermail/rust-dev/2013-November/006314.html) )
and placement new (we want it, how do we want it?).
This week's
[meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-11-05)
discussed the future of libextra, more stack things, octal literals, vector
representation, and temporary ("rvalue") lifetimes.
# Announcements etc
- **Reminder from ~~the Ministry of Truth~~ ChrisMorgan**: Rust is awesome.
- Rust Skåne, [has an event page
now](http://www.foocafe.org/event/a-friendly-introduction-to-rust). It will
be December 3 at 17:30 in Foo Cafe.
- [Integermingled Parameter
Lists](http://smallcultfollowing.com/babysteps/blog/2013/10/29/intermingled-parameter-lists/),
and [take
2](http://smallcultfollowing.com/babysteps/blog/2013/11/04/intermingled-parameter-lists/).
- [speculate](https://github.com/haxney/speculate) - a parallel speculative
execution library.
- [mcchat](https://github.com/luqmana/mcchat) - a pure-Rust Minecraft chat
client.

View File

@ -0,0 +1,101 @@
Title: This Week in Rust 23
Date: 2013-11-19 01:42
Category: This Week in Rust
Welcome to another issue of *This Week in Rust*.
<!-- more -->
# What's cooking on master?
46 PRs were merged this week.
## Breaking changes
- `std::rt::io` [has moved on](https://github.com/mozilla/rust/pull/10423) to
become `std::io`. Yay!
- The `#[fixed_stack_segment]` attribute [has been
removed](https://github.com/mozilla/rust/pull/10407).
- `as` casts to functions are [no longer
allowed](https://github.com/mozilla/rust/pull/9788).
- The return value of the `io::process` is no longer an int, but [an enum that
also represents termination by
signal](https://github.com/mozilla/rust/pull/10109). It's also ostensibly
more portable: to check if a subprocess succeeded, just call `.success()` on
the return value.
- `std::cast::unsafe_copy` has [has been
removed](https://github.com/mozilla/rust/pull/10497). It is identical to
`std::ptr::read_ptr`.
- Trailing `::` is [no longer
allowed](https://github.com/mozilla/rust/pull/10420) in paths
## Other Changes
- Vectors have [more overflow
checking](https://github.com/mozilla/rust/pull/10417). This was the cause
of a few mysterious segfaults.
- Crate maps [can now be generated for
libraries](https://github.com/mozilla/rust/pull/10422), for when you want to
embed a Rust library in a non-Rust application.
- Creation of buffered readers/writers [has been optimized a
bit](https://github.com/mozilla/rust/pull/10424).
- If you use OS X, you'll be happy to see that the frivolous "no debug symbols
in executable" warning [has been stomped
out](https://github.com/mozilla/rust/pull/10198).
- The missing-documentation lint is [now more
accepting](https://github.com/mozilla/rust/pull/10277), and won't warn about
private items.
- `BufWriter`, an implementation of Writer for already-existing buffers, [is
now implemented](https://github.com/mozilla/rust/pull/10451).
- The native IO backend has seen [a good
boost](https://github.com/mozilla/rust/pull/10457); it will now be
seamlessly fallen back to when the libuv backend isn't available (you can
test this out by adding `#[no_uv];` to your crates).
- A lint for numeric literals which overflow their type [has been
implemented](https://github.com/mozilla/rust/pull/10018).
- A `Buffer` trait [has been
added](https://github.com/mozilla/rust/pull/10466) to `std::io`, with
`read_line`, `read_until`, and `read_char`.
- The error message when the trait's method declaration and the method
declaration in the implementation aren't the same [now includes the trait
name](https://github.com/mozilla/rust/pull/10509).
- The libuv bindings were [largely
rewritten](https://github.com/mozilla/rust/pull/10321) for performance, at
the sacrifice of some flexibility (which was of questionable value).
- `_`-prefixed variables [no
longer](https://github.com/mozilla/rust/pull/10518) get an unused `mut`
warning.
## New Contributors
Our first-time contributors this week are:
- Jaemin Moon
- Jay Anderson
- Joe Schafer
- Matthew Iselin
- Zach Kamsler
# Weekly Meeting
There was no meeting this week, as a bunch of the core developers were in
South Korea for the Servo workweek with Samsung.
## Announcements etc
- [(ML) Rethinking Linking in
Rust](https://mail.mozilla.org/pipermail/rust-dev/2013-November/006686.html)
- [(ML) The future of M:N
threading](https://mail.mozilla.org/pipermail/rust-dev/2013-November/006550.html)
- [(ML) Type system
thoughts](https://mail.mozilla.org/pipermail/rust-dev/2013-November/006714.html)
- [(ML)Changing
roles](https://mail.mozilla.org/pipermail/rust-dev/2013-November/006431.html),
Tim's "going-away" post. He did great work on rustpkg, and I hope he finds
time to continue to contribute to Rust.
- [Booting to Rust (with
UEFI)](http://blog.theincredibleholk.org/blog/2013/11/18/booting-to-rust/)
- [Treating Vectors Like Any Other
Container](http://smallcultfollowing.com/babysteps/blog/2013/11/14/treating-vectors-like-any-other-container/)
- [Moving forward with Rust
website](http://adrientetar.legtux.org/blog_fr.php?post=0)

View File

@ -0,0 +1,120 @@
Title: This Week in Rust 24
Date: 2013-11-23 17:58
Category: This Week in Rust
Welcome to another issue of *This Week in Rust*!
<!-- more -->
# What's cooking on master?
47 PRs were merged this week.
## Breaking Changes
- Non-ASCII identifiers are [feature
gated](https://github.com/mozilla/rust/pull/10605), due to open questions
about how it should be done. They aren't being removed, just deferred to
post-1.0.
- Some more closure reform has gone through. `~fn` has been removed, [use
`proc` instead](https://github.com/mozilla/rust/pull/10561). `&fn` is [also
short for this world](https://github.com/mozilla/rust/pull/10568).
- `std::util::NonCopyable` had its dummy constructor
[removed](https://github.com/mozilla/rust/pull/10575).
- All of the functions in rustrt [have been prefixed with
`rust_`](https://github.com/mozilla/rust/pull/10440).
- Items inside functions [no longer accept privacy
modifiers](https://github.com/mozilla/rust/pull/10443), since it is
meaningless.
- Reachable `extern fn`s are [no longer marked
internal](https://github.com/mozilla/rust/pull/10539).
## Other changes
- A `Gc<T>` stub [has been added](https://github.com/mozilla/rust/pull/10576).
New code should use this instead of `@T`.
- `..` is now [the pattern to use](https://github.com/mozilla/rust/pull/10366)
when ignoring multiple elements in a pattern.
- Stepping through `if` in a debugger [should be much smoother
now](https://github.com/mozilla/rust/pull/10552).
- `rustpkg -O` [will now actually
optimize](https://github.com/mozilla/rust/pull/10526) the package it is
building.
- Did you know we can make tags files for the Rust codebase? `make
TAGS.{vi,emacs}`! It no longer generates tags for [all of LLVM and
libuv](https://github.com/mozilla/rust/pull/10508), too.
- The pidigits benchmark [has been
resurrected](https://github.com/mozilla/rust/pull/10555).
- A native mutex type [now
exists](https://github.com/mozilla/rust/pull/10479), and it doesn't depend
on C++.
- Some more derived methods are [marked for
inlining](https://github.com/mozilla/rust/pull/10557).
- A bunch more [native file IO](https://github.com/mozilla/rust/pull/10495)
was implemented, too.
- We now have support for the [win64 calling
convention](https://github.com/mozilla/rust/pull/10527). Additionally, the
ABI of `extern fn`s is now actually used.
- The tutorial [now covers alternatives to
ownership](https://github.com/mozilla/rust/pull/10589) much better.
- A lint for unsafe blocks [has been
added](https://github.com/mozilla/rust/pull/10599).
- A minor bug with privacy [has been
fixed](https://github.com/mozilla/rust/pull/10583).
## New Contributors
Our first-time contributors this week are:
- Dave Hodder
- Ian Daniher
- Isaac Dupree
- g3xzh
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-11-19)
discussed static linking, changing how `let _ = foo` is handled, task joining,
autoderef, and user-defined vector types.
# Announcements, etc
- A [new
tutorial](http://adridu59.github.io/rust-tuts/) project
has sprung up.
# Servo
Thanks to Lars Bergstrom for This Week in Servo! Servo is Rust's sister
project, and I think it's nice to be able to see a highlevel of its progress.
Maybe TWiS will graduate to a separate blog someday.
## 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. Starting this week, TWiR will include a status
update from Servo.
There were 14 landed PRs this week.
### Notable additions
- Patrick Walton rewrote flow construction so that we can make it incremental
and parallelizable in https://github.com/mozilla/servo/pull/1271
- Ryan Choi added support for transparant PNG files in
https://github.com/mozilla/servo/pull/1288
- Junyoung Cho added the ACID2 test file, which is one of the big focuses of
the team over the coming months, in
https://github.com/mozilla/servo/pull/1287
- In his first Servo PR, Adenilson Cavalcanti contributed a help message for
the binary in https://github.com/mozilla/servo/pull/1277
### Meetings
Having spent the prior week at a workweek with Samsung in Korea (where there
were several presentations on both Rust and Servo!
https://github.com/mozilla/servo/wiki/Videos-and-presentations ), the meeting
was pretty light this week. It mainly [covered](
https://github.com/mozilla/servo/wiki/Meeting-2013-11-18 ) getting more formal
tracking of the work required for ACID2 and prioritizing Windows support.

View File

@ -0,0 +1,170 @@
Title: This Week in Rust 25
Date: 2013-11-30 15:56
Category: This Week in Rust
Welcome to another issue of *This Week in Rust*, a weekly newsletter
summarizing Rust's progress and community activity. As always, if you have
something you'd like to be featured, just [send me an
email](mailto:corey@octayn.net?subject=This%20Week%20in%20Rust%20Suggestion).
Last week was very slow, but this week more than makes up for it I think!
Static linking landed, and there's been some nice cleanup of error messages
and various APIs.
<!-- more -->
# What's cooking on master?
59 PRs were merged this week.
## Breaking Changes
- Names of methods creating iterators have [changed
drastically](https://github.com/mozilla/rust/pull/10622) to remove the
`_iter` suffix. This reflects that iterators are a primary focus of APIs.
The PR description has all of the changes summarized.
- We now have [static linking
support](https://github.com/mozilla/rust/pull/10528)! It does, however,
involve some changes with how the `link` attribute works. The error messages
should guide you to the fixes.
- In preparation for the placement new changes, the `Path` constructor has
been [renamed from `new` to
`init`](https://github.com/mozilla/rust/pull/10697),.
- Some overly-permissive borrow checking for `&mut &mut` [has been
fixed](https://github.com/mozilla/rust/pull/10519). This is fairly obscure,
most code shouldn't have hit it.
- The parser is [more strict](https://github.com/mozilla/rust/pull/10642)
about what it accepts as a doc comment. Now, only `///` and `/**` are
counted as introducing doc comments (previously, `////` and `/***` would
also introduce a doc comment).
- `std::{uint, int}::{min, max}` [have been
removed](https://github.com/mozilla/rust/pull/10719). They were identical to
the functions in `std::cmp`, so use those instead.
- `extra::json` [has been rid of @
boxes](https://github.com/mozilla/rust/pull/10727), and now uses idiomatic
constructor names.
- The `type_id` intrinsic [now uses a language item as its return
value](https://github.com/mozilla/rust/pull/10722).
- Some [cleanup](https://github.com/mozilla/rust/pull/10662) has been done to
`std::rt::thread`, which is an interface to native threads (rather than
tasks).
- `do` blocks are [no longer
allowed](https://github.com/mozilla/rust/pull/10581) in non-`proc` contexts.
This means that `do` can not be used with a function whose last argument is
not a `proc`. A fairly large [thread on the mailing
list](https://mail.mozilla.org/pipermail/rust-dev/2013-November/006999.html)
is ongoing about this change.
- `LittleLock` now [uses RAII](https://github.com/mozilla/rust/pull/10660).
- C-like enums are [now represented as an
integer](https://github.com/mozilla/rust/pull/10652) rather than a struct,
at the LLVM level. This affects ABI.
- Linked failure [has been
removed](https://github.com/mozilla/rust/pull/10603) from the runtime.
- `extra::term` [no longer uses `@mut
Writer`](https://github.com/mozilla/rust/pull/10637), instead taking the
writer to use by value.
## Other changes
- `RefCell<T>`, previously known as `Mut<T>`, [has finally
landed](https://github.com/mozilla/rust/pull/10514), for all your dynamic
borrow checking needs.
- A lint for unknown attributes [has finally been
added](https://github.com/mozilla/rust/pull/10316). The compiler will now
warn when it sees an attribute it doesn't recognize.
- A lock-free [Chase-Lev
deque](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.170.1097&rep=rep1&type=pdf)
has [been added to the runtime](https://github.com/mozilla/rust/pull/10678).
- The shootout-spectralnorm benchmark [has been
resurrected](https://github.com/mozilla/rust/pull/10704).
- Unknown feature gates [are now
linted](https://github.com/mozilla/rust/pull/10680), rather than being a
hard failure.
- The AST is [now frozen](https://github.com/mozilla/rust/pull/10693)!
- `GenericPort` [now has an
iterator](https://github.com/mozilla/rust/pull/10688) over the messages it
receives.
- `NodeId`, `CrateNum`, `Name`, and `Mrk` (types in libsyntax) [have been
shrunk to 32 bits](https://github.com/mozilla/rust/pull/10670).
- The restriction on macros expanding to a single item [has been
lifted](https://github.com/mozilla/rust/pull/10649). This obviates the need
for macros hackily expanding to a module containing the desired items. Do
note that this only works when the macro is in "item position", or where an
item is expected. There is an
[issue](https://github.com/mozilla/rust/issues/10681) open for lifting this
restriction.
- A `thread_local` attribute [has been
added](https://github.com/mozilla/rust/pull/10312), which exposes a
platform's native TLS, a la C11/C++11 `thread_local`.
- Cross compilation to win64 (via mingw-w64) [is now
supported](https://github.com/mozilla/rust/pull/10578). There were also a
[bunch of fixes](https://github.com/mozilla/rust/pull/10631) on real win64.
- The parser gives a [better error
message](https://github.com/mozilla/rust/pull/10641) when it encounters an
unclosed delimiter it didn't expect.
- There is a [better error
message](https://github.com/mozilla/rust/pull/10475) when a module name is
used as a type (the motivating example being `impl SomeTrait for some_module`).
- JSON decoding [now gives better
errors](https://github.com/mozilla/rust/pull/10625).
- Linker optimizations are [now
used](https://github.com/mozilla/rust/pull/10620) on Linux.
## New contributors
Our first-time contributors this week are:
- Andreas Ots
- Eric Biggers
- Jannis Harder
- Kiet Tran
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-11-26)
discussed bootstrap times, the `thread_local` PR, mutexes, and the GC. In
particular, it was decided that we should have nightlies.
# 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.
This was a short week due to the US Thanksgiving holiday, but there were still
17 landed PRs this week.
## Notable additions
- Hyunjune Kim and Sammy Kim landed some border style extensions in
[#1276](http://github.com/mozilla/servo/pull/1322).
- Youngmin Yoo, Seonghyun Kim, and Jaemin Moon landed overflow:hidden in
[#1298](http://github.com/mozilla/servo/pull/1298).
- Isabelle Carter landed changing the unrendered portion of content to use the
doc's background color in [#1210](http://github.com/mozilla/servo/pull/1210).
- Patrick Walton has been experimenting with some very promising parallel
layout work, which he described in a
[message](https://groups.google.com/forum/#!topic/mozilla.dev.servo/1nKmBvFewIs)
to the mailing list.
## Meetings
This week's [meeting](https://github.com/mozilla/servo/wiki/Meeting-2013-11-25)
covered the poor situation with Nvidia support on Linux, fleshed out the string
interning plan during CSS selector parsing/matching, and went into some Servo
and Rust-related build issues.
# Announcements etc
Do note that all the links are pulled directly from the
[subreddit](https://reddit.com/r/rust).
- [Matrix Multiply Performance in Rust](http://www.reddit.com/r/rust/comments/1rf8rz/matrix_multiply_performance_in_rust/)
- [nrays](https://github.com/sebcrozet/nrays) - a 3d/4d raytracer
- [SprocketNES: Practical Systems Programming in
Rust](https://air.mozilla.org/sprocketnes-practical-systems-programming-in-rust/).
Contrary to the title, this is actually a recording of the presentations at
the Bay Area meetup.
- [uutils](https://github.com/uutils/coreutils) - an attempt at writing
universal (as in cross-platform) CLI utils in Rust
- [lbac](https://github.com/cmr/lets-build-a-compiler) - a Rust port of Jack
Crenshaw's "Let's Build a Compiler"

View File

@ -0,0 +1,155 @@
Title: This Week in Rust 26
Date: 2013-12-09 13:13
Category: This Week in Rust
Hello and welcome to another issue of *This Week in Rust*! It's a bit delayed
due to finals, but like the spinning of the Earth it goes on.
Shameless plug: [ask me to do
things](http://www.reddit.com/r/rust/comments/1sikak/ask_cmr_to_do_things/)
over my winter break!
<!-- more -->
# What's cooking on master?
52 PRs were merged this week.
## Breaking Changes
- The much-discussed [`Result` API
changes](https://github.com/mozilla/rust/pull/10364) have happened. The gist
of it is that `.ok()` and `.err()` return Options. The other changes didn't
land, I assume they will be coming later.
- The [JIT support has been
removed](https://github.com/mozilla/rust/pull/10758), due to lack of maintenance and upstream
changes (this came with the LLVM upgrade).
- Keywords (except self) are [no longer allowed as lifetime
parameters](https://github.com/mozilla/rust/pull/10675).
- `Path::init` has been [renamed](https://github.com/mozilla/rust/pull/10796)
back to `Path::new`.
- `std::str::from_utf8` [no longer
allocates](https://github.com/mozilla/rust/pull/10701).
- `std::util::ignore` [has been
renamed](https://github.com/mozilla/rust/pull/10701) to `std::prelude::drop`, to
better reflect what it does.
- Duplicate bindings are [no longer
allowed](https://github.com/mozilla/rust/pull/10776) in struct bindings. That
is, `let SomeStruct { foo, foo } = baz;` is no longer legal.
- Dynamic library propagation [is
reimplemented](https://github.com/mozilla/rust/pull/10777).
- `extra::c_vec` [has been
modernized](https://github.com/mozilla/rust/pull/10736).
- `MutableVector::mut_split` [has been
renamed](https://github.com/mozilla/rust/pull/10757) to `mut_split_at`.
## Other changes
- A part of the tutorial [has been
rewritten](https://github.com/mozilla/rust/pull/10690).
- Vim highlighting [has been
updated](https://github.com/mozilla/rust/pull/10793).
- `deriving` [has better error
messages](https://github.com/mozilla/rust/pull/10844).
- `StrSlice` has [grown some
documentation](https://github.com/mozilla/rust/pull/10824).
- Snapshots are now [statically
linked](https://github.com/mozilla/rust/pull/10809).
- From the "changes I don't really understand" department, [trait lifetime
parameters](https://github.com/mozilla/rust/pull/10506) are early bound in
associated functions.
- A race in the scheduler [has been
squelched](https://github.com/mozilla/rust/pull/10817).
- extra now has an [LRU cache](https://github.com/mozilla/rust/pull/10211).
- A `log_enabled!(level)` macro [has been
added](https://github.com/mozilla/rust/pull/10768), for checking if the
program is being run at a given log level.
- Static linking [now has docs](https://github.com/mozilla/rust/pull/10742)!
- Memory usage when compiling librustc has been killed by 130MB with some
[well-placed indirection](https://github.com/mozilla/rust/pull/10676).
- `MutableVector` has [another
iterator](https://github.com/mozilla/rust/pull/10739): `mut_chunks()`, for
iterating over mutable slices.
- The `reverse-complement` shootout benchmark [has been
rewritten](https://github.com/mozilla/rust/pull/10799).
## New contributors
- Alexandros Tasos
- Diego Ongaro
- Julia Evans
- osa1
# Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-12-03)
discussed using `box` for placement new, some rustpkg discussion, dropping the
dependency on a system C++ library, and the above `from_utf8` and `Result`
pull requests.
# 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.
We landed 19 PRs this week.
## Notable additions
- Simon Sapin added the CSS visibility property in
[#1331](https://github.com/mozilla/servo/pull/1331).
- Juneyoung Cho landed local bookmark navigation in
[#1262](https://github.com/mozilla/servo/pull/1262).
- ms2ger added reporting exceptions to JS when the DOM implementation fails in
[#1304](https://github.com/mozilla/servo/pull/1304).
- Keegan McAllister and Patrick Kim landed several changes to continue our
push to remove @-boxes to open up more of our data to safe parallel access
across task boundaries.
## New contributors
- Bruno de Oliveira Abinader
- Daniel Hedlund
## New intern
- Isabelle Carter will be joining us as part of the GNOME Outreach Program for
Women, [OPW]( https://wiki.gnome.org/OutreachProgramForWomen ), and will be
working on adding `position:fixed` support to Servo. The internship runs from
December 10 through March 10.
## Meetings
This week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2013-12-02) was short
and mostly covered some build system changes that Jack is working on. In
short, we will use Rust's static linking to make it easier to distribute a
Servo binary and we are making a larger change to CMake in order to get both
more reliable parallel/incremental builds and get support for
cross-compilation.
# Announcements etc
- [Evict-BT](http://www.reddit.com/r/rust/comments/1s5laq/evictbt_an_issue_tracker_written_in_rust_that/)
\- an issue tracker that integrates loosely with git.
- [Rust with
Emscripten](http://www.reddit.com/r/rust/comments/1s8c0j/rust_with_emscripten/)
- [Day 36: On programming without
malloc](http://www.reddit.com/r/rust/comments/1s3jgd/day_36_on_programming_without_malloc/)
- [Rust experience
report](http://www.reddit.com/r/rust/comments/1s3osp/blast_from_the_past_pre01_raytracer_rustdev_rust/)
\- a pre-0.1 raytracer and response to the language.
- [Rust frontend to
GCC](http://www.reddit.com/r/rust/comments/1s0aj5/rust_frontend_to_gcc/)
- [Types in Rust, for
Beginners](http://www.reddit.com/r/rust/comments/1ry4ym/types_in_rust_for_beginners/)
- [Thoughts on DST, part
4](http://www.reddit.com/r/rust/comments/1rxj0x/thoughts_on_dst_part_4_including_a_recap_of_parts/)
- [Slides from pnkfelix's codemash
presentation](http://pnkfelix.github.io/present-rust-codemesh2013/fklock-rust-codemesh2013.pdf).
- [An ML thread on redundant APIs involving
`Option`](http://www.reddit.com/r/rust/comments/1seoe1/lets_avoid_having_both_foo_and_foo_opt/)
- [What do you want in a Rust Docker
image?](http://www.reddit.com/r/rust/comments/1se6qa/rfc_what_do_you_want_in_a_rust_docker_image/)
- [A huge thread on lots of things
Rust](http://www.reddit.com/r/rust/comments/1s9y7o/less_is_more_lambda_the_ultimate/)
- [Rust bindings to
libsodium/NaCl](http://www.reddit.com/r/rust/comments/1s8opt/sodium_oxide_fast_cryptographic_library_for_rust/)

View File

@ -0,0 +1,150 @@
Title: This Week in Rust 27
Date: 2013-12-16 16:14
Category: This Week in Rust
Hello and welcome to another issue of *This Week in Rust*! It's late this week
because bors was having some issues which bounced every pull request, and it's
no fun writing about nothing.
<!-- more -->
# What's cooking on master?
61 PRs were merged this week.
## Breaking Changes
- The first part of the `box` changes [has
landed](https://github.com/mozilla/rust/pull/10929). `box` is a keyword, and
in an expression is now synonymous with `~` (ie, it allocates an owned box).
- `std::vec::raw` [has seen some
cleanup](https://github.com/mozilla/rust/pull/10984).
- Link meta attributes [have been
replaced](https://github.com/mozilla/rust/pull/10593) with a `pkgid`. rustdoc
[also now requires](https://github.com/mozilla/rust/pull/10948) a `pkgid`
attribute, rather than the deprecated link meta.
- Some fairly obscure import syntax [has been
changed](https://github.com/mozilla/rust/pull/10808). `use {foo, bar}` is now
permitted, and the old `use foo, bar` is not.
- `Cell` [has been removed](https://github.com/mozilla/rust/pull/10791).
`RefCell` supersedes it.
- Attempting to implement private traits [no longer
works](https://github.com/mozilla/rust/pull/10862).
- The coherence `-Z` flag [has been
removed](https://github.com/mozilla/rust/pull/10909).
- The `self` lifetime [is now
illegal](https://github.com/mozilla/rust/pull/10897), like the rest of the
keywords. Now, lifetime parameters are truly only identifiers.
## Other changes
- A dead code warning [has been
implemented](https://github.com/mozilla/rust/pull/10477). This is pretty
awesome and will do things like warn for test functions that are accidentally
never marked `#[test]` and so are never called. Some bugs in it were
[also](https://github.com/mozilla/rust/pull/10870)
[fixed](https://github.com/mozilla/rust/pull/10994).
- The benchmark runner [now
handles](https://github.com/mozilla/rust/pull/10952) slow benchmarks.
Previously, it wouldn't run a benchmark that took more than 1ms. Now, it will!
- The `shootout-fasta` benchmark [has been
rewritten](https://github.com/mozilla/rust/pull/10933). It's about 10x faster,
and looks nicer.
- Stepping through / breaking on function calls [no longer goes through the
function prelude](https://github.com/mozilla/rust/pull/10966).
- The vector `move_iter` [has been made
faster](https://github.com/mozilla/rust/pull/10995).
- A single [`#[inline]`](https://github.com/mozilla/rust/pull/10918) has made
`vec::from_elem` 20x faster
- `Buffer` [now has an iterator over its
lines](https://github.com/mozilla/rust/pull/10856). The gotcha is that the
newlines are included in the yielded strings.
- Struct pattern shorthand [has been
improved](https://github.com/mozilla/rust/pull/10833) by allowing ref/mut,
like `let Foo { mut x, .. } = some_foo`, rather than the previous `let Foo {
x: mut x, .. } = some_foo`.
- LTO (link time optimization) [has been
implemented](https://github.com/mozilla/rust/pull/10812). Rejoice.
- All landing pads (and thus unwinding!) [can now be
omitted](https://github.com/mozilla/rust/pull/10916) when doing LTO.
- `std::io::util` [has been added](https://github.com/mozilla/rust/pull/10895)
with:
- `LimitReader` that will only read `n` bytes from another reader
- `NullWriter` that ignores everything written to it
- `NullReader` that is always EOF
- `ZeroReader` which returns all zeroes,
- `MultiWriter` which will replicate a written buffer to many writers
- `ChainedReader` which reads readers in order to completion
- `TeeReader` which will write to a Writer while reading
- a `copy` function which copies the full contents of a reader into a writer.
- Windows application manifests [are now
embedded](https://github.com/mozilla/rust/pull/10878), so we don't get
special cased.
- A `--dep-info` flag [has been
added](https://github.com/mozilla/rust/pull/10698) which is like `-MMD` to C
compilers.
- `&mut` underneath `&` can [now be
frozen](https://github.com/mozilla/rust/pull/10787).
- `PortReader` and `ChanWriter` [have been
implemented](https://github.com/mozilla/rust/pull/10823).
- Some more random distributions [have been
implemented](https://github.com/mozilla/rust/pull/10859).
- We [now use](https://github.com/mozilla/rust/pull/10874) LLVM's integrated
assembler on Windows.
## New contributors
- Cadence Marseille
- Edward Z. Yang
- Erik Price
- Fabrice Desré
- Jan Niklas Hasse
- Richard Diamond
# Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-12-10)
discussed `enum mod`, using types to drive inference (rather than attributes
like `#[no_send]` etc), a formal grammar, unwinding, and some various PRs (all
mentioned above).
# 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.
We landed 29 PRs this week.
## Notable additions
- Patrick Walton landed a number of changes to layout to avoid going back to
the DOM for properties to make layout's access to the DOM more opaque. He also
cleaned up a significant number of regressions and added a huge number of ref
tests.
- Keegan McAllister made content tests work in headless mode in
[#1382](https://github.com/mozilla/servo/pull/1382).
- Daniel Glazman added namespace info to elements in
[#1358](https://github.com/mozilla/servo/pull/1358).
- Daniel Hedlund added support for leading font metrics on Linux
[#1352](https://github.com/mozilla/servo/pull/1352).
## Meetings
This week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2013-12-09) discussed
an upcoming Servo workweek in SF on January 20th. We also discussed the Rust
version update and some general team frustration at a large number of
regressions lately, primarily caused by the need to disable some of our
automated testing due to instability (particularly at shutdown). This week of
work saw many of those issues fixed.
# Announcements, etc
- [FAQ Cheatsheet](https://github.com/mozilla/rust/wiki/Doc-FAQ-Cheatsheet) -
A cookbook-style cheatsheet of how to do simple things, based on IRC FAQs.
- [Building Rust Code - Current
Issues](http://metajack.im/2013/12/11/building-rust-code--current-issues/)
- [Building Rust Code - Using
Make](http://metajack.im/2013/12/12/building-rust-code--using-make/)
- [A Rust port of kissdb](https://github.com/pirapira/kissdb-rust)
- [Reddit
discussion](http://www.reddit.com/r/rust/comments/1syapv/implement_the_new_box_syntax_for_unique_pointers/)
of the `box` change.

View File

@ -0,0 +1,142 @@
Title: This Week in Rust 29
Date: 2013-12-22 06:57
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)
This week brings a bunch of optimizations, cleanups, and the `std::comm`
rewrite. The `pkgid` attribute has also seen some changes.
<!-- more -->
This week also brings a bunch of tiny bugfixes, many of which I do not mention
below. Out of the 52 PRs this week, I only mention 16. The decision to include
a PR or not is fairly arbitrary, but I try to maintain a "significance
barrier" so that the list is not huge and hard to read (and also to save me
work!). Examples of things which I will stop including mentions of are test
fixes, minor documentation changes, build infrastructure fixes, and any
cleanup to the compiler that doesn't result in a relatively significant
speedup or memory usage decrease. I don't do this out of malice, but out of
laziness and convenience. `<3`
# What's cooking on master?
52 PRs were merged this week.
## Breaking Changes
- `std::comm` [has been
rewritten](https://github.com/mozilla/rust/pull/10830). In short, use
`Chan::new` and `SharedChan::new` to construct a Port/Chan pair. We're in the
ballpark of Go's performance, which is exciting. Read the PR for more details.
- Some more `std::vec::raw`
[cleanup](https://github.com/mozilla/rust/pull/10996) has turned some free
functions into methods. `.as_mut_buf` and friends [have also been
removed](https://github.com/mozilla/rust/pull/11029), replaced by using
`.as_ptr`, `.as_mut_ptr`, and `.len`.
- `extra::ebml` [has been partially
de-@d](https://github.com/mozilla/rust/pull/11057).
- A ton of useless traits, `ToOption` etc, [have been
removed](https://github.com/mozilla/rust/pull/10967).
- A nasty bug where having an `impl` for a type forced it to be public [has
been fixed](https://github.com/mozilla/rust/pull/11019). Some types which were
previously accessible may not be anymore, due to this.
- The `pkgid` crate attribute [has been
renamed](https://github.com/mozilla/rust/pull/11041) to `crate_id`.
- `extra::sort` [has been
removed](https://github.com/mozilla/rust/pull/11064), and there is now a
`sort` method on mutable slices (`&mut [T]`).
## Other Changes
- The `remove` and `insert` methods on vectors have had some unsafe code added
to make them [3x faster](https://github.com/mozilla/rust/pull/11061).
- The `sum` method on `extra::stat::Stat` [has been made more
accurate](https://github.com/mozilla/rust/pull/10927).
- debuginfo for by-value `self` [has been
fixed](https://github.com/mozilla/rust/pull/11033).
- `return` is now [allowed in
closures](https://github.com/mozilla/rust/pull/11024) for early return.
- `crate_id` (then `pkgid`) [now
supports](https://github.com/mozilla/rust/pull/10972) specifying the crate
name. `#foo:1.0` as the fragment will make the crate name `foo`, for example
`gl` in `github.com/bjz/gl-rs#gl:1.0`.
- A `Pod` kind [has been added](https://github.com/mozilla/rust/pull/10924)
for types where a memcpy is a logical copy. This behaves very similarly to the
old `Copy` kind.
- Stability attributes (`#[deprecated]`, `#[experimental]`, etc) [are now
checked for method calls](https://github.com/mozilla/rust/pull/10990).
- Metadata reading has been made [4x
faster](https://github.com/mozilla/rust/pull/11017).
- msys terminals are [now
supported](https://github.com/mozilla/rust/pull/11031) by `extra::term`.
## New Contributors
- Carter Tazio Schonwald
# Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-12-17)
discusses some pull requests, `pkgid`, renaming `extern mod`, the stdlib
module hierarchy, and renaming some of the vector methods.
# 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.
We landed 19 PRs this week.
## Notable additions
- Pradeep Kumar re-enabled parallel selector matching
[#1429](https://github.com/mozilla/servo/pull/1429).
- Daniel Hedlund fixed window redraw on Linux
[#1414](https://github.com/mozilla/servo/pull/1414).
- Tetsuharu Ohzeki significantly cleaned up the compositor source code in
[#1425](https://github.com/mozilla/servo/pull/1425).
- Simon Sapin added support for non-UTF8 stylesheets
[#1377](https://github.com/mozilla/servo/pull/1377).
- Patrick Walton cleaned up made several PRs that clean up layout's dependency
on DOM nodes.
- Isabelle Carter added support for positioned offsets for layout in
[#1407](https://github.com/mozilla/servo/pull/1407).
## Meetings
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2013-12-16), we
discussed using the Critic review tool from Opera with github. We are
currently experimenting it, with jgraham's support. Jack also discussed his
ongoing Rust upgrade which, as always, has uncovered several interesting Rust
compiler bugs.
We also sketched out our current planning
[roadmap](https://github.com/mozilla/servo/wiki/Roadmap), along with a cheat
sheet of some of the
[research](https://github.com/mozilla/servo/wiki/Research) topics we're also
investigating.
# Announcements, etc
- The SF meetup happened. It was recorded and [is available on Air
Mozilla](https://air.mozilla.org/rust-meetup-december-2013/). The video is
well worth watching.
- [A broad vision for the Rust docs
stack](http://www.reddit.com/r/rust/comments/1t87a3/a_broad_vision_for_the_rust_docs_stack/).
- [Two bugs in the borrow checker every Rust developer should know
about](http://blog.ezyang.com/2013/12/two-bugs-in-the-borrow-checker-every-rust-developer-should-know-about/).
- [Building Rust Code - Using Make Part
2](http://metajack.im/2013/12/19/building-rust-code--using-make-part-2/).
- [Video: 2D portaling demo in Rust and
rust-sdl2](http://www.reddit.com/r/rust/comments/1tdw88/video_2d_portaling_demo_in_rust_rustsdl2/).
- [What do you want in a Rust
book?](http://www.reddit.com/r/rust/comments/1teet8/what_do_you_want_in_a_rust_book/).
- [An etched copper Rust
logo](http://www.reddit.com/r/rust/comments/1tcat1/i_etched_myself_a_rust_logo/).
- [Ohcount Rust support](https://github.com/blackducksw/ohcount/pull/30) has
been merged, so hopefully ohloh will have more accurate information for Rust
projects soon.

View File

@ -0,0 +1,94 @@
Title: This Week in Rust 30
Date: 2013-12-30 00:48
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).
It's been a slow week due to the holidays. In the next week or two 0.9 is
being released. It's an exciting release, but in more subtler ways than the
previous 3. Many small details, especially around the runtime and linking,
have changed that make Rust faster and more flexible without necessarily being
a breaking change. As always, the detailed changelog will have the
nitty-gritties.
<!-- more -->
# What's cooking on master?
36 pull requests were merged this week. bors was feeling unwell for a bit,
due to a deadlock in a scheduler test that was fixed today and a deadlock in
(incorrect usage of) LLVM.
## Breaking changes
- The `comm` primitives are [never `Freeze`
anymore](https://github.com/mozilla/rust/pull/11111).
- The `link` attribute is [now
forbidden](https://github.com/mozilla/rust/pull/11091) on crates. All hail
`crate_id`!
- [All of our C++ dependencies have been
removed](https://github.com/mozilla/rust/pull/11121). This is only breaking
because it changes the debugging experience; `rust_begin_unwind` is gone and
`catch throw` doesn't work because we don't use C++ exceptions anymore. To set
a breakpoint on task failure, `break _Unwind_RaiseException`.
- The underbelly of the runtime has been [completely
overhauled](https://github.com/mozilla/rust/pull/10965). Alex wrote an [email
to the
list](https://mail.mozilla.org/pipermail/rust-dev/2013-December/007565.html)
about the practical implications of this.
- `std::result::collect` [now uses an
iterator](https://github.com/mozilla/rust/pull/11098).
- `ClonableIterator` [has been
renamed](https://github.com/mozilla/rust/pull/11160) to `CloneableIterator`.
## Other Changes
- libnative has [process and TCP](https://github.com/mozilla/rust/pull/11159)
implementations.
- Coercion of types into trait objects [is now
supported](https://github.com/mozilla/rust/pull/11156), which means `as
~SomeTrait` and `as &Reader` can be left out.
- I normally wouldn't mention this since it's internal to the compiler, but
Patrick made a heroic effort to [remove `@mut` from all the
places](https://github.com/mozilla/rust/pull/11058).
- rustdoc can [now test doc
comments](https://github.com/mozilla/rust/pull/11120). See the pull request
for details on how and what is tested (also in the rustdoc manual).
## New contributors
- Sébastien Paolacci
# Meeting
There was no meeting this week due to the holiday.
# 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.
Mozilla is on an extended holiday break until January 2nd, but we still landed
2 PRs this week.
## Notable additions
- Jack Moffitt re-enabled building with make to enable work on cross-targeting
ARM in [#1441](https://github.com/mozilla/servo/pull/1441).
- ms2ger cleaned up how we handle namespaces in DOM elements
[#1438](https://github.com/mozilla/servo/pull/1438)
# Announcements, etc
- [rust-openssl](https://mail.mozilla.org/pipermail/rust-dev/2013-December/007575.html)
has been formed from the union of sfackler's rust-ssl and erickt's rustcrypto.
- [Concurrency models, Rust, and
Servo](http://www.lars.com/concurrency/rust/servo/2013/12/21/concurrency-rust-and-servo.html).
- [Rust is surprisingly
expressive](http://words.steveklabnik.com/rust-is-surprisingly-expressive).
- [irust](https://mail.mozilla.org/pipermail/rust-dev/2013-December/007486.html),
a basic REPL written in Ruby.

View File

@ -0,0 +1,143 @@
Title: This Week in Rust 31
Date: 2014-01-06 01:09
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 is on the brink. Perhaps this week, the next at the latest. Some hefty
changes come this week.
<!-- more -->
# What's cooking on master?
63 pull requests were merged this week.
## Breaking changes
- `@mut` [has been removed](https://github.com/mozilla/rust/pull/11251). The
replacements are `Gc<RefCell<T>>` or, preferably, `Rc<RefCell<T>>`. See also
`Cell<T>` for `Pod` types.
- Dereferencing of unary tuple structs and enums (tuple structs with one field
and enums with one variant) [has been
removed](https://github.com/mozilla/rust/pull/11188). An example:
```
struct Foo(int);
fn bar() {
let x = Foo(42);
// previously `*x` would return 42
let Foo(y) = x; // but now you do this pattern matching
}
```
- `Either` [has been removed](https://github.com/mozilla/rust/pull/11149).
- `extern mod foo (name="bar")` syntax [has been
removed](https://github.com/mozilla/rust/pull/10696). The newer `extern mod
foo = "bar"` syntax replaces it.
- The hashmap iterators [have
changed](https://github.com/mozilla/rust/pull/11242). Use `.keys()` and
`.values()` respectively.
- rustc now outputs [1-based column
numbers](https://github.com/mozilla/rust/pull/11184). This shouldn't
affect any tooling that assume columns are 0-based. But, this brings us in
line with gcc.
- The `cfg` attribute [will now strip struct fields and enum
variants](https://github.com/mozilla/rust/pull/11093).
- The contents of the `crate_type` attribute [are now checked for
validity](https://github.com/mozilla/rust/pull/11264).
## Other changes
- `Reader`/`Writer` have regrown some functionality. It can now [read and
write strings](https://github.com/mozilla/rust/pull/10861), though *only* real
UTF-8 strings. Encoding support will come later. `write_char` [also
reappeared](https://github.com/mozilla/rust/pull/11310).
- Unwinding on ARM [has been
fixed](https://github.com/mozilla/rust/pull/11301). Still no C++!
- Native UDP IO [has been
implemented](https://github.com/mozilla/rust/pull/11186).
- A `rust_fail` function [has been
added](https://github.com/mozilla/rust/pull/11231). Break on this function to
catch failure. Should be easier to remember! Certainly better than
`_Unwind_RaiseException`.
- Some more C [has been converted to
Rust](https://github.com/mozilla/rust/pull/11208).
- volatile load and store intrinsics [have been
added](https://github.com/mozilla/rust/pull/11173).
Additionally, it hasn't landed yet, but [external syntax
extensions](https://github.com/mozilla/rust/pull/11151), aka loadable syntax
extensions, aka procedural macros, seem to be really close to landing. This is
quite exciting!
## New Contributors
- Alan Andrade
- Carl-Anton Ingmarsson
- John Louis Walker
- Peter Zotov
- lyuts
- Matthew Auld
# Meeting
Once again, no meeting due to the holidays. There will be one on January 7,
however.
# 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.
Mozilla Corp. came back from vacation this Thursday, January 2nd. We landed 14
PRs this week.
## Notable additions
- Aydin Kim fixed Android support - hooray! - in
[#1445](https://github.com/mozilla/servo/pull/1445).
- Mike Blumenkrantz cleaned up our configure script to avoid the "configure
smashed my submodule edits" problem in
[#1449](https://github.com/mozilla/servo/pull/1449).
- deokjinkim fixed several font-related issues in
[#1454](https://github.com/mozilla/servo/pull/1454) and
[#1452](https://github.com/mozilla/servo/pull/1452).
- Simon Sapin refactored font styles in
[#1455](https://github.com/mozilla/servo/pull/1455).
- Shamir Khodzha implemented `child_elements` for filtered iteration in
[#1443](https://github.com/mozilla/servo/pull/1443).
- ms2ger landed several changes to attributes in
[#1439](https://github.com/mozilla/servo/pull/1439),
[#1456](https://github.com/mozilla/servo/pull/1456), and
[#1460](https://github.com/mozilla/servo/pull/1460).
## New contributors
- Shamir Khodzha
- Mike Blumenkrantz
# Announcements, etc
- [DST, take
5](http://smallcultfollowing.com/babysteps/blog/2014/01/05/dst-take-5/). I
think this might be the last DST proposal, and I quite like it.
- [rust-redis and
rust-msgpack](https://mail.mozilla.org/pipermail/rust-dev/2014-January/007687.html).
- [A capnproto-rust and zmq
example](http://dwrensha.github.io/capnproto-rust/2014/01/04/zmq-explorers.html).
- [Post-mortem from the OS class taught in
Rust](http://www.reddit.com/r/rust/comments/1ucrfg/using_rust_for_an_undergraduate_os_course/).
- [Using CMake with
Rust](https://mail.mozilla.org/pipermail/rust-dev/2014-January/007659.html)
- [boehm-rs](https://github.com/huonw/boehm-rs), a `Gc<T>` type with a real
GC!
- [rust-OpenBLAS](https://github.com/wellposed/rust-OpenBLAS), a (in-progress)
library for using OpenBLAS and LAPACK.
- [libhttpd](https://github.com/WebeWizard/libhttpd/tree/master), a library
for writing web servers. Intended to be similar to jetty.

View File

@ -0,0 +1,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)

View File

@ -0,0 +1,100 @@
Title: The State of Rust 0.9
Date: 2014-01-12 21:13
Category: Rust
[Rust](http://www.rust-lang.org/) is a systems language pursuing the trifecta:
safe, concurrent, and fast. This is my post-mortem of the past 3 months, the
current status of Rust, and its future.
<!-- more -->
# Compiler
The compiler saw a fair bit of work this release cycle. Some polish has gone
into `mut` in patterns. For example, `let (mut x, y) = foo();` now works as
expected. We now have "feature gates", or feature flags, that let us mark
certain features as either deprecated or experimental and subject to change.
`@mut` has been removed. Slice representation has been optimized (we now store
number of elements, not number of bytes). Soundness bugs have been fixed, and
some bugs in our name resolution have been patched up. We have a dead code
warning, stability annotations, crate introspection, and lots more.
On top of all that, we also have support for static linking and LTO. Compiler
performance has further improved. From the 112ms compiling `fn main() { }` in
0.8, we now do 91ms with static linking (the default) and 68ms for dynamic
linking (`-Z prefer-dynamic`). Our debuginfo is in a much better state. The
entire codebase (compiler + standard library + tools) compiles with it, and
[Servo](https://github.com/mozilla/servo/) compiles with it by default.
# Runtime
The runtime has seen tons of work this release. `std::io` has been swapped
over to the new runtime, which is written entirely in Rust. We now support
both 1:1 and M:N threading models, their respective runtimes supplied by
"libnative" and "libgreen". libgreen (the "old new runtime") has seen some
performance improvements. Chris Morgan reports that the scalability of his
[rust-http](https://github.com/chris-morgan/rust-http/) benchmarks has
improved from 1.25x to 1.75x from 1 to 8 concurrent request handlers. On my
machine, using libnative gives an impressive performance boost, pushing us
ahead of go's performance (graph below). libnative has yet to see any optimization work.
David Renshaw reports roughly a 2x performance increase on his [capn proto
benchmark](http://dwrensha.github.io/capnproto-rust/2013/11/16/benchmark.html)
when using libnative for I/O.
<noscript>
<img src="https://docs.google.com/a/octayn.net/spreadsheet/oimg?key=0ArjzeYh7LqL2dENRREdRbDljajR4LWt1RlozM2YyY0E&oid=1&zx=xnqmqanhavt" />
<p>(This would be interactive if you had JavaScript enabled)</p>
</noscript>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/static/modules/gviz/1.0/chart.js"> {"dataSourceUrl":"//docs.google.com/a/octayn.net/spreadsheet/tq?key=0ArjzeYh7LqL2dENRREdRbDljajR4LWt1RlozM2YyY0E&transpose=0&headers=1&range=A1%3AE6&gid=0&pub=1","options":{"titleTextStyle":{"bold":true,"color":"#000","fontSize":16},"series":{"0":{"errorBars":{"errorType":"none","magnitude":10}}},"animation":{"duration":500},"width":600,"hAxis":{"title":"Concurrency (\"threads\")","useFormatFromData":true,"minValue":null,"viewWindowMode":null,"viewWindow":null,"maxValue":null},"vAxes":[{"useFormatFromData":true,"title":"Requests / second","minorGridlines":{"count":"4"},"minValue":null,"gridlines":{"count":"5"},"logScale":false,"viewWindow":{"max":null,"min":null},"maxValue":null},{"useFormatFromData":true,"minValue":null,"logScale":false,"viewWindow":{"max":null,"min":null},"maxValue":null}],"booleanRole":"certainty","title":"rust-http comparison benchmark","height":371,"domainAxis":{"direction":1},"legend":"right","focusTarget":"series","useFirstColumnAsDomain":true,"isStacked":false,"tooltip":{"trigger":"none"}},"state":{},"view":{"columns":[{"calc":"stringify","type":"string","sourceColumn":0},1,2,3,4]},"isDefaultVisualization":false,"chartType":"ColumnChart","chartName":"Chart 1"} </script>
You can run the benchmarks yourself. `cd comparisons; python run.py`. You'll
need to build rust-http first (`make`), and have go, nodejs, and ab (apache
bench) installed.
# Documentation
Our documentation hasn't been in the best state in the past. It still isn't
where it should be, but [they have been
reorganized](http://static.rust-lang.org/doc/master/index.html), on top of
seeing the usual work. We're in the process of moving all of the documentation
from the wiki onto that site, to make it easier to find and search. Steve
Klabnik gave a [critical but very constructive
presentation](https://air.mozilla.org/rust-meetup-december-2013/) at the Bay
Area meetup about what we are doing wrong and how we can improve. At the same
meetup, Chris Morgan talked about the technologies we use in our documentation
stack. In the long run, the consensus seems to be that reStructuredText and
Sphinx are they way forward. Thanks to the rustdoc rewrite, it will be able to
have first-class status as a documentation backend.
# The Future
For 0.10, we have [Dynamically Sized Types
(DST)](http://smallcultfollowing.com/babysteps/blog/2014/01/05/dst-take-5/) to
look forward to, as well as the removal of `@` pointers. `box`, aka "placement
new", along with smart pointer sugar (overloadable dereferencing/borrowing),
should also be in by then. We may also see an actual garbage collector.
# Is Rust Ready Yet?
Nope. It still has some work to do. 1.0 is estimated before the end of 2014,
though that may slip depending on how things land. An early estimate puts the
release over the summer! We still need a robust package manager. We now have
[rust-ci](http://rust-ci.org/), which makes it easy to keep code up to date,
and know if a library is up to date.
The breaking changes, especially language changes, are slowing down, besides
bug fixes. The standard library is also starting to shake itself out, though
it still has a lot of work before they will be stable. There are currently two
known uses of Rust in production: [Tilde](http://www.tilde.io/) is using it in
[Skylight](https://www.skylight.io/), and [OpenDNS](http://opendns.com) is
using it for [real-time data
processing](http://labs.umbrella.com/2013/10/04/zeromq-helping-us-block-malicious-domains/).
It has been a good release, and the next will be even better. Want to get
involved? [We love
contributions](https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors).
Want to follow development? I post a [weekly
newsletter](http://cmr.github.io/blog/categories/this-week-in-rust/)
summarizing the important changes. There is also a
[subreddit](http://reddit.com/r/rust). Here's to an awesome 0.10!

View File

@ -0,0 +1,185 @@
Title: This Week in Rust 33
Date: 2014-01-18 20:21
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 was a big week. rvalue lifetimes and external syntax extensions landed,
as well as a bunch of codegen optimization.
<!-- more -->
# What's cooking in master?
69 pull requests were merged this week. As of writing,
[bors](http://buildbot.rust-lang.org/bors/bors.html) has 14 approved pull
requests waiting.
## Breaking Changes
- `std::num`'s ongoing overhaul continues. It's going to be drastically
simplified, and not try to be a general-purpose numeric library.
[num-rs](https://github.com/bjz/num-rs) is intended to provide some base
algebraic types. [#11504](https://github.com/mozilla/rust/pull/11504) removes
gamma/bessel and does some cleanup of cmath.
[#11548](https://github.com/mozilla/rust/pull/11548) merges Bitwise and
BitCount and removes Bounded and Bitwise from the prelude.
[#11622](https://github.com/mozilla/rust/pull/11622) simplifies Primitive.
- Destructuring `@` patterns are [no longer
supported](https://github.com/mozilla/rust/pull/11305).
- The return type of `Chan::try_recv` has been extended to [indicate why it
did not return a value](https://github.com/mozilla/rust/pull/11112). That is,
whether there was legitimately no value, or if the other end had hung up.
- Disk-relative paths on Windows [are now properly
generated](https://github.com/mozilla/rust/pull/11579) when joining two paths.
- FromBase64 and FromHex [now use error
enums](https://github.com/mozilla/rust/pull/11597).
- `std::io` [has been shuffled around a
bit](https://github.com/mozilla/rust/pull/11598).
- (Almost?) all iterator types [have been
renamed](https://github.com/mozilla/rust/pull/11001).
- unsafe functions can [no longer be coerced to
closures](https://github.com/mozilla/rust/pull/11605).
- Unnecessary (useless) visibility modifiers on `use` and `extern mod` [are
now forbidden](https://github.com/mozilla/rust/pull/11607).
- Building on last week's per-task stdout/stderr, [rustc's error reporting has
been cleaned up significantly](https://github.com/mozilla/rust/pull/11620).
## Other Changes
- Externally loadable syntax extensions [have
landed](https://github.com/mozilla/rust/pull/11151)! We can now write
syntax extensions outside of the compiler, and export macros.
- The "rvalue lifetime" issue has seen some [significant work put into
it](https://github.com/mozilla/rust/pull/11585). Notably, `for x in [1, 2, 3,
4].iter() { .. }` should now work, among many other papercut annoyances with
rvalues.
- Error messages involving inferred integer types [are now much more
sane](https://github.com/mozilla/rust/pull/11513). Rather than `<V0>` or
`<VI1>`, it now prints `<generic integer #0>` etc.
- Accidentally including a semicolon on the last line of a function [now has a
better error message](https://github.com/mozilla/rust/pull/11482), if the
types line up.
- Some bugs with trait object coercion [have been
fixed](https://github.com/mozilla/rust/pull/11525).
- The runtime [now has its own
documentation](https://github.com/mozilla/rust/pull/11501), viewable
[here](http://static.rust-lang.org/doc/master/guide-runtime.html).
- rustdoc's search is now [more
forgiving](https://github.com/mozilla/rust/pull/11438) on the input it
accepts.
- Inserting into tries has been optimized significantly, [with no unsafe
code](https://github.com/mozilla/rust/pull/11546). Its iterator has [also been
optimized](https://github.com/mozilla/rust/pull/11497), albeit with unsafe
code.
- [The reference-counting headers have been
removed](https://github.com/mozilla/rust/pull/11535). The associated
"managed-unique" concept [has also been
removed](https://github.com/mozilla/rust/pull/11565).
- The recent OS X 10.9 breakage [should be
fixed](https://github.com/mozilla/rust/pull/11604), as we will no longer use
`ar s` on that platform.
## New Contributors
- Clinton Ryan
- Derek Guenther
- Lucy
- Petter Remen
- Shamir Khodzha
- Yehuda Katz
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-01-14)
discussed associated function resolution, changes to our calling convention
(specifically the fate of the ubiquitous environment pointer), how we want to
handle feature freeze, static items with destructors, and documentation on
primitives.
# Quotes of the Week
{% blockquote tjc on the Rust-the-game/Rust-the-language confusion %}
who says you can't make money selling a compiler? You can, as long as you
convince people it's a video game
{% endblockquote %}
{% blockquote eddyb %}
who needs pure functional when you have pure cool?
{% endblockquote %}
# 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.
This week, we landed 22 PRs. There will be a Servo workweek in the
Mozilla San Francisco office next week, Tuesday through Friday.
## Notable additions
- Jack Moffitt landed the huge Rust upgrade
[#1473](https://github.com/mozilla/servo/pull/1473), bringing us very close to
the 0.9 release. Hooray!
- Lars Bergstrom got NVidia-on-Linux working in
[#1487](https://github.com/mozilla/servo/pull/1487) and fixed the content test
reliability in [#1500](https://github.com/mozilla/servo/pull/1500).
- Tetsuharu Ohzeki implemented `removeAttribute` on Element in
[#1448](https://github.com/mozilla/servo/pull/1448).
- jgraham landed innerHTML support
[#1450](https://github.com/mozilla/servo/pull/1450).
- Bruno Abinader implemented several fixes related to DOMImplementation:
[#1497](https://github.com/mozilla/servo/pull/1497),
[#1488](https://github.com/mozilla/servo/pull/1488).
- Corey Richardson fixed up an error case in startup on Linux in
[#1502](https://github.com/mozilla/servo/pull/1502).
- Isabelle Carter landed the initial work for handling `position:fixed` in
[#1440](https://github.com/mozilla/servo/pull/1440).
## New Contributors
- Corey Richardson
## Meetings
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-01-13), we
discussed the need to clean up our test harnesses, the removal of `@` in
support of the next Rust upgrade, and the workweek..
# Announcements, etc
- [The first pure-Rust AES
implementation](https://github.com/DaGenix/rust-crypto/pull/21). According to
enix in IRC, this is also the first bit slicing implementation in a high level
language (ie, not assembly or a port of assembly).
- [rust-re2](https://github.com/nickdesaulniers/rust-re2), re2 bindings
- [A 30 Minute Introduction to
Rust](http://words.steveklabnik.com/a-30-minute-introduction-to-rust)
- [ObjCrust](https://github.com/shilgapira/ObjCrust), building an iOS static
library with Rust.A
- [The Periodic Table of Rust
Types](http://cosmic.mearie.org/2014/01/periodic-table-of-rust-types/)
- [Sodium Oxide](https://github.com/dnaq/sodiumoxide), NaCl bindings, updated
to 0.9
- [capnproto-rust benchmark
update](http://dwrensha.github.io/capnproto-rust/2014/01/15/benchmark-update.html)
- [rust-phf](https://github.com/sfackler/rust-phf), compile-time hash maps. It
also serves as a demonstration of loadable syntax extensions!
- [Rust has do-while
loops](http://www.reddit.com/r/rust/comments/1v9rgp/rust_has_dowhile_loops/),
a dirty hack no one should use.
- [Understanding Pointers, Ownership, and Lifetimes in
Rust](http://paulkoerbitz.de/posts/Understanding-Pointers-Ownership-and-Lifetimes-in-Rust.html)
- [A Just-in-time Compiler (Written) In
Rust](http://hydrocodedesign.com/2014/01/17/jit-just-in-time-compiler-rust/)
- [jba](https://github.com/alexcrichton/jba/tree/rust), a GameBoy emulator
written in Rust.

View File

@ -0,0 +1,153 @@
Title: This Week in Rust 34
Date: 2014-01-26 19:00
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 in master?
74 pull requests were merged this week.
## Breaking Changes
- Struct fields [now inherit the privacy of the struct
itself](https://github.com/mozilla/rust/pull/11777).
- A bug in instantiability checking (determining whether a value of a given
type could ever be constructed) [has been
fixed](https://github.com/mozilla/rust/pull/11661).
- `Zero` and `One` [have been tightened
up](https://github.com/mozilla/rust/pull/11664), and fewer types implement
them now.
- [A lot of things have changed](https://github.com/mozilla/rust/pull/11129)
regarding functions that fail or return Options. Almost everything that used
to fail now returns an Option instead.
- Many incorrect usages of types from `std::libc` [now use Rust
types](https://github.com/mozilla/rust/pull/10943). This might introduce an
extra `as` or few in code using these (relatively obscure) interfaces.
- `invert` on `DoubleEndedIterator` [has been
renamed](https://github.com/mozilla/rust/pull/11686) to `rev`.
- The numeric constants [have been
uppercased](https://github.com/mozilla/rust/pull/11790).
- Some privacy in std and extra [has been shuffled
around](https://github.com/mozilla/rust/pull/11808).
## Other Changes
- Most macros are [no longer injected as a hard-coded
string](https://github.com/mozilla/rust/pull/11774) and in fact live in
libstd.
- Using `-Z no-landing-pads` [actually disables landing pad
generation](https://github.com/mozilla/rust/pull/11653). It was accidentally
broken.
- The FFI documentation [now includes a section on
callbacks](https://github.com/mozilla/rust/pull/11486).
- A lint for unnecessary parens on control flow conditions etc [has been
added](https://github.com/mozilla/rust/pull/11663).
- Support for ARM's thumb instructions [has been
added](https://github.com/mozilla/rust/pull/11700).
- libnative [now implements
timers](https://github.com/mozilla/rust/pull/11294).
- There is now [exponential notation for float
formatting](https://github.com/mozilla/rust/pull/11611).
- `Vec<T>` [has been added](https://github.com/mozilla/rust/pull/11682), which
is intended to eventually replace `~[T]`.
- Borrow checker errors [now have better
spans](https://github.com/mozilla/rust/pull/11718) and should be more
understandable.
- It is now possible to [opt out of using
rpaths](https://github.com/mozilla/rust/pull/11744).
- libnative [now implements
`get_host_addresses`](https://github.com/mozilla/rust/pull/11732).
- A new synchronization primitive, Barrier, [has been
added](https://github.com/mozilla/rust/pull/11725).
## New Contributors
- Andre Arko
- Aydin Kim
- Ben Harris
- Ben Noordhuis
- Chris Wong
- Daniel MacDougall
- Hong Chulju
- Jake Greenfield
- Matthias Einwag
- Philippe Delrieu
- Salem Talha
- Sean Chalmers
- Trent Ogren
- Virgile Andreani
- comex
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-01-21)
discussed a bunch of open pull requests, but nothing too groudbreaking.
# 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.
This week, we landed 19 PRs and had a Servo workweek in the Mozilla San
Francisco office from Tuesday through Friday (Monday was a US federal
holiday).
## Notable additions
- Bruno Abinader implemented Document::createHTMLDocument in
[#1523](https://github.com/mozilla/servo/pull/1523).
- Patrick Walton implemented parallel layout for two of our three layout
passes in [#1493](https://github.com/mozilla/servo/pull/1493).
- Patrick Kim fixed computation of image box sizes in
[#1520](https://github.com/mozilla/servo/pull/1520) and text-decoration in
[#1506](https://github.com/mozilla/servo/pull/1506).
- Deokjin Kim landed the `white-space:pre` property in
[#1507](https://github.com/mozilla/servo/pull/1507).
- Aydin Kim and Lars Bergstrom landed fixes for Servo on Android.
- Teodor Szente fixed up a type signature in
[#1541](https://github.com/mozilla/servo/pull/1541).
- Lars Bergstrom changed ref tests so that they now emit a PNG showing the
image-diff between the baseline and incorrect rendering in
[#1544](https://github.com/mozilla/servo/pull/1544).
## New contributors
- Teodor Szente
## Meetings
There was no separate Servo meeting, but during the workweek we discussed
details in our designs for
[layers](https://etherpad.mozilla.org/Servo-workweek-layers), [generated
content](https://etherpad.mozilla.org/Servo-workweek-generated-content),
[tables](https://etherpad.mozilla.org/Servo-workweek-tables),
[HiDPI/pixels](https://etherpad.mozilla.org/Servo-workweek-pixels), and
[DisplayList
creation](https://etherpad.mozilla.org/Servo-workweek-displaylist).
# Announcements, etc
- [Rust contribution
ideas](https://mail.mozilla.org/pipermail/rust-dev/2014-January/008214.html)
- [RustAlgebloat](https://github.com/SiegeLord/RustAlgebloat), a linear
algebra library
- [Table of Potential Closure
Types](http://glaebhoerl.tumblr.com/rust_closure_types)
- [rust-ci
updates](https://mail.mozilla.org/pipermail/rust-dev/2014-January/008088.html),
categorization and documentation uploading
- [Channel API
proposal](http://thread.gmane.org/gmane.comp.lang.rust.devel/7848)

View File

@ -0,0 +1,189 @@
Title: This Week in Rust 35
Date: 2014-02-01 18:45
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 was a good week, with default type parameters, `do` removal, `@[]`
removal, and some code bloat reduction.
<!-- more -->
# What's cooking on master?
61 pull requests were merged this week.
## Breaking Changes
- `do` [has been removed](https://github.com/mozilla/rust/pull/11868). Replace
`do spawn { ... }` with `spawn(proc() { ... })`.
- `libextra` [has exploded](https://github.com/mozilla/rust/pull/11787). [It
exploded some more](https://github.com/mozilla/rust/pull/11867). It will
continue to explode until it no longer exists.
- `#[simd]` [has been feature
gated](https://github.com/mozilla/rust/pull/11738).
- We [now generate static
libraries](https://github.com/mozilla/rust/pull/11706) by default, rather than
dynamic libraries.
- `@[]` and `@str` [have been removed from the
language](https://github.com/mozilla/rust/pull/11974). All that is left is
`@T`!
- Various methods on vectors [now return
Options](https://github.com/mozilla/rust/pull/11944), to be in line with the
rest of everything else.
- `next_power_of_two_opt` [has been renamed
to](https://github.com/mozilla/rust/pull/11930) `checked_next_power_of_two`.
Additionally, the various functions for division in `std::uint` were removed.
- `#[no_send]` etc [have been removed in favor of marker
types](https://github.com/mozilla/rust/pull/11768). Additionally, variance of
types and lifetimes can explicitly be annotated with these marker types. They
are zero-sized and have no runtime impact.
- `std::borrow` [has been
removed](https://github.com/mozilla/rust/pull/11895).
- `Times` [has finally been
removed](https://github.com/mozilla/rust/pull/11672). Good riddance.
- The various `CopyableVector`-like types have [been
renamed](https://github.com/mozilla/rust/pull/11893) to
`CloneableVector` etc.
## Other Changes
- There are now lints for [unused
values](https://github.com/mozilla/rust/pull/11754). Types annotated with
`#[must_use]` will now warn when (surprise) their results are not used.
- debuginfo [should now be fixed on OS
X](https://github.com/mozilla/rust/pull/11864), due to us now explicitly
setting the DWARF version.
- `fp-elim` [has been re-disabled, but only if debuginfo generation is
disabled](https://github.com/mozilla/rust/pull/11879).
- Errors from `#[deriving(...)]` have
[seen](https://github.com/mozilla/rust/pull/11826) some
[work](https://github.com/mozilla/rust/pull/11834).
- The evil environment pointers [has been removed from bare
functions](https://github.com/mozilla/rust/pull/11595), as well as `self` now
being a mostly-normal argument, to the compiler. This was a huge effort (88
changed files with 1,436 additions and 2,138 deletions) by Eduard Burtescu,
and is awesome!
- Also from Eduard is [default type
parameters](https://github.com/mozilla/rust/pull/11217)! They are currently
behind a feature flag, but allow you to say, for example, `struct Foo<T =
uint>` and use `Foo` as a bare type.
- The tydesc [is used in less
places](https://github.com/mozilla/rust/pull/11909) to help fend off code
bloat.
- The occasional infinite recursion in some recursive types [has been
fixed](https://github.com/mozilla/rust/pull/11839).
- Take glue [has been removed from
tydescs](https://github.com/mozilla/rust/pull/11723), also to fend off code
bloat.
- `fail!()` [also generates less code
now](https://github.com/mozilla/rust/pull/11841), to fend off bloat. In
particular, `fn main() { fail!() }` now compiles 2-3x faster due to generating
less code.
## New Contributors
- JeremyLetang
- Johannes Muenzel
- Keshav Kini
- Michael Darakananda
- Nathaniel Herman
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-01-28)
discussed default type parameters, the unused result lint, minor changes to
the attribute syntax, how to deal with I/O splitting, and the visit glue.
# 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.
This week, we landed 32 PRs, significantly above our usual PR landing rate!
## Notable additions
- Patrick Walton landed a huge number of PRs that significantly improved our
performance and parallelism
[#1600](https://github.com/mozilla/servo/pull/1600),
[#1564](https://github.com/mozilla/servo/pull/1564),
[#1567](https://github.com/mozilla/servo/pull/1567),
[#1589](https://github.com/mozilla/servo/pull/1589),
[#1566](https://github.com/mozilla/servo/pull/1566)
[#1574](https://github.com/mozilla/servo/pull/1574),
[#1571](https://github.com/mozilla/servo/pull/1571),
[#1559](https://github.com/mozilla/servo/pull/1559), etc.
- Rui (xiongmao86) fixed a linking issue in our Makefiles in
[#1603](https://github.com/mozilla/servo/pull/1603).
- Isabelle Carter landed multiple display list support in
[#1579](https://github.com/mozilla/servo/pull/1579).
- Lars Bergstrom finally re-enabled ref tests in
[#1565](https://github.com/mozilla/servo/pull/1565) and started a quest to
improve test reliability in
[#1597](https://github.com/mozilla/servo/pull/1597) and
[#1570](https://github.com/mozilla/servo/pull/1570).
- Bruno Abinader pushed on more DOM features in
[#1583](https://github.com/mozilla/servo/pull/1583) and
[#1580](https://github.com/mozilla/servo/pull/1580).
- Clark Gaebel (wowus) enabled a limit on the number of redirects Servo
follows in [#1562](https://github.com/mozilla/servo/pull/1562).
- Tetsuharu Ohzeki cleaned up Node's `remove` and `insert` members
[#1582](https://github.com/mozilla/servo/pull/1582).
- Deokjin Kim implemented `whitespace:pre` in
[#1547](https://github.com/mozilla/servo/pull/1547).
- Patrick Kim landed border support for inline flows in
[#1546](https://github.com/mozilla/servo/pull/1546).
- Simon Sapin used his CSS wizardry to redo a performance tweak we made so
that it's actually spec-compliant in
[#1560](https://github.com/mozilla/servo/pull/1560).
## New contributors
- Clark Gaebel (wowus)
- Rui (xiongmao86)
## Meetings
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-01-27), we
discussed moving the build of fontconfig on Linux into Servo to avoid
situations where the system version is old and not threadsafe, what's blocking
the JSManaged conversion (which is required for our next Rust upgrade), and
the status of ref and content tests.
Josh Matthews is at FOSDEM this weekend, giving a
[talk](http://www.joshmatthews.net/fosdemservo/) on Servo. Look for video on
air.mozilla.org shortly!
# Announcements, etc
- [An xxHash implementation in
Rust](http://www.reddit.com/r/rust/comments/1wqjsf/more_xxhash_benchmarks/),
as well as some benchmarks comparing to gcc and clang.
- [Using LLVM From Within
Rust](http://hydrocodedesign.com/2014/01/31/llvm-with-rust/)
- [Felix's CodeMesh presentation](http://vimeo.com/85253071)
- [A 1.0 roadmap
spreadsheet](https://docs.google.com/a/octayn.net/spreadsheet/ccc?key=0AlWBWplsaTZvdGdSdEVzZW1BeDA5dm0zM2FFeW0ySEE&usp=drive_web#gid=0)
- [rust-lua](https://github.com/kballard/rust-lua), safe bindings to Lua 5.1
- [InfoQ interview with
Felix](http://www.infoq.com/interviews/klock-rust?utm_source=infoq&utm_medium=videos_homepage&utm_campaign=videos_row1#.Uupx3qddN-w.reddit)
- [Parameters and Bounds in
Rust](http://blog.safaribooksonline.com/2014/01/30/parameters-bounds-rust/)
- [Network Communication and Serialization in
Rust](http://blog.safaribooksonline.com/2014/01/28/network-communication-serialization-rust/)
- [Recording of the Bay Area Rust January
meetup](https://air.mozilla.org/rust-meetup-january-2014/), wherein Brian
talks about 1.0, Niko talks about DST, Kevin talks about rust-lua, and I talk
about evangelism.
- [Deprecating
rustpkg](https://mail.mozilla.org/pipermail/rust-dev/2014-January/008224.html)

View File

@ -0,0 +1,229 @@
Title: This Week in Rust 36
Date: 2014-02-09 22: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).
There were a surprising number of breaking changes this week. The [libextra
dissolution continues](https://github.com/mozilla/rust/issues/8784). Condition
removal and the IO error overhaul also landed. `rustpkg` was also removed, and
rustc's CLI interface has changed. Additionally, Rust gained another
full-time developer! A big hello to Nick Cameron, I look forward to seeing his
work.
It was also [discovered](http://octoverse.github.com/) that we closed the
second largest number of issues of any repository on GitHub! We trailed behind
homebrew, which is almost cheating, because they use it to track issues on
over five thousand packages. Good job everyone!
<!-- more -->
# What's cooking on master?
72 pull requests were merged this week.
## Breaking Changes
- Some intrinsics [have been
moved](https://github.com/mozilla/rust/pull/12124) into `std::mem`, in
preparations of the intrinsics no longer being publically exposed.
- A soundness regression [has been
fixed](https://github.com/mozilla/rust/pull/12117).
- `char` [now has range asserts](https://github.com/mozilla/rust/pull/12086).
This may cause invalid uses of `char` (using invalid values) to break.
- The various traits in `std::fmt` [now use
`&self`](https://github.com/mozilla/rust/pull/12066), rather than a separate
parameter with an argument of type `&Self`.
- `@self` and `@Trait` (managed trait objects) [have been
removed](https://github.com/mozilla/rust/pull/12030).
- `rustpkg` [has been removed](https://github.com/mozilla/rust/pull/11987).
- `std::fmt::Default` [has been
renamed](https://github.com/mozilla/rust/pull/11948) to `Show`.
- IO errors [have been completely
overhauled](https://github.com/mozilla/rust/pull/11946), and no longer use
conditions. Alex wrote [an
email](https://mail.mozilla.org/pipermail/rust-dev/2014-February/008505.html)
to the mailing list summarizing the changes. Especially take note of the
`if_ok!` macro.
- Conditions [have been removed
entirely](https://github.com/mozilla/rust/pull/12039). A detailed post-mortem
is available on the pull request.
- `rustc` has seen some work on its interface. The output flags [have been
unified](https://github.com/mozilla/rust/pull/12020), replacing `-c`,
`--emit-llvm`, `-S`, `--dylib`, `--rlib`, etc with two arguments: `--emit` and
`--crate-type`. There is [another PR in the
queue](https://github.com/mozilla/rust/pull/12084) that replaces a bunch of
miscellaneous flags behind `-C`. It will likely land shortly, and is something
to be aware of.
- `NonCopyable` [has been renamed](https://github.com/mozilla/rust/pull/12016)
to `NoPod` to be consistent with the rest of the "marker types".
- `reserve` naming [has been shuffled around
slightly](https://github.com/mozilla/rust/pull/11951). `reserve` becomes
`reserve_exact` and `reserve_at_least` becomes `reserve`.
- `SendStr` [has been removed](https://github.com/mozilla/rust/pull/12098) in
favor of a `MaybeOwned` type.
As part of the libextra dissolution, the following crates have been
introduced:
- [`libcollections`](https://github.com/mozilla/rust/pull/12010), which has
inherited `Bitv`, `BTree`, `Deque`, `DList`, `List`, `LruCache`,
`PriorityQueue`, `RingBuf`, `SmallIntMap`, `TreeMap`, and `TreeSet`.
- [`libgetopts`](https://github.com/mozilla/rust/pull/12007), which has
inherited `extra::getopts`. Additionally, `getopts::groups` is now the *only*
interface. It has been moved up a level, into just `getopts`, and the old
functions have been removed.
- [`libserialize`](https://github.com/mozilla/rust/pull/11984), which has
inherited `extra::serialize` and `extra::ebml`.
- [`libuuid`](https://github.com/mozilla/rust/pull/11912), which has inherited
`extra::uuid`.
- [`libsemver`](https://github.com/mozilla/rust/pull/12012), which has
inherited `extra::semver`.
- [`libterm`](https://github.com/mozilla/rust/pull/11945), which has inherited
`extra::term` and `extra::terminfo`.
All crates are still documented, and there is a list with links at
<http://static.rust-lang.org/doc/master/index.html>.
## Other Changes
- A `black_box` function [has been added to
`extra::test`](https://github.com/mozilla/rust/pull/12105), and the `iter`
method on BenchHarness can now return values. As
[documented](https://github.com/mozilla/rust/pull/12119) ([generated
version](http://static.rust-lang.org/doc/master/guide-testing.html#benchmarks-and-the-optimizer)),
these exist to make sure that LLVM will not optimize out benchmarks.
- A `fourcc!` syntax extension [has been
added](https://github.com/mozilla/rust/pull/12034).
- A `unimplemented!` macro [has been
added](https://github.com/mozilla/rust/pull/12090), used much the same as
`unreachable!()`.
- The [runtime libraries [have gained
examples](https://github.com/mozilla/rust/pull/12073), and
[libgreen](http://static.rust-lang.org/doc/master/green/index.html) now has an
explanation of how it is structured at a high level, specifically where
concurrency and parallelism come from.
- A `from_utf8_lossy` function [has been
added](https://github.com/mozilla/rust/pull/12062) that replaces invalid
codepoints with the unicode replacement character (<28>).
- Network streams [are now
cloneable](https://github.com/mozilla/rust/pull/11894). This allows for
multiple tasks reading/writing a `TcpStream`.
- A copy-on-write Arc container [has been added to
libextra](https://github.com/mozilla/rust/pull/11230), though it's now in
`libcontainers`.
- SIMD types [are now allowed in
generics](https://github.com/mozilla/rust/pull/11717).
- A new mutex type that plays well with the various runtimes [has been
implemented](https://github.com/mozilla/rust/pull/11866). It is in the same
ballpark as native, pthread mutexes.
## New Contributors
- Arcterus
- Cole Mickens
- Colin Sherratt
- HeroesGrave
- Ivan Enderlin
- James Deng
- João Souls
- Marek Šuppa
- Q.P.Liu
- Yuri Kunde Schlesner
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-02-04)
discussed adding a `libprim`, operator overloading, and the 1.0 goals for
LLVM.
# Meetups
- There will be a meetup [in
Paris](http://www.eventbrite.fr/e/billets-rust-paris-meetup-10528169037), on
February 25, from 18:30 to 23:30.
- [Bay Area Rust](http://www.meetup.com/Rust-Bay-Area/events/156288462/) will
be meeting February 25, at 19:00 in San Francisco. David Renshaw will be
talking about Cap' Proto, Steven Fackler will be talking about exportable
macros, and Kevin Cantu about testing.
# 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.
This week, we landed 14 PRs, but there are a substantial number of very
close pending PRs that add major layout features to Servo (e.g., lists
markers, tables, initial pseudo-class and pseudo-element support).
## Notable additions
- Bruno Abinader continued with his great DOM additions in
[#1634](https://github.com/mozilla/servo/pull/1634) and
[#1622](https://github.com/mozilla/servo/pull/1622) and
[#1604](https://github.com/mozilla/servo/pull/1604)
- Patrick Kim fixed borders on inline boxes in
[#1577](https://github.com/mozilla/servo/pull/1577) and landed
`position:relative` support in
[#1613](https://github.com/mozilla/servo/pull/1613)
- Patrick Walton further improved layout performance in
[#1630](https://github.com/mozilla/servo/pull/1630) and
[#1615](https://github.com/mozilla/servo/pull/1615)
- Adrien Bustany fixed `insertBefore` in
[#1621](https://github.com/mozilla/servo/pull/1621)
- Lars Bergstrom landed reftest stabilization fixes in
[#1623](https://github.com/mozilla/servo/pull/1623) - we are almost ready to
gate landing commits on content and ref tests passing on Linux, once we get
more fonts [installed](https://bugzilla.mozilla.org/show_bug.cgi?id=968375)
on our Linux buildbots
## New contributors
- Adrien Bustany (abustany)
## Meetings
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-02-03), we mainly
discussed display list construction with respect to layering and stacking
contexts.
Josh Matthews' talk on Servo at FOSDEM is available
[here](http://mirrors.dotsrc.org/fosdem/2014/UD2218A/Saturday/Servo_building_a_parallel_web_browser.webm).
# Announcements, etc
- [Lazily initialized
statics](http://www.reddit.com/r/rust/comments/1wvxcn/lazily_initialized_statics/)
- [Rust gains a new full-time developer, Nick
Cameron](http://www.reddit.com/r/rust/comments/1wypbz/rust_gains_a_new_fulltime_developer_nick_cameron/).
- [Handling I/O
Errors](http://www.reddit.com/r/rust/comments/1wz7ws/handling_io_errors/)
- [Pure-Rust Adler32 and
CRC32](http://www.reddit.com/r/rust/comments/1x0zeu/adler32_and_crc32/)
- [Closures and the borrow
checker](http://www.reddit.com/r/rust/comments/1x1tvo/closures_and_the_borrow_checker/)
- [Pure-Rust LZW Compression
Algorithm](http://www.reddit.com/r/rust/comments/1x3ooy/lzw_compression_algorithm/)
- [Rust by Example: Default arguments,
etc](http://www.reddit.com/r/rust/comments/1x67wq/rust_by_example_default_arguments_named_params/)
- [Standalone rust
app](http://www.reddit.com/r/rust/comments/1xaum0/standalone_rust_app/)
- [IDE support?](http://www.reddit.com/r/rust/comments/1xfjo7/ide_support/)
- [Playing with the new Rust I/O error
handling](http://www.reddit.com/r/rust/comments/1xdlou/playing_with_the_new_rust_io_error_handling/)
- [Another failed attempt at parser
combinators](http://www.reddit.com/r/rust/comments/1xdudv/another_failed_attempt_at_parser_combinators/)
- [A case for reflection in
Rust](http://www.reddit.com/r/rust/comments/1xck76/a_case_for_reflection_in_rust/)
- [A persistent map implementation, like in Clojure and Scala, with
performance
numbers](http://www.reddit.com/r/rust/comments/1xa8uy/a_persistent_map_implementation_like_in_clojure/).

View File

@ -0,0 +1,156 @@
Title: This Week in Rust 37
Date: 2014-02-15 23:20
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?
86 pull requests were merged this week. This ties for week with most merged
pull requests. [A week in September 2013 is the other record
holder](http://cmr.github.io/blog/2013/09/23/this-week-in-rust/). To cope with
the massively inflated queue, there were two roll-ups (not counted).
## Breaking Changes
- `extern mod` [is now written](https://github.com/mozilla/rust/pull/12017)
`extern crate`.
- The big codegen compiler flags pull request I warned about last week [indeed
landed](https://github.com/mozilla/rust/pull/12084). Many `-Z` options are now
under `-C`, and a lot of previously-bare flags (such as `--linker`) are now
also under `-C`.
- `std::util` [has been removed](https://github.com/mozilla/rust/pull/11956).
`swap` and `replace` now live in `std::mem`.
- `do` is once again [a reserved
word](https://github.com/mozilla/rust/pull/12170).
- `extra::rational`, `extra::bigint`, and `extra::complex` [have been
moved](https://github.com/mozilla/rust/pull/12154) into `libnum` as part of
the libextra dissolution.
- The borrow checker's treatment of closures [has been
revamped](https://github.com/mozilla/rust/pull/12158). It fixes all known
soundness issues with closures. Unfortunately, it also breaks some programs
that used to compile.
- Channels [have been rewritten](https://github.com/mozilla/rust/pull/11578)
to use the internally-upgradable design [that was hashed out on the
list](https://mail.mozilla.org/pipermail/rust-dev/2014-January/007924.html).
Rather than having a separate `SharedChan`, `Chan` is now cloneable.
- The `Seek` API [has changed a
bit](https://github.com/mozilla/rust/pull/12204).
- The breaking changes in the [first
rollup](https://github.com/mozilla/rust/pull/12248) are the removal of
`ptr::offset`, `ptr::mut_offset`, `ptr::is_null`, and `ptr::is_not_null` as
free functions and the movement of `extra::hex` and `extra::base64` to
`libserialize`.
- `std::num::Orderable` [has been
removed](https://github.com/mozilla/rust/pull/12061).
- `std::ptr` [saw some more
cleanup](https://github.com/mozilla/rust/pull/12282), most notably every
function ending in `_ptr` has had that suffix removed. `to_unsafe_ptr` and
`to_mut_unsafe_ptr` have also been removed.
## Other Changes
- Process arguments and environment variables [now use the
`from_utf8_lossy` function](https://github.com/mozilla/rust/pull/12283) that
was introduced last week, rather than failing on invalid utf8. Additionally,
there are now `args_as_bytes` and `env_as_bytes` functions to get arguments
and the environment raw.
- The makefiles [have been
refactored](https://github.com/mozilla/rust/pull/12274), and there is now a
`make help` and `make tips` for hints on how to use the build system.
- In yet another multi-thousand-line patch by eddyb, [`ast_map::Path` no
longer requires cloning](https://github.com/mozilla/rust/pull/12162), due to
clever devilry.
- green task spawning [was sped up by almost
5x](https://github.com/mozilla/rust/pull/12172).
- We now [bundle and use
compiler-rt](https://github.com/mozilla/rust/pull/12027) for intrinsics rather
than using the system libgcc. We still depend on libgcc for unwinding,
- The pidigits benchmark was made 20x faster [by optimizing
bigint](https://github.com/alexcrichton/rust/commit/7dc187afd8a19dad05dbf1a689e6b6f400f7bc0a).
## New Contributors
- Bruno de Oliveira Abinader
- Eduard Bopp
- Edward Wang
- Jake Kerr
- Liigo Zhuang
- Matthijs van der Vleuten
- Peiyong Lin
- Tobias Bucher
- WebeWizard
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-02-11)
discussed struct construction sugar, what to allow in statics, the crate
keyword, a `finally` macro, and implicit trait bounds.
# 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.
This week, we landed 18 PRs.
## Notable additions
- Bruno Abinader landed several DOM fixes, including
[#1648](https://github.com/mozilla/servo/pull/1648) and
[#1646](https://github.com/mozilla/servo/pull/1646)
- Hyun June Kim landed initial `:hover` support in
[#1633](https://github.com/mozilla/servo/pull/1633)
- Keegan McAllister restored task failure handling in
[#1691](https://github.com/mozilla/servo/pull/1691)
- Rui renamed the .rc files to .rs in the main Servo repository in
[#1617](https://github.com/mozilla/servo/pull/1617)
- Simon Sapin made some updates to attribute selector namespaces in
[#1653](https://github.com/mozilla/servo/pull/1653) and
[#1661](https://github.com/mozilla/servo/pull/1661)
- Lars Bergstrom began the removal of non-script-crate `@mut`s in preparation
for a Rust upgrade in [#1663](https://github.com/mozilla/servo/pull/1663)
- Austin King added some `window.console` support in
[#1666](https://github.com/mozilla/servo/pull/1666)
- Marek Šuppa landed a fix to our contributing document in
[#1649](https://github.com/mozilla/servo/pull/1649)
- Patrick Walton made extensive optimizations to style sharing in
[#1644](https://github.com/mozilla/servo/pull/1644)
## New contributors
- Austin King (ozten)
- Marek Šuppa (mrshu)
## Meetings
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-02-10), we
discussed our embedding plans, ACID2 status, improving the availability of
E-Easy issues, and doing a Rust upgrade (we are more than one month behind
Rust master).
# Announcements, etc
There is simply too much happening in the community to keep track of! I
recommend browsing [the Rust subreddit](http://www.reddit.com/r/rust) for
goings-on. Some notable ones:
- [Rust By Example:
HashMap](http://pzol.github.io/getting_rusty/posts/20140203_hashmap/)
- [State machines using phantom
types](https://gist.github.com/bvssvni/8970459)
- [golo-lang.org](http://golo-lang.org/)'s homepage design [adapted to
Rust](http://adridu59.github.io/rust-www/). There is some discussion [on
reddit](http://www.reddit.com/r/rust/comments/1xx3ll/rfc_gololangorg_ported_to_rust/)
about this.

View File

@ -0,0 +1,173 @@
Title: This Week in Rust 38
Date: 2014-02-23 16:09
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 is the busiest week in This Week in Rust's history, [and the pull request
queue isn't getting any
shorter](http://buildbot.rust-lang.org/bors/bors.html). This is a mixed
blessing: tons of work is getting done, but it takes forever to get merged.
<!-- more -->
# What's cooking on master?
89 pull requests were merged this week. This is the most pull requests merged
in a week, ever. 10 1.0 issues were closed this week, and 0 opened.
## Breaking Changes
- Unique vector patterns (matching on a `~[]`) [has been removed from the
language](https://github.com/mozilla/rust/pull/12244). One can still match
against a slice.
- `std::unstable` [has been
dismantled](https://github.com/mozilla/rust/pull/12311). Even as we march
towards 1.0 stability, I will still consider changes to any public interface
breaking.
- `Bitwise::population_count` [has been
renamed](https://github.com/mozilla/rust/pull/12331) to
`Bitwise::count_ones`.
- `TaskBuilder` [has seen some
cleanup](https://github.com/mozilla/rust/pull/12232) to actually use the
emerging "builder" pattern.
- As part of `std::num`s [continued
revamp](https://github.com/mozilla/rust/issues/10387), [the `Real` trait has
been dismantled](https://github.com/mozilla/rust/pull/12321) in favor of the
`Float` trait.
- Another issue with imports [has been
fixed](https://github.com/mozilla/rust/pull/12245). In particular, when
importing an item where there are two items with the name, one private and one
public, the private one was accidentally imported too. This shouldn't affect
any code, as it's a fairly convoluted case.
- UTF-16 handling [has been
refactored](https://github.com/mozilla/rust/pull/12317) to match the standard
string APIs.
- `extra::test` [has been
liberated](https://github.com/mozilla/rust/pull/12343) into a `libtest`.
- `extra::time` [has been
liberated](https://github.com/mozilla/rust/pull/12411) into a `libtime`.
- `EnumSet` [has been moved](https://github.com/mozilla/rust/pull/12415) into
`libcollections`.
- The `Integer` trait [has
migrated](https://github.com/mozilla/rust/pull/12326) to `libnum`.
- `std::hash` [has been rewritten and
redesigned](https://github.com/mozilla/rust/pull/11863).
- `std::trie` and `std::hashmap` [have been
moved](https://github.com/mozilla/rust/pull/12428) into `libcollections`.
## Other Changes
- Pull request 12345 was opened. In the spirit of significant arbitrary
numbers, [it is absolutely
menial](https://github.com/mozilla/rust/pull/12345).
- `rustdoc` [will now test code blocks by
default](https://github.com/mozilla/rust/pull/12298), not requiring a "rust"
annotation.
- Unix domain sockets [are now
implemented](https://github.com/mozilla/rust/pull/12103) in `libnative`.
- `MutexArc` [no longer has a `Freeze`
bound](https://github.com/mozilla/rust/pull/12336).
- rustdoc has seen [a bunch of minor
fixes](https://github.com/mozilla/rust/pull/12339).
- More noteworthy, there is now [syntax
highlighting](https://github.com/mozilla/rust/pull/12416) in rustdoc output!
- The `unnecessary_parens` lint [now looks at
assignments](https://github.com/mozilla/rust/pull/12366) for extraneous
parenthesis.
- A bug with infinitely recursing macro errors [has been
fixed](https://github.com/mozilla/rust/pull/12370).
- `std::str::is_utf8` [has been internally
refactored](https://github.com/mozilla/rust/pull/12314) to use 100% safe code,
as well as get a bit of a speed boost.
- `format!` [now handles temporaries
better](https://github.com/mozilla/rust/pull/12349).
- If you find yourself working with libsyntax, [there is now a `-Z`
option](https://github.com/mozilla/rust/pull/12387) for dumping the AST as
JSON. This can be useful when trying to figure out what code corresponds to
what structure or enum variant.
- Using channels outside of the runtime [has been
fixed](https://github.com/mozilla/rust/pull/12397).
- Generic Drop implementations with trait bounds [has been
fixed](https://github.com/mozilla/rust/pull/12403). Yay!
- Integer formatting [has been
rewritten](https://github.com/mozilla/rust/pull/12382). It's now cleaner, does
less allocation, and is 3-6x faster in many cases.
- `std::io::stdin` [is now buffered by
default](https://github.com/mozilla/rust/pull/12422).
- All language items [must now be
reachable](https://github.com/mozilla/rust/pull/11603). Previously this caused
a linker error.
## New Contributors
- Axel Viala
- Craig MacKenzie
- Douglas Young
- Dylan Braithwaite
- Ehsanul Hoque
- Sterling Greene
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-02-18)
discussed the Hash changes, debug assertions, and commit log administrivia.
# 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.
This week, we landed 15 PRs.
## Notable additions
- Sankha Narayan Guria made drawing a single line much more efficient in
[#1709](https://github.com/mozilla/servo/pull/1709)
- Lars Bergstrom removed the last of the `@mut`s not in script in
[#1712](https://github.com/mozilla/servo/pull/1712)
- Junyoung Cho fixed up a bug where we were removing `&nbsp;`s in
[#1727](https://github.com/mozilla/servo/issues/1727)
- Youngmin Yoo added support for the `<object>` element in
[#1664](https://github.com/mozilla/servo/pull/1664)
- Keegan McAllister made use of the border box more consistent in layout
in [#1699](https://github.com/mozilla/servo/pull/1699)
- Peiyong Lin fixed up the naming of some of our flow methods in
[#1693](https://github.com/mozilla/servo/pull/1693)
- Simon Sapin refactored the `cascade` methods in
[#1706](https://github.com/mozilla/servo/pull/1706)
- Adam Sinnett corrected the parent type names of Text, Comment, and PI
types in [#1702](https://github.com/mozilla/servo/pull/1702)
- Patrick Walton added some inlining that sped up flow contruction even
more in [#1602](https://github.com/mozilla/servo/pull/1602)
## New contributors
- Peiyong Lin (lpy)
- Adam Sinnett (quandrum)
## Meetings
We did not have a meeting this week because of President's Day in the US.
# Announcements, etc
- [`rust-story`](https://github.com/drbawb/rust-story), a Rust port of the
"Reconstructing Cave Story" video series
- [`rust-gamedev-kit`](http://www.reddit.com/r/rust/comments/1y69r0/rlanerustgamedevkit/),
a collection of libraries for gamedev
- [Periodic Table of Rust
Types](http://www.reddit.com/r/rust/comments/1yfdzh/the_periodic_table_of_rust_types/)
- [A Dominion simulator, in
Rust](http://www.reddit.com/r/rust/comments/1ykop6/so_i_wrote_a_dominion_simulator_in_rust_though/)
- [Travis CI is building pull
requests](https://mail.mozilla.org/pipermail/rust-dev/2014-February/008763.html)
- [A terminal tetris game, in
Rust](http://www.reddit.com/r/rust/comments/1yr2uz/tetris_game_in_rust/)

View File

@ -0,0 +1,170 @@
Title: This Week in Rust 39
Date: 2014-03-02 12:43
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?
83 pull requests were merged this week.
## Breaking Changes
- IterBytes and `std::to_bytes` [have been
removed](https://github.com/mozilla/rust/pull/12492). If you were depending on
them for anything non-`Hash` related, look into using `serialize` instead.
- `break` and `continue` [are now hygienic in
macros](https://github.com/mozilla/rust/pull/12338), with respect to labels.
Unfortunately there's a bug in it where [loop labels hide variables of the
same name](https://github.com/mozilla/rust/issues/12512).
- `extern fn` [now always means `extern "C"
fn`](https://github.com/mozilla/rust/pull/12328), rather than being
context-dependent.
- `std::run` [has been removed](https://github.com/mozilla/rust/pull/12380),
and `std::io::process` improved to pick up the slack.
- `#[deriving(ToStr)]` [has been
removed](https://github.com/mozilla/rust/pull/12412) in favor of
`#[deriving(Show)]`. `ToStr` is now implemented over all types which implement
`Show`, as `format!("{}" val)`.
- `flate` [now returns a
`CVec<u8>`](https://github.com/mozilla/rust/pull/12445) rather than a `~[u8]`,
for efficiency.
- `extra::json` [has been
liberated](https://github.com/mozilla/rust/pull/12453) and now lives in
`libserialize`.
- `swap_remove` on vectors [now returns an
`Option`](https://github.com/mozilla/rust/pull/12481).
- A curious bug where bindings in match weren't treated as assignment [has
been fixed](https://github.com/mozilla/rust/pull/12508). See the associated
bug report for examples which this will break.
- Some useless reexports [have been
removed](https://github.com/mozilla/rust/pull/12485) from the prelude.
- The `Bool` trait [has been
removed](https://github.com/mozilla/rust/pull/12473).
- A bug where operator overloads were over-zealous [has been
fixed](https://github.com/mozilla/rust/pull/12493).
- Statics are [no longer allowed to contain anything with
destructors](https://github.com/mozilla/rust/pull/11979). The exact rules are
laid out quite nicely in the PR.
- `collections:List` [has been refactored to use
iterators](https://github.com/mozilla/rust/pull/12348).
- `HashMap` [is now generic over
hashers](https://github.com/mozilla/rust/pull/12544).
- `assert_eq!` [now uses `{}` instead of `{:?}` for the error
message](https://github.com/mozilla/rust/pull/12626).
- Type parameter overrides [are now feature
gated](https://github.com/mozilla/rust/pull/12525).
## Other Changes
- Invalid crate handling [is now more
graceful](https://github.com/mozilla/rust/pull/12645).
- `std::io::stdout()` and `stderr()` [are buffered by default
now](https://github.com/mozilla/rust/pull/12630).
- Improper operator overloads [are no longer an
ICE](https://github.com/mozilla/rust/pull/12638).
- There's now a warning for [publicly exposing private types in function
signatures](https://github.com/mozilla/rust/pull/12595).
- `libnative`'s Windows file handling [has been
rewritten](https://github.com/mozilla/rust/pull/12584) and now actually works.
rustc uses libnative by default now.
- Generated binary size [has been brought down a
bit](https://github.com/mozilla/rust/pull/12616). There is much more room for
improvement.
- "Strict Version Hashes" [have been
introduced](https://github.com/mozilla/rust/pull/12533). This is a purely
internal change. The hash is of the crate's public ABI and rustc checks this
when linking crates together, to avoid problems such as "def id drift".
## New Contributors
- Daniel Fagnan
- Felix Crux
- Gary M. Josack
- George Papanikolaou
- Jag Talon
- Johannes Löthberg
- Mickaël Delahaye
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-02-25)
discussed TotalEq/TotalOrd, weak extern functions, channel naming, and a brief
discussion on `use` paths being absolute.
It was announced that a Sam Wright has been contracted to work on the
tutorial, and the Michael Woerister has been contracted to work on debug info.
# 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.
This week, we landed 27 PRs.
## Notable additions
- Josh Matthews landed the massive changes to remove `@mut` from the DOM types
in preparation for a Rust upgrade in
[#1735](https://github.com/mozilla/servo/pull/1735)
[#1591](https://github.com/mozilla/servo/pull/1591) and
[#1755](https://github.com/mozilla/servo/pull/1755).
- Tetsuharu Ohzeki refactored our commandline options out of the rendering
crate and into a more reasonable place in
[#1738](https://github.com/mozilla/servo/pull/1738).
- Ms2ger simplified our Document implementation in
[#1739](https://github.com/mozilla/servo/pull/1739).
- Patrick Walton removed the need to explicitly create leaf sets during
parallel layout in [#1700](https://github.com/mozilla/servo/pull/1700).
- Harrison Gentry cleaned up some type names in
[#1781](https://github.com/mozilla/servo/pull/1781).
- Keegan McAllister moved fontconfig in-tree on Linux in order to get a
thread-safe implementation in
[#1780](https://github.com/mozilla/servo/pull/1780).
- Saurabh Anand made the DOM parser pass in the correct content types in
[#1775](https://github.com/mozilla/servo/pull/1775).
- tgkokk fixed the bindings generator to no longer produce .pyc files in
[#1735](https://github.com/mozilla/servo/pull/1735).
## New contributors
- Saurabh Anand (sawrubh)
- Harrison Gentry (hgentry)
- tgkokk
## Meetings
At this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-02-24), we
discussed embedding, the JSManaged conversion, a Rust upgrade, vtables, and
recruiting efforts.
# Announcements, etc
- [RFC: Opt-in Builtin
Traits](http://smallcultfollowing.com/babysteps/blog/2014/02/28/rust-rfc-opt-in-builtin-traits/)
- [Structural single-inheritance
counter-proposal](https://github.com/mozilla/rust/issues/9912#issuecomment-36073562)
- [RFC: Stronger Guarantees for Mutable
Borrows](http://smallcultfollowing.com/babysteps/blog/2014/02/25/rust-rfc-stronger-guarantees-for-mutable-borrows/)
- [Dark](https://github.com/kvark/dark), an experimental universal data
compressor based on the BWT-DC scheme
- [cargo-lite
v1.1.0 release](https://mail.mozilla.org/pipermail/rust-dev/2014-March/008832.html)
- [Revamped parallel layout in
servo](http://pcwalton.github.io/blog/2014/02/25/revamped-parallel-layout-in-servo/)
- [February Bay Area Rust
Recording](https://air.mozilla.org/rust-meetup-february-2014/)
- [A bloom filter implementation](https://github.com/brianmadden/rust-bloom-filter)
- [A tweening library](https://github.com/hoeppnertill/redox-tween)

View File

@ -0,0 +1,80 @@
Title: This Week in Rust 40
Date: 2014-03-11 23:45
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 was the Winter Workweek.
<!-- more -->
# What's cooking on master?
66 pull requests were merged this week.
## Breaking Changes
- `Any` [has been cleaned up](https://github.com/mozilla/rust/pull/12667), and
in particular the `as_void_ptr` and `as_mut_void_ptr` methods are gone.
- Patterns are [no longer allowed in extern function
declarations](https://github.com/mozilla/rust/pull/12715). Previously, they
either silently passed or ICEd.
- Comparison traits [have been
reworked](https://github.com/mozilla/rust/pull/12520).
- DeepClone [has been removed](https://github.com/mozilla/rust/pull/12706).
- Compound assignment (eg, `+=`) [is no longer
allowed](https://github.com/mozilla/rust/pull/12733) on potentially
uninitialized variables.
- `std::rand` [has been moved into a
`librand`](https://github.com/mozilla/rust/pull/12650).
- debuginfo flags [have changed
slightly](https://github.com/mozilla/rust/pull/12714), and more limited
debuginfo is supported again (only line number information).
## Other Changes
- Dereferencing [is now
overloadable](https://github.com/mozilla/rust/pull/12491). This is another
part of the smart pointer changes. Code like `let x = *Rc::new(5);` is now
valid. There is a follow-up pull request that will automatically dereference
smart pointers where appropriate, to avoid expressions like
`foo.borrow().get().borrow_mut().get()`.
- Hexadecimal floating point literals [are now
available](https://github.com/mozilla/rust/pull/12652) through a syntax
extension.
- Support for creating binary installer tarballs [has
landed](https://github.com/mozilla/rust/pull/12793).
- Linker arguments [are no longer
deduplicated](https://github.com/mozilla/rust/pull/12688).
- Weak linkage etc [is now
possible](https://github.com/mozilla/rust/pull/12556) via a `linkage`
attribute.
## New Contributors
- Dmitry Promsky
- Mike Boutin
- Robert Gawdzik
# Weekly Meeting
There was no weekly meeting due to the workweek. There are [notes and
minutes](https://github.com/mozilla/rust/wiki/Meeting-workweek-2014-03-03),
however, and there will be many [RFCs](https://github.com/rust-lang/rfcs) from
it.
# Announcements, etc
- [Leveraging tuples to make a statically-typed, concatenative
EDSL](http://www.reddit.com/r/rust/comments/20143y/leveraging_tuples_to_make_a_statically_typed/)
- [Subtyping and coercion in
Rust](http://featherweightmusings.blogspot.com/2014/03/subtyping-and-coercion-in-rust.html)
- [Rust support for the Atom
editor](http://www.reddit.com/r/rust/comments/1ztahv/rust_language_support_in_atom/)

View File

@ -0,0 +1,195 @@
Title: This Week in Rust 41
Date: 2014-03-15 23:33
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?
66 pull requests were merged this week.
## Breaking Changes
- Some more string methods [now return
Option](https://github.com/mozilla/rust/pull/12797).
- Matching on `~str` [has been
removed](https://github.com/mozilla/rust/pull/12756).
- IO iterators [now yield
IoResult](https://github.com/mozilla/rust/pull/12414).
- The channel types and constructor [have been
renamed](https://github.com/mozilla/rust/pull/12815). `Chan` is now `Sender`,
`Port` is now `Receiver`, and `Chan::new` is now `std::comm::channel`.
- `std::cmp::{min, max}` [now require
TotalOrd](https://github.com/mozilla/rust/pull/12869). For floats, use
`a.min(b)`.
- The handling of `cfg(not(a, b))` [has changed
slightly](https://github.com/mozilla/rust/pull/12893).
- `libextra` [has finally been
purged](https://github.com/mozilla/rust/pull/12896).
## Other Changes
- Another great PR from the illustrious ktt3ja, the compiler [will now give
suggestions](https://github.com/mozilla/rust/pull/12238) on how to fix
lifetime woes. This is an awesome usability improvement.
- Implementations of `Deref` and `DerefMut` [are now
considered](https://github.com/mozilla/rust/pull/12610) for automatic
dereferencing.
- Partial type hints [are now
implemented](https://github.com/mozilla/rust/pull/12764), but not at the item
level (in function returns etc). The eventual goal is to have
`some_iter.collect::<Vec<_>>()` be possible.
- There is a [new
guide](http://static.rust-lang.org/doc/master/guide-unsafe.html) for "low level and unsafe code".
[PR](https://github.com/mozilla/rust/pull/12887).
- There is now a lint for [uses of
`~[T]`](https://github.com/mozilla/rust/pull/12861). It's very verbose. The
replacement for `~[T]`, as recommended by the lint, is `std::vec_ng::Vec<T>`.
It implements almost everything `~[T]` does.
- `HashMap` [has been
reimplemented](https://github.com/mozilla/rust/pull/12081) to use [Robin Hood
hashing](http://codecapsule.com/2013/11/11/robin-hood-hashing/). It's now much
more faster, and uses less space.
- Support for basic backtracing [has been
reimplemented](https://github.com/mozilla/rust/pull/12602).
- `char` [now has simple case
folding](https://github.com/mozilla/rust/pull/12561). That is, basic
locale-ignorant case conversion.
- Inline assembly [now supports the `+`
modifier](https://github.com/mozilla/rust/pull/12798).
## New Contributors
- Adolfo Ochagavía
- Clark Gaebel
- Peter Marheine
- Piotr Czarnecki
- Piotr Zolnierek
- Robert Gawdzik
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-03-11)
discussed the new hashmap, destructuring the `self` argument, partial type
hints, coercion of returned values, as well as the requirements of unsafe
pointers and the continued existence of `*mut`.
# 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.
In the last two weeks, we landed 56 PRs.
## Notable additions
- Patrick Walton made fixes to ACID in
[#1905](https://github.com/mozilla/servo/pull/1905)
- Along with about 20 other PRs, ms2ger brought WindowTimers up to date with
the spec in [#1890](https://github.com/mozilla/servo/pull/1890)
- Pradeep Kumar implemented `position:absolute` in
[#1681](https://github.com/mozilla/servo/pull/1681) and fixed up relative
positioning in [#1808](https://github.com/mozilla/servo/pull/1808)
- Bill Yang fixed up our instructions for installation on Ubuntu Linux in
[#1881](https://github.com/mozilla/servo/pull/1881)
- Bruno Abinader fixed up HTMLCollection in
[#1838](https://github.com/mozilla/servo/pull/1838)
- Isabelle Carter ensured that children of `position:fixed` items make it into
the correct DisplayList in [#1832](https://github.com/mozilla/servo/pull/1832)
- Manish Goregaokar made `getElementsByName` return a `NodeList` in
[#1756](https://github.com/mozilla/servo/pull/1756)
- Keegan McAllister cleaned up our reftest harness and made them test both the
CPU and GPU rendering paths in
[#1804](https://github.com/mozilla/servo/pull/1804)
## New contributors
- Bill Yang (analyst74)
- Manish Goregaokar (manishearth)
## Meetings and Notes
At this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-03-10), we
discussed HTML parsing, embedding, writing modes, the ACID2 burndown, and the
Rust upgrade.
# RFCs
[We have a new RFC
process](https://github.com/rust-lang/rfcs/blob/master/active/0001-rfc-process.md)!
Every week I'll list the new RFCs and RFCs that have been accepted.
Contributing to the discussions around these RFCs is the easiest way to drive
the design of Rust.
As an aside, I will no longer include any RFCs in the "Announcements" section
that are not sent to the RFC repository.
- [Private Fields by Default](https://github.com/rust-lang/rfcs/pull/1)
- [Rearchitecting the attribute-usage lint](https://github.com/rust-lang/rfcs/pull/3)
- [Unified Function Call Syntax](https://github.com/rust-lang/rfcs/pull/4)
- [Virtual Structs](https://github.com/rust-lang/rfcs/pull/5)
- [Add OsUnknown as a target operating system](https://github.com/rust-lang/rfcs/pull/7)
- [Redesign Compiler Intrinsics](https://github.com/rust-lang/rfcs/pull/8)
- ["Fat Objects" for DSTs](https://github.com/rust-lang/rfcs/pull/9), an
alternative to "Virtual Structs".
# Project Updates
[rust-bencode](https://github.com/arjantop/rust-bencode), a pure Rust
implementation of Bencode encoding.
[Bencode](http://en.wikipedia.org/wiki/Bencode) is used primarily in the
BitTorrent protocol. This implementation leverages the `serialize` crate for
automatic Encodable/Decodable implementation as well as custom, more flexible
FromBencode/ToBencode traits.
[Lazily initialized statics v0.2](https://gist.github.com/Kimundi/8782487).
This makes safe use of statics for types which require runtime initialization
almost trivial. It utilizes the recent overloadable deref to do optional
initialization before returning the reference to the wrapped type. It's an
example that the right amount of abstractions, but syntactic (macros) and
semantic (operator overloading) can reduce boilerplate for a more pleasant
experience.
[Racer](https://github.com/phildawes/racer) - code completion for Rust. This
project is in its early stages, but can already do a fair bit of useful
completion. It is not using the parser (libsyntax) or compiler (librustc), so
it will likely always be inaccurate in some respect. Nevertheless, this may
prove to be an incredibly useful tool.
[QuickCheck for Rust](https://github.com/BurntSushi/quickcheck). This has some
seriously great docs. QuickCheck, originally from Haskell, is a way of doing
property-based testing. You describe certain properties your code should have
and it generates random inputs, trying to find inputs that violate those
properties. This is a modern, featureful port of QuickCheck and hopefully gets
even more useful as time goes on.
The [coreutils port](https://github.com/uutils/coreutils) is still alive and
making progress. 32 out of 119 programs are implemented. This is a great
project to contribute to if you want a relatively self-contained,
goal-oriented task. It's great practice both for learning Unix* (some of these
utilities are quirky or not-frequently-used) and Rust.
\* Well, specifically GNU, which as we all know, [ain't
Unix](https://en.wikipedia.org/wiki/GNU).
# Other Announcements
- [Under The Hood Of Mozilla's New Multi-Core Browser And The Open Source
Language That Powers
It](http://www.fastcolabs.com/3027664/under-the-hood-of-mozillas-new-multi-core-browser-and-the-open-source-language-that-powers-i)
- [Bay Area Rust, March 2014
Meetup](http://www.reddit.com/r/rust/comments/20ct5c/march_meetup_live_stream_link_oss_parallel_layout/)
- [Writing an OS in Rust in tiny
steps](http://www.reddit.com/r/rust/comments/20aj03/writing_an_os_in_rust_in_tiny_steps_steps_15/)
- ["Virtual fn" is a bad
idea](http://thread.gmane.org/gmane.comp.lang.rust.devel/8878)

View File

@ -0,0 +1,176 @@
Title: This Week in Rust 42
Date: 2014-03-24 23:33
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 weeks flips the switch from libgreen-by-default to libnative-by-default.
<!-- more -->
# What's cooking on master?
91 pull requests were merged this week, topping the [previous
record](http://cmr.github.io/blog/2014/02/23/this-week-in-rust/) of 89.
## Breaking Changes
- Logging [has been extracted to its own
crate](https://github.com/mozilla/rust/pull/12791). Using the logging macros
(`debug!` etc) now requires a `#[phase(syntax, link)] extern crate log;`.
- The `AtomicFlag` type [has been
removed](https://github.com/mozilla/rust/pull/12951).
- `std::vec` [has been renamed](https://github.com/mozilla/rust/pull/12772) to
`std::slice`, and the old `std::vec_ng` [moved into its
place](https://github.com/mozilla/rust/pull/13028).
- A `Share` built-in trait [has been
added](https://github.com/mozilla/rust/pull/12686). It also adds an
`Unsafe<T>` type, which is now the *only* "safe" way of achieving internal
mutability (what the `Cell` types etc do). This `Share` trait means that the
type is thread-safe. See the pull request for more details. In particular,
taking the address of a static who contains an `Unsafe` member is not
allowed.
- `std::cast::transmute_immut_unsafe` [has been
removed](https://github.com/mozilla/rust/pull/13015) because it is
expressible by safe code.
- `libnative` [is now the default
runtime](https://github.com/mozilla/rust/pull/12833). In the process, the
`#[no_uv]` attribute was renamed to `#[no_start]`.
- Atomics [no longer require mutable references to
change](https://github.com/mozilla/rust/pull/13036), due to the work on
`Share`, they can safely use interior mutability. Additionally, the generic
atomics have been hidden and `AtomicU64` has been removed, because not all
targets support it.
- The `push_bytes` and `read_bytes` methods on `Reader` and `Writer` [have
been renamed](https://github.com/mozilla/rust/pull/12907) for clarity.
- `RefCell::with` and `RefCell::with_mut` [have been
removed](https://github.com/mozilla/rust/pull/13052), because the Deref
changes make them unnecessary.
- The `get` methods on `Ref` and `RefMut` (helpers returned by `RefCell`)
[have been removed](https://github.com/mozilla/rust/pull/13053), because
the Deref changes make them unnecessary.
- The `Freeze` trait [has been
removed](https://github.com/mozilla/rust/pull/13076)
- `std::managed` [has been
removed](https://github.com/mozilla/rust/pull/13089) from the public API.
- `HashMap` [now correctly uses
`TotalEq`](https://github.com/mozilla/rust/pull/13088).
- The `to_owned_vec` method on `Iterator` [has been
removed](https://github.com/mozilla/rust/pull/13090).
- The `equals` method [has been
removed](https://github.com/mozilla/rust/pull/13102) from `TotalEq`, due to
the recent changes in `TotalEq`'s semantics.
- Trait implementations may [no
longer](https://github.com/mozilla/rust/pull/13006) implement a method
twice.
## Other Changes
- Some bugs with cross-crate autoderef [have been
fixed](https://github.com/mozilla/rust/pull/13087).
- Some Windows issues with non-English locales [have been
fixed](https://github.com/mozilla/rust/pull/13078).
- Removing two words from a structure in libsyntax [shaved 100MB off the
librustc compile](https://github.com/mozilla/rust/pull/13016).
- Some well-placed indirection in librustc [shaved 200MB off the librustc
compile](https://github.com/mozilla/rust/pull/13013).
- Discarding some data after it's no longer useful [shaved another 100MB off
the librustc compile](https://github.com/mozilla/rust/pull/12770).
- The new attribute syntax [has been
implemented](https://github.com/mozilla/rust/pull/13037), though the old has
not yet been replaced.
- `Vec` is [now in the prelude](https://github.com/mozilla/rust/pull/13020),
as well as the lint for uses of `~[T]` being made allow by default.
- Some false positives for crate searching [have been
fixed](https://github.com/mozilla/rust/pull/13017).
- A few bugs with struct ABI on x86 [have been
fixed](https://github.com/mozilla/rust/pull/12762).
- Mutable slices in `static mut` [are now
allowed](https://github.com/mozilla/rust/pull/12742).
- Some `@` has been removed from rustc, [yielding an 11k line
patch](https://github.com/mozilla/rust/pull/12735).
- `bigint` [has seen some
optimization](https://github.com/mozilla/rust/pull/12924), though not major.
The [doc sprint](http://www.meetup.com/Rust-Bay-Area/events/168366122/)
happened last week. A bunch of pull requests for docs for this landed:
- `std::ops` (from the rollup)
- [`time::Tm`](https://github.com/mozilla/rust/pull/12940)
- [`getopts`](https://github.com/mozilla/rust/pull/12942)
- [Endian conversion in
`std::mem`](https://github.com/mozilla/rust/pull/12944)
- [`std::sync::atomics`](https://github.com/mozilla/rust/pull/12954)
- [`std::vec_ng`](https://github.com/mozilla/rust/pull/12955)
- [`std::option`](https://github.com/mozilla/rust/pull/12982)
- [`term`](https://github.com/mozilla/rust/pull/12948)
## New Contributors
- Eunchong Yu
- Jonathan S
- Jorge Aparicio
- Ms2ger
- Olle Jonsson
- Ryan Scheel (Havvy)
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-03-18)
discussed using GitHub for RFCs, the docsprint, and one of the RFCs.
# RFCs
Some new RFCs:
- [Tweaked Variance Inference](https://github.com/rust-lang/rfcs/pull/12)
- Another struct inheritance RFC, [extending
enums](https://github.com/rust-lang/rfcs/pull/11)
- Another one, [`abstract struct` and `abstract
enum`](https://github.com/rust-lang/rfcs/pull/10)
- [Unsurprising module imports](https://github.com/rust-lang/rfcs/pull/18)
- [`Iterable` trait family](https://github.com/rust-lang/rfcs/pull/17)
- [Attributes on match arms and
statements](https://github.com/rust-lang/rfcs/pull/16)
- [SIMD Support](https://github.com/rust-lang/rfcs/pull/15)
- [Opt-in builtin traits](https://github.com/rust-lang/rfcs/pull/19)
# Project Updates
[rustfind](https://github.com/dobkeratops/rustfind), doomlord's code browser
for Rust, [has been updated](http://www.reddit.com/r/rust/comments/20q3uz/rustfind_code_browser/).
This is a very nice librustc-integrated tool that supports jump-to-definition.
Relatedly, I'm reminded of [unfold](https://github.com/dobkeratops/unfold),
doomlord's tool for displaying "brace context" of code. It includes an "rg"
script, which is a simple grep for item definitions.
In leiu of a "This Week in Servo", Servo [has been making
progress](http://imgur.com/a/O667X) on [Acid2](http://acid2.acidtests.org/).
# Other Announcements
- [Memory Management in C Programs](http://nethack4.org/blog/memory.html) --
this is a very well written article from the nethack team. All the concepts
discussed within apply to Rust.
- [Dynamically Sized Types in
Rust](http://blog.babelmonkeys.de/2014/03/18/dst.html)
- [Announcing the new Rust package manager,
Cargo](https://mail.mozilla.org/pipermail/rust-dev/2014-March/009087.html).
It's on [github](https://github.com/carlhuda/cargo).
- [Rust is in the next DWARF
standard!](http://dwarfstd.org/ShowIssue.php?issue=140129.1)
- [A success story of Rust and
emscripten](http://www.reddit.com/r/rust/comments/20nnkk/rust_and_emscripten_a_small_success/)
- [A Rust meetup group in
London](http://www.meetup.com/Rust-London-User-Group/)
- [Subtyping and coercion in
Rust](http://featherweightmusings.blogspot.com.br/2014/03/subtyping-and-coercion-in-rust.html)

View File

@ -0,0 +1,155 @@
Title: This Week in Rust 43
Date: 2014-03-29 21:56
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).
The 0.10 release will likely be this week. 3 months from 0.9 is April 3.
<!-- more -->
# What's cooking on master?
63 pull requests were merged this week.
## Breaking Changes
- The `sync` crate [has seen some significant
cleanup](https://github.com/mozilla/rust/pull/12900). In particular,
`RWArc<T>` and `MutexArc<T>` have been removed. `Mutex<T>` and `RWLock<T>`
have been introduced, and can be used as `Arc<Mutex<T>>` and
`Arc<RWLock<T>>` to replace `RWArc` and `MutexArc`. There are some other
minor changes, see the pull request.
- Taking a reference to a static whose type contains an `Unsafe<T>` somewhere
[is now forbidden](https://github.com/mozilla/rust/pull/13083).
- `Extendable` and `FromIterator` [now take their argument
by-value](https://github.com/mozilla/rust/pull/13039).
- The crate map [has been
removed](https://github.com/mozilla/rust/pull/13117), and with it a
significant amount of complexity. As a consequence of its removal,
`green::start` now takes the event loop it should use as an argument rather
than looking in the crate map. [The documentation has an
example](http://static.rust-lang.org/doc/master/green/index.html#starting-with-libgreen)
- The syntax for bounds on generic paths [has
changed](https://github.com/mozilla/rust/pull/13079) from
`Foo:Bound<Params>` to `Foo<Params>:Bound`.
- The default `Send` bound on trait objects [has been
removed](https://github.com/mozilla/rust/pull/13050).
- The `serialize` infrastructure [now supports error reporting via
`Result`](https://github.com/mozilla/rust/pull/13107).
- `Pod` [has been renamed](https://github.com/mozilla/rust/pull/13160) to
`Copy`.
- The attribute syntax [has
changed](https://github.com/mozilla/rust/pull/13162). Rather than saying
`#[crate_type = "bin"];` (with a significant semicolon), you say
`#![crate_type = "bin"]` (no semicolon).
- `collections::List` [has been
removed](https://github.com/mozilla/rust/pull/13183). Use a vector, or
`collections::DList` if you really want a linked list. Persistent data
structures will live in a different crate than `collections`.
## Other Changes
- A `fill` method [has been added](https://github.com/mozilla/rust/pull/13049)
to `Reader`, for reading an exact amount of bytes or erroring.
- As
[discussed](https://mail.mozilla.org/pipermail/rust-dev/2014-January/007924.html)
on the mailing list some months ago, [synchronous, bounded
channels](https://github.com/mozilla/rust/pull/12991) have been added.
- `Share`'s documentation [has been
expanded](https://github.com/mozilla/rust/pull/13070).
- A straggler from the doc sprint, [a few hundred lines of
documentation](https://github.com/mozilla/rust/pull/13135) have been added
to `std`.
- Some handy methods [have been
added](https://github.com/mozilla/rust/pull/12780) to `Json` to make
searching and selecting elements from JSON objects easier.
- There's a [new warn-by-default
lint](https://github.com/mozilla/rust/pull/13108) for deriving traits on
types which contain raw pointers.
- Many confusing lifetime-related ICE's [have been
fixed](https://github.com/mozilla/rust/pull/13157). This is good progress
towards closing [the notorious issue
5121](https://github.com/mozilla/rust/issues/5121).
- We can now [emit debuginfo for
`static`s](https://github.com/mozilla/rust/pull/13143). Yay debuginfo!
## New Contributors
- Davis Silverman
- Noam Gagliardi Rabinovich
- Sean McArthur
# Weekly Meeting
The [meeting this
week](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-03-25)
discussed various things: attribute parsing in macros, opt-in built-in traits,
SIMD, allowing square brackets in macro invocation, allowing bounds on type
parameters in structs, private fields by default, the fate of
`collections::List`, and bounds on trait paths.
# RFCs
- [Smaller refcounts](https://github.com/rust-lang/rfcs/pull/23)
- [Deserializing to a stream of tagged
values](https://github.com/rust-lang/rfcs/pull/22)
- [Allow bounds on all type
parameters](https://github.com/rust-lang/rfcs/pull/20)
# Project Updates
- [rust-highlight](https://github.com/KokaKiwi/rust-highlight) can be used to
highlight Rust code in LaTeX, HTML, and JSON.
- [rust-tabular](https://github.com/arjantop/rust-tabular), a library for
handling delimiter-separated values (commas, tabs, or any other character),
as well as fixed columns of fixed width.
- [rust-csv](https://github.com/BurntSushi/rust-csv), a CSV library which
implements `Encoder` and `Decoder` for `serialize` support.
# 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.
In the last two weeks, we landed 33 PRs.
## Notable additions
- Lars Bergstrom landed a Rust upgrade, bringing us to late February in
[#1934](https://github.com/mozilla/servo/pull/1934)
- ms2ger cleaned up some sketchy use of unsafe native pointers, wrapping them
in a `JS<T>` in [#1915](https://github.com/mozilla/servo/pull/1915)
- Matt Brubeck named the WorkQueue tasks so that we'll know where failure is
coming from during parallel layout in
[#1977](https://github.com/mozilla/servo/pull/1977)
## New contributors
- Matt Brubeck (mbrubeck)
## Meetings and Notes
Patrick Walton authored and combined the final set of changes required to get
Servo [passing ACID2](https://twitter.com/pcwalton/status/449299846873108480)!
Matthew Brubeck has joined the Servo team full-time, coming over from the
Firefox Metro project.
In the meeting [two weeks
ago](https://github.com/mozilla/servo/wiki/Meeting-2014-03-17), we discussed
the Rust upgrade, z-index support, and ACID2. In the most recent
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-03-24), we
provided an update on ACID2 and the status of Servo on Android.
# Other Announcements
- [Official Installers and
Nightlies](https://mail.mozilla.org/pipermail/rust-dev/2014-March/009223.html)

View File

@ -0,0 +1,185 @@
Title: This Week in Rust 44
Date: 2014-04-05 05:06
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.10 [was released][ten] this week, and with it comes a redesign of the
websites and official nightlies.
[ten]: https://mail.mozilla.org/pipermail/rust-dev/2014-April/009387.html
<!-- more -->
# What's cooking on master?
62 pull requests were merged this week.
## Breaking Changes
- The `map` and `flat_map` methods [have been
removed](https://github.com/mozilla/rust/pull/13203) from `Vec<T>`, the are
superseded by their iterator equivalents (of the same name).
- `FromIterator::from_iterator` [has been
renamed](https://github.com/mozilla/rust/pull/13220) to `from_iter`.
- `std::vec::{append, append_one}` [have been turned into
methods](https://github.com/mozilla/rust/pull/13221).
- struct fields [are now private by
default](https://github.com/mozilla/rust/pull/13184). Similarly, fields of
tuple structs [are also private by
default](https://github.com/mozilla/rust/pull/13237).
- `std::num` [has seen some
cleanup](https://github.com/mozilla/rust/pull/13225). The `cmath` module has
been removed from the public API and the various wrapper functions on float
types have been removed.
- `Rng::shuffle_mut` [has been
renamed](https://github.com/mozilla/rust/pull/13177) to `shuffle`.
- Vectors, arrays, and slices [require `uint` indices
now](https://github.com/mozilla/rust/pull/13257). Previously they accepted
any integer type.
- Static string constants [no longer include a null
terminator](https://github.com/mozilla/rust/pull/13291). This was
accidentally leftover from when all strings were implicitly
null-terminated. This may break code that incorrectly assumed strings were
null-terminated.
- The `concat_idents` macro [is now feature
gated](https://github.com/mozilla/rust/pull/13295).
- `RefCell::get` and `RefCell::set` [have been
removed](https://github.com/mozilla/rust/pull/13301).
## Other Changes
- rustc [now gives file paths](https://github.com/mozilla/rust/pull/13284)
when reporting duplicate crates found.
- `std::cmp` [has some nice new
documentation](https://github.com/mozilla/rust/pull/12956).
- The manual [now has](https://github.com/mozilla/rust/pull/13207) an updated
list of what attributes are valid and what they do.
- Built-in syntax extensions [are now
documented](https://github.com/mozilla/rust/pull/13255).
- `AtomicInt` and `AtomicUint` [now have atomic bitwise
operations](https://github.com/mozilla/rust/pull/12964).
- The `Show` implementation for `Cell` [has been
fixed](https://github.com/mozilla/rust/pull/13243) to actually print the
contents of the Cell.
- Macros in statement and expression position [can now be delimited by square
brackets](https://github.com/mozilla/rust/pull/13234).
- The `k-nucleotide` benchmark [has been fixed to pass the official shootout
tests](https://github.com/mozilla/rust/pull/13206).
- A nasty bug which would cause `Arc`s to leak [has been
fixed](https://github.com/mozilla/rust/pull/13211).
## New Contributors
- Benjamin Adamson
- Christopher Kendell
- Falco Hirschenberger
- Gábor Lehel
- Ivan Petkov
- Scott Jenkins
- Timothée Ravier
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-04-01)
discussed Vec versus `~[T]`, the intrinsics RFC, and StrBuf.
# RFCs
Some new RFCs:
- [Check actual type parameters against their
bounds](https://github.com/rust-lang/rfcs/pull/34)
- [Change return type of str::replace to
MaybeOwned](https://github.com/rust-lang/rfcs/pull/33)
- [Bit fields and matching](https://github.com/rust-lang/rfcs/pull/29)
- [Use different keywords for declaring tagged unions and C-style
enums](https://github.com/rust-lang/rfcs/pull/27)
- [Remove the `priv` keyword](https://github.com/rust-lang/rfcs/pull/26)
- [Unify and nest structs and
enums](https://github.com/rust-lang/rfcs/pull/24)
# Project Updates
- [rustlex](https://github.com/LeoTestard/rustlex), a syntax extension for
generating regular expression-based lexers.
- farcaller [has shown a
demo](http://www.reddit.com/r/rust/comments/21qogc/im_making_a_note_here_huge_embedded_success/)
of Rust on an ARM dev board.
- [A sample Asterisk
module](http://www.reddit.com/r/rust/comments/21tplw/writing_an_asterisk_module_using_rust/),
in Rust
- [Parallel JS
Compression](http://alan-andrade.github.io/rust/javascript/2014/03/31/parallel_js_compression.html)
in Rust.
- [A Brainfuck
Interpreter](https://github.com/tedsta/rust-brainfuck/blob/master/main.rs)
in 43 lines.
- [rustfix](https://github.com/Geal/rustfix), a simple regex-based upgrading
tool.
- [rust-iteratorcomprehensions](http://www.reddit.com/r/rust/comments/229fze/rustiteratorcomprehensions_nest_filter_and_map/),
a list comprehension syntax for iterators.
# 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.
In the last week, we landed 18 PRs.
## Notable additions
- Patrick Walton (along with commits from Juneyoung Cho and Hyun June Kim) landed ACID2 support in [#1988](https://github.com/mozilla/servo/pull/1988)
- ms2ger landed a new Rust upgrade, bringing us to late March in [#2041](https://github.com/mozilla/servo/pull/2041)
- Martin Robinson move the active timers for the `Window` object into a `HashMap` in [#2002](https://github.com/mozilla/servo/pull/2002)
- Manish Goregaokar made attribute getter/setters case insensitive in [#2043](https://github.com/mozilla/servo/pull/2043)
- Tetsuharu Ohzeki cleaned up `Document::create_collection` in [#2031](https://github.com/mozilla/servo/pull/2031)
- Peiyong Lin got rid of match statements in layout queries in [#2022](https://github.com/mozilla/servo/pull/2022)
- Bruno de Oliveira Abinader added support for the ASCII whitespace check in [#2032](https://github.com/mozilla/servo/pull/2032)
## New contributors
- Martin Robinson
## Meetings and Notes
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-03-31), we
discussed how to demo ACID2, gave a quick overview of our Q2 agenda, talked
about the tentative Servo workweek date (June 2), and wrapped up where the
rest of the layout features are at now that we have closed down the ACID2
push.
Courtesy of Manish Goregaokar, we now have a
[badge](https://badges.mozilla.org/en-US/badges/badge/Servo-Rust-upgrade) for
those brave memebers of the Servo community who participate in the Sisyphean
task of upgrading the version of Rust used in Servo. Thanks, Manish!
# Community
- [Rust vs Go](http://www.reddit.com/r/rust/comments/21m5jf/rust_vs_go/)
- [Rust is now on Facebook](https://www.facebook.com/rustlang)
- [How similar is Rust to
Go?](http://www.reddit.com/r/rust/comments/21ofma/how_similar_is_rust_to_go/)
- [Safe Synchronization Primitives and their
implementation](http://www.reddit.com/r/rust/comments/21t8n8/safe_synchronization_primitives_and_their/)
- [Simple Type-Based Alias Analysis for
Rust](http://www.reddit.com/r/rust/comments/21wu1c/simple_typebased_alias_analysis_for_rust/)
- Reminder: `~[T]` [is not going away](http://www.reddit.com/r/rust/comments/2213vw/reminder_t_is_not_going_away/)
- [Higher-kinded
polymorpihsm](http://www.reddit.com/r/rust/comments/2212j2/higherkinded_polymorphism/)
- [A More Detailed Tour of the Rust
Compiler](http://www.reddit.com/r/rust/comments/226ax6/a_more_detailed_tour_of_the_rust_compiler/)
- [Another brain dump - data
structures](http://www.reddit.com/r/rust/comments/228ou3/another_brain_dump_data_structures/)
- [Rust Me, I'm a
Developer!](http://www.reddit.com/r/rust/comments/227o5n/rust_me_im_a_developer_slides_and_commentary_from/),
(slides and commentary from a talk given at Stir Trek 2014)

View File

@ -0,0 +1,153 @@
Title: This Week in Rust 45
Date: 2014-04-13 23:06
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?
64 pull requests were merged this week.
## Breaking Changes
- `BenchHarness` [has been
renamed](https://github.com/mozilla/rust/pull/13236) to `Bencher`
- The `push_str` and `push_char` methods on `~str` [have been
removed](https://github.com/mozilla/rust/pull/13440), and a `StrBuf` type
added, as an analog to `Vec`.
- Duplicate moves from the variables a `proc` captures [are no longer
allowed](https://github.com/mozilla/rust/pull/13413).
- `std::libc` [has been extracted](https://github.com/mozilla/rust/pull/13315)
into its own crate.
- Various bugs in resolve [have been
fixed](https://github.com/mozilla/rust/pull/13409). The fixes seem
relatively obscure, but they're well documented if your code breaks.
- The functions in `flate` now [return Option instead of
failing](https://github.com/mozilla/rust/pull/13389).
## Other Changes
- `TotalEq` and `TotalOrd` [now
document](https://github.com/mozilla/rust/pull/13358) exactly what the types
implementing them must guarantee.
- Some bugs with debuginfo [have been
fixed](https://github.com/mozilla/rust/pull/13441). In particular, the
annoying link failure with debuginfo has been fixed.
- Relocation model [is now
configurable](https://github.com/mozilla/rust/pull/13340) with `-C
relocation-model`.
Additionally, a lot of cleanup happened. Not much of it sticks out particularly.
## New Contributors
- Boris Egorov
- Jim Radford
- Joseph Crail
- JustAPerson
- Kasey Carrothers
- Kevin Butler
- Manish Goregaokar
- Tobba
- free-Runner
# Weekly Meeting
The weekly meeting was cancelled due to the videoconference system being down
for mitigating the Heartbleed vulnerability, as well as some team members
travelling or otherwise unavailable.
# RFCs
Some new RFCs:
- [Extend nullable pointer optimization to library
types](https://github.com/rust-lang/rfcs/pull/36)
- [Extended method lookup](https://github.com/rust-lang/rfcs/pull/37)
- [Inherit use](https://github.com/rust-lang/rfcs/pull/38)
- [Allocator trait](https://github.com/rust-lang/rfcs/pull/39)
- [Make libstd a facade](https://github.com/rust-lang/rfcs/pull/40)
- [`Invalid` trait for space optimization of
enums](https://github.com/rust-lang/rfcs/pull/41)
- [Add a regexp crate to the Rust
distribution](https://github.com/rust-lang/rfcs/pull/42)
# Project Updates
- [Acronymy](http://www.reddit.com/r/rust/comments/22y6oy/acronymy_a_web_app_written_in_rust/)
has been released. This is a web application (in Rust!) for defining words as
acronyms. It's pretty fun.
- [bitmap](https://github.com/cmr/bitmap-rs) has been released
- [regexp](https://github.com/BurntSushi/regexp/) is a pure-Rust
implementation of RE2, with wonderful docs and support for statically
compiling regular expressions.
- [rust-empty](http://www.reddit.com/r/rust/comments/22uirj/rustempty_02_released/)
has been updated to 0.2.
- [inotify-rs](https://github.com/hannobraun/inotify-rs) has been released,
bindings to inotify.
- [An unlambda
interpreter](https://github.com/bwo/unlambda/blob/master/unlambda.rs)
- [RusticMineSweeper](https://github.com/aochagavia/RusticMineSweeper), a
minesweeper clone.
- [rust-mustache](https://github.com/erickt/rust-mustache/tree/v0.3.0) has
been updated to 0.3.0.
- [sodiumoxide](https://github.com/dnaq/sodiumoxide), the libsodium bindings,
have been updated for 0.10.
# Community
- On April 17, there will be an [Introduction to
Rust](http://www.meetup.com/nyccpp/events/168545012/) by Clark Gaebel in new
York City, during a C++ meetup.
- [Bay Area
Rust](https://mail.mozilla.org/pipermail/rust-dev/2014-April/009490.html)'s
plans for May have been announced.
# 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.
In the last week, we landed 30 PRs.
## Notable additions
- ms2ger cleaned up all of the trailing whitespace that had been nagging down
our Critic reviews in [#2055](https://github.com/mozilla/servo/pull/2055)
- Jacob Parker added a reftest for `setAttribute`-based restyling in
[#2062](https://github.com/mozilla/servo/pull/2062)
- Sankha Narayan Guria removed XRay from the script codegen in
[#2050](https://github.com/mozilla/servo/pull/2050)
- Peiyong Lin moved `namespaceURI` to the `Element` type in
[#2063](https://github.com/mozilla/servo/pull/2063) and removed all
remaining `@` boxes in [#2085](https://github.com/mozilla/servo/pull/2085)
- Matt Brubeck fixed bugs related clicking on links in
[#2068](https://github.com/mozilla/servo/pull/2068) and
[#2084](https://github.com/mozilla/servo/pull/2084) and
[#2080](https://github.com/mozilla/servo/pull/2080)
- Hyun June Kim added support for pseudo-elements attached to inline elements
in [#2071](https://github.com/mozilla/servo/pull/2071)
- Manish Goregaokar cleaned up a whole bunch of warnings left after our last
Rust update in [#2045](https://github.com/mozilla/servo/pull/2045)
- Lars Bergstrom got Android support working in Servo master in
[#2070](https://github.com/mozilla/servo/pull/2070)
## New contributors
- Jacob Parker (j3parker)
## Meetings and Notes
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-04-07), we went
over our [Q2 roadmap](https://github.com/mozilla/servo/wiki/Roadmap), status
of an Android buildbot, testing, and the ever-present issue of improving our
build system.

View File

@ -0,0 +1,182 @@
Title: This Week in Rust 46
Date: 2014-04-26 14:06
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 issue combines this week and last, since I was very busy with school last
week, and did not have time to write.
<!-- more -->
# What's cooking on master?
153 pull requests were merged in the last two weeks.
## Breaking Changes
- Auto-rooting of `@` [has been
removed](https://github.com/mozilla/rust/pull/13559). The exact fallout of
this isn't obvious to me, but presumably this makes some uses of `@` not
work.
- `std::task::task` [has been
renamed](https://github.com/mozilla/rust/pull/13675) to `TaskBuilder::new`.
- Closures can [no longer be
applied](https://github.com/mozilla/rust/pull/13686) through a `&`-pointer.
This fixes some memory unsafety.
- The `Round` trait [has been
removed](https://github.com/mozilla/rust/pull/13597), and is now part of
`Float`, and `Float` now takes things by-value.
- `Unsafe<T>` [is now always
`Share`](https://github.com/mozilla/rust/pull/13583), regardless of whether
or not the contained type is `Share`.
- Modulo (`%` operator) on float types [has been
removed](https://github.com/mozilla/rust/pull/13410), use the `rem` method
instead.
- `~[T]` [is no longer growable](https://github.com/mozilla/rust/pull/13588).
- Some `Bitv` method names [have
changed](https://github.com/mozilla/rust/pull/13572).
- The `priv` keyword [is no longer
used](https://github.com/mozilla/rust/pull/13547), but is still reserved.
- Some cases where destructors were not run [have been
fixed](https://github.com/mozilla/rust/pull/13390).
- `unwrap` and `unwrap_err` on `Result` [now require the wrapper type to
implement `Show`](https://github.com/mozilla/rust/pull/13479).
- Some return types in `std::comm` [have been made
consistent](https://github.com/mozilla/rust/pull/13448).
## Other Changes
- There is now a [pure-Rust regular expression
library](https://github.com/mozilla/rust/pull/13700) in the standard
library. As I've come to expect from burntsushi, the docs are fantastic.
- [Unix sockets](https://github.com/mozilla/rust/pull/13723) and [TCP
sockets](https://github.com/mozilla/rust/pull/13688) now support accept with
a timeout. [TcpStream::connect](https://github.com/mozilla/rust/pull/13604) can also
take a timeout.
- [64-bit Windows is now partially
supported](https://github.com/mozilla/rust/pull/13692). Unwinding still
doesn't work.
- `&&` [is now parsed as `& &`](https://github.com/mozilla/rust/pull/13576)
when appropriate.
- Errors about use of moved values [are much nicer
now](https://github.com/mozilla/rust/pull/13418).
- Cloning vectors [is now much much
faster](https://github.com/mozilla/rust/pull/13539).
- SipHash [has also been
optimized](https://github.com/mozilla/rust/pull/13522).
- Steve Klabnik's 30 minute introduction to Rust [has been added as official
documentation](https://github.com/mozilla/rust/pull/13416).
## New Contributors
- Aaron Turon
- Adolfo Ochagavía
- Andrew Gallant
- Brandon Waskiewicz
- Brendan McLoughlin
- Chris Shea
- Jacob Hegna
- James Sanders
- John Fresco
- John Simon
- Manish Goregaokar
- Meyer S. Jacobs
- Michael Fairley
- Richo Healey
- Ryan Mulligan
- Rüdiger Sonderfeld
- Thomas Backman
- iancormac84
- mdinger
# Weekly Meeting
- [Two weeks
ago](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-04-15), a
bunch of RFCs were discussed, as well as a breaking change log.
- [Last week], some more RFCs were discussed, notably the regex crate, numeric
type inference, and disableable asserts.
# RFCs
- [Linker placement attribute](https://github.com/rust-lang/rfcs/pull/44)
- [Avoiding integer overflow](https://github.com/rust-lang/rfcs/pull/45)
- [Writer size hints](https://github.com/rust-lang/rfcs/pull/46)
- [Revised trait matching](https://github.com/rust-lang/rfcs/pull/48)
- [Disableable assertions](https://github.com/rust-lang/rfcs/pull/50)
- [Macro name resolution](https://github.com/rust-lang/rfcs/pull/51)
- [Private trait items](https://github.com/rust-lang/rfcs/pull/52)
- [Coroutines](https://github.com/rust-lang/rfcs/pull/53)
# Community Updates
- For all Mac users, there is now
[dash-rust](https://github.com/indirect/dash-rust/), for Rust API docs in
Dash.
- Another [Rust By Example](http://rustbyexample.github.io/) has been created.
This one is much more complete and also looks pretty nice.
- [Teepee](http://chrismorgan.info/blog/introducing-teepee.html) has been
announced, the successor to `rust-http`.
- [zinc](https://mail.mozilla.org/pipermail/rust-dev/2014-April/009618.html),
a bare-metal Rust stack.
- [An IntelliJ Rust plugin](https://github.com/Vektah/idea-rust).
- [Rust for C++
Programmers](http://featherweightmusings.blogspot.co.nz/search/label/rust-for-c).
- [A very fast n-queens solver](https://github.com/reem/rust-n-queens).
# 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.
In the last week, we landed 29 PRs. There are several very large PRs waiting to land behind an impending Rust upgrade, which will bring us April 10th.
## Notable additions
- Matt Brubeck worked around a long-standing issue causing Servo to look crunched on HIDPI displays in [#2224](https://github.com/mozilla/servo/pull/2224)
- Harry Maclean made `Node.Normalize()` work on all its descendants in [#2221](https://github.com/mozilla/servo/pull/2221)
- jgraham cleaned up the Web Platform Tests integration in [#2216](https://github.com/mozilla/servo/pull/2216)
- ms2ger, among many other things, added support for the `Any` type in dictionaries in [#2225](https://github.com/mozilla/servo/pull/2225)
- Tetsuharu Ohzeki added helpers that significantly cleaned up script's layout queries in [#2210](https://github.com/mozilla/servo/pull/2210)
- jdm brought back the "I tried" star for failed pages in [#2200](https://github.com/mozilla/servo/pull/2200)
- Peiyong Lin implemented `Element.localName` in [#2209](https://github.com/mozilla/servo/pull/2209)
- Tom Schuster implemented `ParentNode.children` in [#2192](https://github.com/mozilla/servo/pull/2192)
- jdm also added a basic browser context in [#2111](https://github.com/mozilla/servo/pull/2111)
- Manish Goregaokar added support for tracking the WPT manifest in [#2187](https://github.com/mozilla/servo/pull/2187)
- Sankha Guria implemented `Element.prefix` in [#2199](https://github.com/mozilla/servo/pull/2199)
- Bruno Abinader implemented `createDocument` in [#2072](https://github.com/mozilla/servo/pull/2072)
## New Contributors
- Harry Maclean (hazz)
## Meetings and Notes
In this week's [meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-04-21) we went over the Rust upgrade status, some medium-sized project brainstorming we've been doing, the Web Platform Tests support in Servo, and fixing iframes.
# 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.
In the last week, we landed 39 PRs.
## Notable additions
- Manish Goregaokar landed support of the Web Platform Tests in [#2089](https://github.com/mozilla/servo/pull/2089)
- ms2ger improved the integration of WPT with our build system in [#2162](https://github.com/mozilla/servo/pull/2162) and [#2180](https://github.com/mozilla/servo/pull/2180)
- Philip Horger handled treating HTTPS request as a network error in [#2166](https://github.com/mozilla/servo/pull/2166)
- Peiyong Lin cleaned up some parser code in [#2157](https://github.com/mozilla/servo/pull/2157)
- James Sanders associated ResourceTask with URLProvenance in [#2152](https://github.com/mozilla/servo/pull/2152)
- Josh Matthews added `Traceable` and `Untraceable` types to clean up rooting in [#2147](https://github.com/mozilla/servo/pull/2147)
- Lars Bergstrom changed the default rendering mode to CPU on Android [#2148](https://github.com/mozilla/servo/pull/2148)
- Simon Sapin removed some unnecessary `unsafe` code in [#2145](https://github.com/mozilla/servo/pull/2145)
- Matthew Brubeck fixed some terrible bugs in [#2135](https://github.com/mozilla/servo/pull/2135) and [#2134](https://github.com/mozilla/servo/pull/2134) and [#2130](https://github.com/mozilla/servo/pull/2130)
- Sanhka Guria added attribute setters and getters for `HTMLImageElement` in [#2054](https://github.com/mozilla/servo/pull/2054)
## Meetings and Notes
In this week's [meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-04-14) we went over our Rust upgrade strategy, linking, embedding, rooting, Android support, and the commit we missed landing in one submodule for Acid2.

View File

@ -0,0 +1,162 @@
Title: This Week in Rust 47
Date: 2014-05-05 14:26
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?
45 pull requests were merged this week.
## Breaking Changes
- `~"foo"` and `&"bar"` literals [have been removed from the
language](https://github.com/mozilla/rust/pull/13877). The second is a noop
and the first is replaced by `"foo".to_owned()`.
- The various `rev_iter` methods [have been
removed](https://github.com/mozilla/rust/pull/13648) in favor of making more
iterators implement `DoubleEndedIterator`. See the commit messages for more
details.
## Other Changes
- The first part of [opt-in built-in
traits](https://github.com/rust-lang/rfcs/blob/master/active/0003-opt-in-builtin-traits.md)
[has landed](https://github.com/mozilla/rust/pull/13868). The built-in
traits can now be explicitly implemented and derived.
- There is [now a lint](https://github.com/mozilla/rust/pull/13579) for
negating `uint` values.
- There is [now a `debug_assert`
macro](https://github.com/mozilla/rust/pull/13789) for assertions which can
be compiled out.
- There is [now a `bitflags`
macro](https://github.com/mozilla/rust/pull/13072) for generating a nice
bitflag API.
- `serialize` [now has a streaming JSON
parser](https://github.com/mozilla/rust/pull/12740).
- We now use `-ffunction-sections`, `-fdata-sections`, and `--gc-sections`,
[for a 67% size reduction](https://github.com/mozilla/rust/pull/13833) of
hello world on Linux.
## New Contributors
- Alexandre Gagnon
- Ali Smesseim
- Emanuel Rylke
- James Laverack
- Justin Noah
- Michael Pratt
- Nicolas Silva
- Noam Yorav-Raphael
- Phil Ruffwind
- Wendell Smith
- m-r-r
# Weekly Meeting
The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-04-29)
discussed many RFCs.
# RFCs
- [Allow some intrinsics in
statics](https://github.com/rust-lang/rfcs/pull/54)
- [Low level features](https://github.com/rust-lang/rfcs/pull/55)
- [Static values as generic
parameters](https://github.com/rust-lang/rfcs/pull/56)
- [Text/Unicode oriented streams](https://github.com/rust-lang/rfcs/pull/57)
- [Rename `&mut` to `&only`, allow `&only` borrowing of non-mut
slots](https://github.com/rust-lang/rfcs/pull/58)
- [Rename `StrBuf` to `Str` and remove `&str` from the
language](https://github.com/rust-lang/rfcs/pull/60)
- [Enforce module directory structure more
strictly](https://github.com/rust-lang/rfcs/pull/63)
- [Longer numeric types (`u8` to `uint8`
etc)](https://github.com/rust-lang/rfcs/pull/64)
- [Change the syntax of struct literals to use
`=`](https://github.com/rust-lang/rfcs/pull/65)
- [Better temporary lifetimes](https://github.com/rust-lang/rfcs/pull/66)
- [User friendly input macros](https://github.com/rust-lang/rfcs/pull/67)-
# Community Updates
- [Syntax extensions and regular expressions for
Rust](http://blog.burntsushi.net/rust-regex-syntax-extensions)
- [What to expect as a C#
user](http://www.reddit.com/r/rust/comments/244oog/what_to_expect_as_a_c_user/)
- [Ludum Dare 29 Entry: Sea Snake
Escape](http://www.reddit.com/r/rust/comments/244zrj/ludum_dare_29_in_rust_sea_snake_escape/)
- [LD29 Entry:
Repercussion](http://www.reddit.com/r/rust/comments/247744/repercussion_ludum_dare_29/)
- [LD29 Entry: Shadows
Below](http://www.reddit.com/r/rust/comments/249clu/ld29_jam_entry_shadows_below/)
- [Bitfields in
Rust](http://www.reddit.com/r/rust/comments/244yz6/bitfields_in_rust/)
- [Rust for C++ programmers part
4](http://featherweightmusings.blogspot.co.nz/2014/04/rust-for-c-programmers-part-4-unique.html)
- [New moderation
policy](https://mail.mozilla.org/pipermail/rust-dev/2014-April/009704.html)
- [rust-empty 0.3](https://github.com/bvssvni/rust-empty/releases/tag/0.3) has
been released.
- [RMX, a Rust instrumentation
tool](https://github.com/Fiedzia/rust-instrumentation)
- [A Game Boy Advance game, written in
Rust](https://github.com/exoticorn/gba-rust)
- [An interactive compiler](http://rust.godbolt.org/), which lets you
disassemble Rust code nicely
- [ClearCrypt: A new transport encryption
library](https://mail.mozilla.org/pipermail/rust-dev/2014-May/009761.html)
# 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.
In the last week, we landed 28 PRs.
## Notable additions
- Lars Bergstrom landed the Rust upgrade, bringing Servo in line with April
10th Rust in [#2238](https://github.com/mozilla/servo/pull/2238)
- Patrick Walton re-enabled parallel layout in
[#2174](https://github.com/mozilla/servo/pull/2174) and added parallel
display list building in [#2235](https://github.com/mozilla/servo/pull/2235)
- jgraham updated the Web Platform Tests integration to support passing some
arguments via. env variables in
[#2245](https://github.com/mozilla/servo/pull/2245)
- ms2ger rewrote the handling of optional arguments in
`getJSToNativeConversionTemplate` in
[#2244](https://github.com/mozilla/servo/pull/2244)
- Matt Brubeck cleaned up another dynamic borrow failure leading to pipeline
problems in [#2252](https://github.com/mozilla/servo/pull/2252)
- Jack Moffitt cleaned up some of our Makefile and autoconf files in
[#2232](https://github.com/mozilla/servo/pull/2232)
- Gulshan Singh fixed `TimeStamp` to return the actual time in
[#2275](https://github.com/mozilla/servo/pull/2275)
- Mike Blumenkrantz added the start of embedding support in
[#2257](https://github.com/mozilla/servo/pull/2257)
- Manish Goregaokar implemented the webidl and basic implementation of XHR in
[#2292](https://github.com/mozilla/servo/pull/2292)
## New Contributors
- Gulshan Singh (gsingh93)
## Meetings and Notes
In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-04-28), we
introduced three new team members. Brendan (bjz) is a long-time Rust developer
here on a Mozilla internship. Glenn Watson (gw) is a full-time member of the
Servo team, with an initial focus on platform features. And Manish Goregaokar
will be participating in Google Summer of Code, working on XMLHttpRequest. We
covered the JS rooting changes, timing of the next Rust upgrade, the status of
Web Platform Tests, and the use of prebuilt Rust compiler binaries.

View File

@ -0,0 +1,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/)

View File

@ -0,0 +1,174 @@
Title: This Week in Rust 49
Date: 2014-05-17 22:30
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?
93 pull requests were merged this week, topping the [previous
record](http://blog.octayn.net/blog/2014/03/24/this-week-in-rust-42/) of 91.
Good job everyone, keep up the good work!
## Breaking Changes
- `File` [now has a `stat` method](https://github.com/mozilla/rust/pull/14128)
that does not use a path, but rather the open file itself (`fstat`). As part
of this, the `path` field on `FileStat` has been removed.
- Some failure in libcore [has been
removed](https://github.com/mozilla/rust/pull/14150). `shift_ptr` and
`pop_ptr` now return an `Option`.
- `TcpStream`s `connect` and `bind` constructors [now take a string and a
port](https://github.com/mozilla/rust/pull/13919) rather than a `SocketAddr`
structure. There's some controversy around this change, as seen in the PR
discussion. The first commit has detailed instructions for porting.
- `num::complex::Cmplx` [has been
renamed](https://github.com/mozilla/rust/pull/14167) to
`num::complex::Complex`.
- Process wait timeouts [are now
implemented](https://github.com/mozilla/rust/pull/13957). See the PR for
details.
- Our unicode support [has been cleaned
up](https://github.com/mozilla/rust/pull/14159), and in the process
`str::Normalizations` has been renamed to `str::Decompositions` to reflect
what it does.
- `owned` [has moved](https://github.com/mozilla/rust/pull/14184) from libcore
to libstd, and with it `Box` and `AnyOwnExt`.
- A `read_at_least` method [has been
added](https://github.com/mozilla/rust/pull/13127) to `Reader`. The `fill`
and `push_exact` methods have been removed.
- `atomics` [has moved](https://github.com/mozilla/rust/pull/14169) to
libcore.
- The `android-cross-path` flat to rustc [has been
removed](https://github.com/mozilla/rust/pull/14179).
- The Process and `dynamic_library` APIs [now use byte
slices](https://github.com/mozilla/rust/pull/13954) rather than `Path`s or
strings.
- `run_in_bare_thread` [has been
removed](https://github.com/mozilla/rust/pull/14200).
- The `bitflags!` generated `from_bits` constructor [is now
safe](https://github.com/mozilla/rust/pull/14208) and returns an `Option`.
- `from_utf8_owned` [now returns a
Result](https://github.com/mozilla/rust/pull/14213).
- `std::fmt` [has moved](https://github.com/mozilla/rust/pull/14115) to
`core::fmt`.
- enum variant names were accidentally leaking into child modules. [This is no
more](https://github.com/mozilla/rust/pull/14253).
## Other Changes
One PR from last week that apparently slipped through the cracks: [we are
using jemalloc again!](https://github.com/mozilla/rust/pull/14006).
Additionally, some changes around the new [allocator
RFC](https://github.com/rust-lang/rfcs/pull/39) landed.
- String searching [now uses a two-way
algorithm](https://github.com/mozilla/rust/pull/14135).
- libterm [now supports](https://github.com/mozilla/rust/pull/13401) the win32
console API.
- The `mangle` method on `HashMap` [has been
reintroduced](https://github.com/mozilla/rust/pull/14196) in the form of
`find_with_or_insert_with`
- The shootout-mandelbrot benchmark [has seen a 2x performance
increase](https://github.com/mozilla/rust/pull/14203).
- The test runner filter [now takes a
regex](https://github.com/mozilla/rust/pull/13948) rather than a full path.
- The error reporter for unresolved name [hsa been vastly
improved](https://github.com/mozilla/rust/pull/14086) to also look for
fields and methods on types, and methods on traits, rather than just local
variables.
- Blocks [are now allowed](https://github.com/mozilla/rust/pull/14183) in
constant expressions.
- Windows process spawning and environment variable fetching [is now
Unicode-aware](https://github.com/mozilla/rust/pull/14075).
- Fallback functions [have been
added](https://github.com/mozilla/rust/pull/13932) for when a given feature
isn't available on Windows XP. `rustc` won't run on XP due to LLVM, but
binaries produced by it should.
## New Contributors
- Alan Williams
- Cameron Zwarich
- Derek Chiang (Enchi Jiang)
- Hanno Braun
- J.C. Moyer
- Piotr Jawniak
- Zooko Wilcox-O'Hearn
# RFCs
- [Multiple trait implementations for a single impl
block](https://github.com/rust-lang/rfcs/pull/76)
- [Unboxed closures](https://github.com/rust-lang/rfcs/pull/77)
- [Extending safe mutability](https://github.com/rust-lang/rfcs/pull/78)
- [Structs with unspecified layout](https://github.com/rust-lang/rfcs/pull/79)
# Community Updates
The mutpocalypse is nigh. There is almost a full-page of reddit links to
self-posts and RFCs in response to Niko's [Focusing on
Ownership](http://smallcultfollowing.com/babysteps/blog/2014/05/13/focusing-on-ownership/)
post. The situation is pretty ridiculous. I'm going to pretend it doesn't
exist, though. Peruse reddit if you feel up to reading the dozens of
suggestions.
- [Weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-05-13)
- GitHub's Atom editor [has Racer
support](https://github.com/edubkendo/atom-racer).
- And, [a detailed update on
Racer](http://phildawes.net/blog/2014/05/10/racer/).
- I've started my internship at Mozilla (working on Rust, of course), and I've
started updating [my development log](http://rustlog.octayn.net/) again.
- [Seattle meetup
interest?](https://mail.mozilla.org/pipermail/rust-dev/2014-May/009825.html)
- bindgen [now has a macro](https://github.com/crabtw/rust-bindgen/pull/81)
which can generate bindings at parse-time.
- [Rust for C++ programmers: part 6, Rc, Gc,
*](http://featherweightmusings.blogspot.co.nz/2014/05/rust-for-c-programmers-part-6-rc-gc-and.html)
# 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.
In the last two weeks, we landed 79 PRs.
## Notable additions
- Josh Matthews implemented a [new rooting strategy](https://github.com/mozilla/servo/pull/2101) for JavaScript objects
- Aydin Kim fixed the [Android build](https://github.com/mozilla/servo/pull/2367)
- Glenn Watson fixed a bug with the new rooting strategy [during page interactions](https://github.com/mozilla/servo/pull/2340)
- Brendan Zabarauskascleaned up the way that we [print debug info](https://github.com/mozilla/servo/pull/2336)
- Bryan Bell added [dotted border support](https://github.com/mozilla/servo/pull/2438)
- Cameron Zwarich switched JSRef to more efficiently enforce its [contravariant lifetime](https://github.com/mozilla/servo/pull/2435)
- Guro Bokum converted many of our [RefCells to Cells](https://github.com/mozilla/servo/pull/2390)
- Matt Murphy [converted](https://github.com/mozilla/servo/pull/2317) many of our uses of `~[]` to `Vec`
## New Contributors
- Brendan Zabarauskas (bjz)
- Bryan Bell (bjwbell)
- Cameron Zwarich (zwarich)
- Glenn Watson (gw)
- Guro Bokum (jiojiajiu)
- Matt Murphy (murphm8)
## Meetings and Notes
In the meeting [two weeks
ago](https://github.com/mozilla/servo/wiki/Meeting-2014-05-05), we introduced
a new team member, Cameron Zwarich (zwarich). He is joining us from Apple, and
will be working on cross-language inlining in support of SpiderMonkey, among
other things. In last week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-05-13), we
discussed 32-bit support for Servo, the design of the HTML parser, and
potentially replacing our Azure+Skia graphics stack.

View File

@ -0,0 +1,100 @@
Title: This Week in Rust 50
Date: 2014-05-24 22:30
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?
66 pull requests were merged this week.
## Breaking Changes
- `mem::uninit` [has been renamed](https://github.com/mozilla/rust/pull/14392)
to `uninitialized`, and everything in `mem` is either stable or deprecated
(to be removed). There are a [bunch of other
changes](https://github.com/mozilla/rust/pull/14259) to `mem` that go with
this.
- All uses of `~str` [have been
removed](https://github.com/mozilla/rust/pull/14310).
- `UnsafeArc` [has been removed](https://github.com/mozilla/rust/pull/14301),
replaced with `Arc<Unsafe<T>>`.
- `Rng.choose` [now returns an
`Option`](https://github.com/mozilla/rust/pull/14319).
- `Bitv::init_to_vec` [has been
removed](https://github.com/mozilla/rust/pull/14295).
- Test shards with the built-in test runner [are now indexed by
1](https://github.com/mozilla/rust/pull/14286) in the CLI.
- `Result.unwrap_or_handle` [has been
renamed](https://github.com/mozilla/rust/pull/14294) to `unwrap_or_else` for
consistency with `Option`.
- [Some miscellaneous renames in libcollections](https://github.com/mozilla/rust/pull/14279).
- rustc is [more strict](https://github.com/mozilla/rust/pull/14251) about
where it will accept a given `mod foo;` statement.
## Other Changes
There were a lot of various bugfixes and documentation additions all around.
- There is now support for [weak failure](https://github.com/mozilla/rust/pull/14293).
- The docs for the cell types [has been massively
improved](https://github.com/mozilla/rust/pull/14304).
- `bytes!()` [now properly returns a static
slice](https://github.com/mozilla/rust/pull/14275).
- A liballoc [has materialized](https://github.com/mozilla/rust/pull/14230),
that contains all allocation support
## New Contributors
- Anton Löfgren
- Jihyeok Seo
- Jonathan Bailey
- Michael Dagitses
- P1start
- TyOverby
- Valerii Hiora
# RFCs
- [Allow the `unsafe` qualifier on struct
fields](https://github.com/rust-lang/rfcs/pull/80)
- [Guaranteed tail-call
optimization](https://github.com/rust-lang/rfcs/pull/81)
- [Add syntax to partially destructure `self` in method
signatures](https://github.com/rust-lang/rfcs/pull/83)
- [Generalize `macro_registar` to
`plugin_registrar`](https://github.com/rust-lang/rfcs/pull/86)
- [Bounds on trait objects should be separated with
+](https://github.com/rust-lang/rfcs/pull/87)
- [Macro syntax to count sequence
repetitions](https://github.com/rust-lang/rfcs/pull/88)
- [Loadable lints](https://github.com/rust-lang/rfcs/pull/89)
- [Lexer syntax simplification](https://github.com/rust-lang/rfcs/pull/90)
# Community Updates
- [Guaranteeing Memory Safety in Rust (a talk by
Niko)](https://air.mozilla.org/guaranteeing-memory-safety-in-rust/)
- [Approaches to resource
disposal](http://swiftcoder.wordpress.com/2014/05/23/approaches-to-resource-disposal/)
- [Introducing
js.rs](http://tombebbington.github.io/blog/2014/05/24/introducing-rust-js/)
- [Practicality with Rust: Setting Up A
Project](http://hydrocodedesign.com/2014/04/24/practicality-with-rust/)
- [Burn, a programming language implemented in
Rust](https://github.com/rainbow-alex/burn)
- [Rust for C++ programmers - part 7: data
types](http://featherweightmusings.blogspot.co.nz/2014/05/rust-for-c-programmers-part-7-data-types.html)
- [cxx2rust: the pains of wrapping C++ in Rust on the example of
Qt5](http://www.reddit.com/r/rust/comments/269t6i/cxx2rust_the_pains_of_wrapping_c_in_rust_on_the/)
- [Add a new language design
faq](http://www.reddit.com/r/rust/comments/269zu4/add_a_new_language_design_faq/)
- [rspt: a physically based renderer](https://github.com/mikejsavage/rspt)

View File

@ -0,0 +1,754 @@
Title: This Week in Rust 51
Date: 2014-06-10 22:46
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 issue combines two weeks of Rust and three weeks of Servo. Additionally,
in a little over a month month, I'll be releasing [an entirely reworked TWiR
website](http://blog.octayn.net/blog/2014/06/09/future-of-twir/). Until then,
TWiR might be a bit lighter than usual.
<!-- more -->
# What's cooking on master?
126 pull requests were merged in the last week.
## Breaking Change Log
- std: Remove the `as_utf16_p` functions
```
These functions are all much better expressed via RAII using the to_utf16()
method on strings. This refactoring also takes this opportunity to properly
handle when filenames aren't valid unicode when passed through to the windows
I/O layer by properly returning I/O errors.
All previous users of the `as_utf16_p` or `as_utf16_mut_p` functions will need
to convert their code to using `foo.to_utf16().append_one(0)` to get a
null-terminated utf16 string.
[breaking-change]
```
- Implement `#[plugin_registrar]`
```
See RFC 22.
[breaking-change]
```
- core: Move the collections traits to libcollections
```
This commit moves Mutable, Map, MutableMap, Set, and MutableSet from
`core::collections` to the `collections` crate at the top-level. Additionally,
this removes the `deque` module and moves the `Deque` trait to only being
available at the top-level of the collections crate.
All functionality continues to be reexported through `std::collections`.
[breaking-change]
```
- core: Rename `container` mod to `collections`. Closes #12543
```
Also renames the `Container` trait to `Collection`.
[breaking-change]
```
- std: Extract librustrt out of libstd
```
As part of the libstd facade efforts, this commit extracts the runtime interface
out of the standard library into a standalone crate, librustrt. This crate will
provide the following services:
* Definition of the rtio interface
* Definition of the Runtime interface
* Implementation of the Task structure
* Implementation of task-local-data
* Implementation of task failure via unwinding via libunwind
* Implementation of runtime initialization and shutdown
* Implementation of thread-local-storage for the local rust Task
Notably, this crate avoids the following services:
* Thread creation and destruction. The crate does not require the knowledge of
an OS threading system, and as a result it seemed best to leave out the
`rt::thread` module from librustrt. The librustrt module does depend on
mutexes, however.
* Implementation of backtraces. There is no inherent requirement for the runtime
to be able to generate backtraces. As will be discussed later, this
functionality continues to live in libstd rather than librustrt.
As usual, a number of architectural changes were required to make this crate
possible. Users of "stable" functionality will not be impacted by this change,
but users of the `std::rt` module will likely note the changes. A list of
architectural changes made is:
* The stdout/stderr handles no longer live directly inside of the `Task`
structure. This is a consequence of librustrt not knowing about `std::io`.
These two handles are now stored inside of task-local-data.
The handles were originally stored inside of the `Task` for perf reasons, and
TLD is not currently as fast as it could be. For comparison, 100k prints goes
from 59ms to 68ms (a 15% slowdown). This appeared to me to be an acceptable
perf loss for the successful extraction of a librustrt crate.
* The `rtio` module was forced to duplicate more functionality of `std::io`. As
the module no longer depends on `std::io`, `rtio` now defines structures such
as socket addresses, addrinfo fiddly bits, etc. The primary change made was
that `rtio` now defines its own `IoError` type. This type is distinct from
`std::io::IoError` in that it does not have an enum for what error occurred,
but rather a platform-specific error code.
The native and green libraries will be updated in later commits for this
change, and the bulk of this effort was put behind updating the two libraries
for this change (with `rtio`).
* Printing a message on task failure (along with the backtrace) continues to
live in libstd, not in librustrt. This is a consequence of the above decision
to move the stdout/stderr handles to TLD rather than inside the `Task` itself.
The unwinding API now supports registration of global callback functions which
will be invoked when a task fails, allowing for libstd to register a function
to print a message and a backtrace.
The API for registering a callback is experimental and unsafe, as the
ramifications of running code on unwinding is pretty hairy.
* The `std::unstable::mutex` module has moved to `std::rt::mutex`.
* The `std::unstable::sync` module has been moved to `std::rt::exclusive` and
the type has been rewritten to not internally have an Arc and to have an RAII
guard structure when locking. Old code should stop using `Exclusive` in favor
of the primitives in `libsync`, but if necessary, old code should port to
`Arc<Exclusive<T>>`.
* The local heap has been stripped down to have fewer debugging options. None of
these were tested, and none of these have been used in a very long time.
[breaking-change]
```
- Rename Iterator::len to count
```
This commit carries out the request from issue #14678:
> The method `Iterator::len()` is surprising, as all the other uses of
> `len()` do not consume the value. `len()` would make more sense to be
> called `count()`, but that would collide with the current
> `Iterator::count(|T| -> bool) -> unit` method. That method, however, is
> a bit redundant, and can be easily replaced with
> `iter.filter(|x| x < 5).count()`.
> After this change, we could then define the `len()` method
> on `iter::ExactSize`.
Closes #14678.
[breaking-change]
```
- auto merge of #14538 : alexcrichton/rust/libcollections, r=brson
```
As with the previous commit with `librand`, this commit shuffles around some
`collections` code. The new state of the world is similar to that of librand:
* The libcollections crate now only depends on libcore and liballoc.
* The standard library has a new module, `std::collections`. All functionality
of libcollections is reexported through this module.
I would like to stress that this change is purely cosmetic. There are very few
alterations to these primitives.
There are a number of notable points about the new organization:
* std::{str, slice, string, vec} all moved to libcollections. There is no reason
that these primitives shouldn't be necessarily usable in a freestanding
context that has allocation. These are all reexported in their usual places in
the standard library.
* The `hashmap`, and transitively the `lru_cache`, modules no longer reside in
`libcollections`, but rather in libstd. The reason for this is because the
`HashMap::new` contructor requires access to the OSRng for initially seeding
the hash map. Beyond this requirement, there is no reason that the hashmap
could not move to libcollections.
I do, however, have a plan to move the hash map to the collections module. The
`HashMap::new` function could be altered to require that the `H` hasher
parameter ascribe to the `Default` trait, allowing the entire `hashmap` module
to live in libcollections. The key idea would be that the default hasher would
be different in libstd. Something along the lines of:
// src/libstd/collections/mod.rs
pub type HashMap<K, V, H = RandomizedSipHasher> =
core_collections::HashMap<K, V, H>;
This is not possible today because you cannot invoke static methods through
type aliases. If we modified the compiler, however, to allow invocation of
static methods through type aliases, then this type definition would
essentially be switching the default hasher from `SipHasher` in libcollections
to a libstd-defined `RandomizedSipHasher` type. This type's `Default`
implementation would randomly seed the `SipHasher` instance, and otherwise
perform the same as `SipHasher`.
This future state doesn't seem incredibly far off, but until that time comes,
the hashmap module will live in libstd to not compromise on functionality.
* In preparation for the hashmap moving to libcollections, the `hash` module has
moved from libstd to libcollections. A previously snapshotted commit enables a
distinct `Writer` trait to live in the `hash` module which `Hash`
implementations are now parameterized over.
Due to using a custom trait, the `SipHasher` implementation has lost its
specialized methods for writing integers. These can be re-added
backwards-compatibly in the future via default methods if necessary, but the
FNV hashing should satisfy much of the need for speedier hashing.
A list of breaking changes:
* HashMap::{get, get_mut} no longer fails with the key formatted into the error
message with `{:?}`, instead, a generic message is printed. With backtraces,
it should still be not-too-hard to track down errors.
* The HashMap, HashSet, and LruCache types are now available through
std::collections instead of the collections crate.
* Manual implementations of hash should be parameterized over `hash::Writer`
instead of just `Writer`.
[breaking-change]
```
- std: Recreate a `collections` module
```
As with the previous commit with `librand`, this commit shuffles around some
`collections` code. The new state of the world is similar to that of librand:
* The libcollections crate now only depends on libcore and liballoc.
* The standard library has a new module, `std::collections`. All functionality
of libcollections is reexported through this module.
I would like to stress that this change is purely cosmetic. There are very few
alterations to these primitives.
There are a number of notable points about the new organization:
* std::{str, slice, string, vec} all moved to libcollections. There is no reason
that these primitives shouldn't be necessarily usable in a freestanding
context that has allocation. These are all reexported in their usual places in
the standard library.
* The `hashmap`, and transitively the `lru_cache`, modules no longer reside in
`libcollections`, but rather in libstd. The reason for this is because the
`HashMap::new` contructor requires access to the OSRng for initially seeding
the hash map. Beyond this requirement, there is no reason that the hashmap
could not move to libcollections.
I do, however, have a plan to move the hash map to the collections module. The
`HashMap::new` function could be altered to require that the `H` hasher
parameter ascribe to the `Default` trait, allowing the entire `hashmap` module
to live in libcollections. The key idea would be that the default hasher would
be different in libstd. Something along the lines of:
// src/libstd/collections/mod.rs
pub type HashMap<K, V, H = RandomizedSipHasher> =
core_collections::HashMap<K, V, H>;
This is not possible today because you cannot invoke static methods through
type aliases. If we modified the compiler, however, to allow invocation of
static methods through type aliases, then this type definition would
essentially be switching the default hasher from `SipHasher` in libcollections
to a libstd-defined `RandomizedSipHasher` type. This type's `Default`
implementation would randomly seed the `SipHasher` instance, and otherwise
perform the same as `SipHasher`.
This future state doesn't seem incredibly far off, but until that time comes,
the hashmap module will live in libstd to not compromise on functionality.
* In preparation for the hashmap moving to libcollections, the `hash` module has
moved from libstd to libcollections. A previously snapshotted commit enables a
distinct `Writer` trait to live in the `hash` module which `Hash`
implementations are now parameterized over.
Due to using a custom trait, the `SipHasher` implementation has lost its
specialized methods for writing integers. These can be re-added
backwards-compatibly in the future via default methods if necessary, but the
FNV hashing should satisfy much of the need for speedier hashing.
A list of breaking changes:
* HashMap::{get, get_mut} no longer fails with the key formatted into the error
message with `{:?}`, instead, a generic message is printed. With backtraces,
it should still be not-too-hard to track down errors.
* The HashMap, HashSet, and LruCache types are now available through
std::collections instead of the collections crate.
* Manual implementations of hash should be parameterized over `hash::Writer`
instead of just `Writer`.
[breaking-change]
```
- auto merge of #14610 : alexcrichton/rust/issue-14008, r=brson
```
This commit removes the <M: Any + Send> type parameter from Option::expect in
favor of just taking a hard-coded `&str` argument. This allows this function to
move into libcore.
Previous code using strings with `expect` will continue to work, but code using
this implicitly to transmit task failure will need to unwrap manually with a
`match` statement.
[breaking-change]
Closes #14008
```
- std: Remove generics from Option::expect
```
This commit removes the <M: Any + Send> type parameter from Option::expect in
favor of just taking a hard-coded `&str` argument. This allows this function to
move into libcore.
Previous code using strings with `expect` will continue to work, but code using
this implicitly to transmit task failure will need to unwrap manually with a
`match` statement.
[breaking-change]
Closes #14008
```
- std: Drop Total from Total{Eq,Ord}
```
This completes the last stage of the renaming of the comparison hierarchy of
traits. This change renames TotalEq to Eq and TotalOrd to Ord.
In the future the new Eq/Ord will be filled out with their appropriate methods,
but for now this change is purely a renaming change.
[breaking-change]
```
- auto merge of #14556 : sfackler/rust/kill-workcache, r=alexcrichton
```
This was only ever used by rustpkg and is very unmaintained.
[breaking-change]
```
- Remove libworkcache
```
This was only ever used by rustpkg and is very unmaintained.
[breaking-change]
```
- std: Rename {Eq,Ord} to Partial{Eq,Ord}
```
This is part of the ongoing renaming of the equality traits. See #12517 for more
details. All code using Eq/Ord will temporarily need to move to Partial{Eq,Ord}
or the Total{Eq,Ord} traits. The Total traits will soon be renamed to {Eq,Ord}.
cc #12517
[breaking-change]
```
- librustc: Fix snake case errors.
```
A number of functions/methods have been moved or renamed to align
better with rust standard conventions.
rustc::back::link::WriteOutputFile => write_output_file
rustc::middle::ty::EmptyBuiltinBounds => empty_builtin_bounds
rustc::middle::ty::AllBuiltinBounds => all_builtin_bounds
rustc::middle::liveness::IrMaps => IrMaps::new
rustc::middle::liveness::Liveness => Liveness::new
rustc::middle::resolve::NameBindings => NameBindings::new
rustc::middle::resolve::PrimitiveTypeTable => PrimitiveTypeTable::new
rustc::middle::resolve::Resolver => Resolver::new
rustc::middle::trans::datum::Datum => Datum::new
rustc::middle::trans::datum::DatumBlock => DatumBlock::new
rustc::middle::trans::datum::Rvalue => Rvalue::new
rustc::middle::typeck::infer::new_ValsAndBindings => ::infer::unify::ValsAndBindings::new
rustc::middle::typeck::infer::region_inference::RegionVarBindings => RegionVarBindings::new
[breaking-change]
```
- lib{serialize, uuid}: Fix snake case errors.
```
A number of functions/methods have been moved or renamed to align
better with rust standard conventions.
serialize::ebml::reader::Doc => seriaize::ebml::Doc::new
serialize::ebml::reader::Decoder => Decoder::new
serialize::ebml::writer::Encoder => Encoder::new
[breaking-change]
```
- lib{std,core,debug,rustuv,collections,native,regex}: Fix `snake_case` errors.
```
A number of functions/methods have been moved or renamed to align
better with rust standard conventions.
std::reflect::MovePtrAdaptor => MovePtrAdaptor::new
debug::reflect::MovePtrAdaptor => MovePtrAdaptor::new
std::repr::ReprVisitor => ReprVisitor::new
debug::repr::ReprVisitor => ReprVisitor::new
rustuv::homing::HomingIO.go_to_IO_home => go_to_io_home
[breaking-change]
```
- libsyntax: Fix `snake_case` errors.
```
A number of functions/methods have been moved or renamed to align
better with rust standard conventions.
syntax::ext::mtwt::xorPush => xor_push
syntax::parse::parser::Parser => Parser::new
[breaking-change]
```
- auto merge of #14511 : Sawyer47/rust/osrng-rename, r=alexcrichton
```
According to Rust's style guide acronyms in type names should be
CamelCase.
[breaking-change]
```
- Rename OSRng to OsRng
```
According to Rust's style guide acronyms in type names should be
CamelCase.
[breaking-change]
```
- auto merge of #14427 : alexcrichton/rust/librand, r=huonw
```
This commit shuffles around some of the `rand` code, along with some
reorganization. The new state of the world is as follows:
* The librand crate now only depends on libcore. This interface is experimental.
* The standard library has a new module, `std::rand`. This interface will
eventually become stable.
Unfortunately, this entailed more of a breaking change than just shuffling some
names around. The following breaking changes were made to the rand library:
* Rng::gen_vec() was removed. This has been replaced with Rng::gen_iter() which
will return an infinite stream of random values. Previous behavior can be
regained with `rng.gen_iter().take(n).collect()`
* Rng::gen_ascii_str() was removed. This has been replaced with
Rng::gen_ascii_chars() which will return an infinite stream of random ascii
characters. Similarly to gen_iter(), previous behavior can be emulated with
`rng.gen_ascii_chars().take(n).collect()`
* {IsaacRng, Isaac64Rng, XorShiftRng}::new() have all been removed. These all
relied on being able to use an OSRng for seeding, but this is no longer
available in librand (where these types are defined). To retain the same
functionality, these types now implement the `Rand` trait so they can be
generated with a random seed from another random number generator. This allows
the stdlib to use an OSRng to create seeded instances of these RNGs.
* Rand implementations for `Box<T>` and `@T` were removed. These seemed to be
pretty rare in the codebase, and it allows for libcore to not depend on
liballoc. Additionally, other pointer types like Rc<T> and Arc<T> were not
supported. If this is undesirable, librand can depend on liballoc and regain
these implementations.
* The WeightedChoice structure is no longer built with a `Vec<Weighted<T>>`,
but rather a `&mut [Weighted<T>]`. This means that the WeightedChoice
structure now has a lifetime associated with it.
cc #13851
[breaking-change]
```
- std: Recreate a `rand` module
```
This commit shuffles around some of the `rand` code, along with some
reorganization. The new state of the world is as follows:
* The librand crate now only depends on libcore. This interface is experimental.
* The standard library has a new module, `std::rand`. This interface will
eventually become stable.
Unfortunately, this entailed more of a breaking change than just shuffling some
names around. The following breaking changes were made to the rand library:
* `Rng::gen_vec()` was removed. This has been replaced with `Rng::gen_iter()`
which will return an infinite stream of random values. Previous behavior can
be regained with `rng.gen_iter().take(n).collect()`
* `Rng::gen_ascii_str()` was removed. This has been replaced with
`Rng::gen_ascii_chars()` which will return an infinite stream of random ascii
characters. Similarly to `gen_iter()`, previous behavior can be emulated with
`rng.gen_ascii_chars().take(n).collect()`
* {IsaacRng, Isaac64Rng, XorShiftRng}::new() have all been removed. These all
relied on being able to use an OSRng for seeding, but this is no longer
available in librand (where these types are defined). To retain the same
functionality, these types now implement the `Rand` trait so they can be
generated with a random seed from another random number generator. This allows
the stdlib to use an OSRng to create seeded instances of these RNGs.
* Rand implementations for `Box<T>` and `@T` were removed. These seemed to be
pretty rare in the codebase, and it allows for librand to not depend on
liballoc. Additionally, other pointer types like Rc<T> and Arc<T> were not
supported. If this is undesirable, librand can depend on liballoc and regain
these implementations.
* The WeightedChoice structure is no longer built with a `Vec<Weighted<T>>`,
but rather a `&mut [Weighted<T>]`. This means that the WeightedChoice
structure now has a lifetime associated with it.
* The `sample` method on `Rng` has been moved to a top-level function in the
`rand` module due to its dependence on `Vec`.
cc #13851
[breaking-change]
```
- Rename UTF16Item[s] to Utf16Item[s]
```
According to Rust's style guide acronyms should be CamelCase.
[breaking-change]
```
- auto merge of #14364 : alexcrichton/rust/libdebug, r=brson
```
This commit moves reflection (as well as the {:?} format modifier) to a new
libdebug crate, all of which is marked experimental.
This is a breaking change because it now requires the debug crate to be
explicitly linked if the :? format qualifier is used. This means that any code
using this feature will have to add `extern crate debug;` to the top of the
crate. Any code relying on reflection will also need to do this.
Closes #12019
[breaking-change]
```
- Move std::{reflect,repr,Poly} to a libdebug crate
```
This commit moves reflection (as well as the {:?} format modifier) to a new
libdebug crate, all of which is marked experimental.
This is a breaking change because it now requires the debug crate to be
explicitly linked if the :? format qualifier is used. This means that any code
using this feature will have to add `extern crate debug;` to the top of the
crate. Any code relying on reflection will also need to do this.
Closes #12019
[breaking-change]
```
- std: Rename strbuf operations to string
- std: Remove `String::from_owned_str` as it's redundant
## Other Changes
- Primitive types [now have a home in the
documnetation](https://github.com/mozilla/rust/pull/14513), where their
methods will be listed, and the traits they implement.
- References to owned vectors in the docs [have been mercilessly
destroyed](https://github.com/mozilla/rust/pull/14553).
- There is now a function [for parsing PATH environment variable-looking
strings](https://github.com/mozilla/rust/pull/14544) into their component
paths.
- `Rc::make_unique` [has been
added](https://github.com/mozilla/rust/pull/14522).
- Debuginfo representation of enums [has
improved](https://github.com/mozilla/rust/pull/14486) to be more consistent.
- Macros [can now be expanded in
patterns](https://github.com/mozilla/rust/pull/14298).
- There is now a lint [that warns when one enum variant is vastly larger than
the others](https://github.com/mozilla/rust/pull/14300). It is allow by
default.
- Regular expressions [can now be stored in
statics](https://github.com/mozilla/rust/pull/14423).
- rustdoc [will now inline
documentation](https://github.com/mozilla/rust/pull/14391) for reexported
items.
- A new [language design
FAQ](http://doc.rust-lang.org/complement-design-faq.html) [has been
added](https://github.com/mozilla/rust/pull/14370).
## New Contributors
- Ahmed Charles
- Ariel Ben-Yehuda
- Christoph Burgdorf
- Florian Hartwig
- Jonathan Reem
- Nikita Pekin
- Randati
- Reilly Watson
- Ryman
- Santiago Rodriguez
- Sean Gillespie
- Sergio Benitez
- Sylvestre Ledru
- Tom Jakubowski
- Utkarsh Kukreti
- fort
# New RFCs
- [Coercible and HasPrefix for Zero Cost
Coercions](https://github.com/rust-lang/rfcs/pull/91)
- [Disambiguate enum variant
names](https://github.com/rust-lang/rfcs/pull/94)
- [Filling in the details around unboxed
closures](https://github.com/rust-lang/rfcs/pull/97)
- [Uninitialized pointers](https://github.com/rust-lang/rfcs/pull/98)
- [Add a `partial_cmp` method to
`TotalOrd`](https://github.com/rust-lang/rfcs/pull/100)
- [Allow multiple fixed-size subslices borrows in one
pattern](https://github.com/rust-lang/rfcs/pull/101)
- [Auto-dereferencing non-raw
pointers](https://github.com/rust-lang/rfcs/pull/102)
- [Add a freestanding target](https://github.com/rust-lang/rfcs/pull/106)
- [Pattern guards with
bind-by-move](https://github.com/rust-lang/rfcs/pull/107)
- [Convenience syntax for module
imports](https://github.com/rust-lang/rfcs/pull/108)
- [Remove `#[crate_id]`](https://github.com/rust-lang/rfcs/pull/109)
- [Resolve `::foo::...` when compiling crates named
`foo`](https://github.com/rust-lang/rfcs/pull/110)
- [Index traits](https://github.com/rust-lang/rfcs/pull/111)
- [Remove cross-borrowing](https://github.com/rust-lang/rfcs/pull/112)
- [Provide a common API across `Option` and the `Ok` and `Err` variants of
`Result`](https://github.com/rust-lang/rfcs/pull/113)
# Community Updates
- [Are we web yet? Not
really.](http://www.reddit.com/r/rust/comments/26oxl4/are_we_web_yet_not_really/)
- [We need hardware traps for integer
overflow](http://www.reddit.com/r/rust/comments/26ss21/embedded_in_academia_we_need_hardware_traps_for/)
- [Piston game engine: update on
progress](http://www.reddit.com/r/rust/comments/26u192/piston_game_engine_update_notice_on_progress/)
- [Practicality with Rust: Error
Handling](http://www.reddit.com/r/rust/comments/26xt8j/practicality_with_rust_error_handling/)
- [Debug validation vs
safety](http://www.reddit.com/r/rust/comments/26z1xa/debug_validation_vs_safety/)
- [rust-core now deprecated in favor of libcore
upstream](https://github.com/thestinger/rust-core)
- [Emacs Rust Development
Setup](http://bjbell.wordpress.com/2014/05/31/emacs-rust-development-setup/)
- [What was the result of the
mutpocalypse?](http://www.reddit.com/r/rust/comments/273gq2/what_was_the_result_of_the_mutpocalypse/)
I am happy that it just fizzled out and died.
- [Swift - initial commentary from Graydon
Hoare](http://www.reddit.com/r/rust/comments/276n30/swift_initial_commentary_from_graydon_hoare/)
- [Systems Programming in 2014 and
Beyond](http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/Panel-Systems-Programming-Languages-in-2014-and-Beyond),
a panel discussion featuring our very own Niko Matsakis, as well as Andrei
Alexandrescu (D developer), Rob Pike, and Bjarne Stroustroup.
- [Open Call for Contributions: 7 High Priority Rust Libraries That Need To Be
Written](http://www.reddit.com/r/rust/comments/27cphk/an_open_call_for_contributions_7_high_priority/)
- [Piston 0.1
Released](http://www.reddit.com/r/rust/comments/27ig84/piston_01_released/)
- [The definitive, end-all source for why Rust is named
"Rust"](http://www.reddit.com/r/rust/comments/27jvdt/internet_archaeology_the_definitive_endall_source/)
- [A tool for viewing `RUST_LOG` output](http://cmr.github.io/rust-log-viewer/)
- [Snowmew's Architecture: Part
1](http://www.reddit.com/r/rust/comments/27qn6y/snowmews_architecture_part_1/)
# 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.
In the last three weeks, we landed 77 PRs.
## Notable additions
- Patrick Walton improved Wikipedia paint time by 40x through display list optimization.
- Jack and many others landed a rust upgrade.
- Patrick Walton added reference counted flows, on the path to incremental layout support.
- Edit Balint reduced the number of times that we invoke rustc during the Servo build.
- Martin Robinson fixed many Linux rendering issues, especially on NVidia cards.
## New Contributors
- Edit Balint (ebalint)
## Meetings and Notes
There was a [workweek](https://github.com/mozilla/servo/wiki/Workweek-roadmap)
last week, and our previous
[two](https://github.com/mozilla/servo/wiki/Meeting-2014-05-19)
[meetings](https://github.com/mozilla/servo/wiki/Meeting-2014-05-13) covered
the Rust upgrade, 32-bit support, the HTML parser, and gfx rendering.

View File

@ -0,0 +1,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.

View File

@ -0,0 +1,115 @@
Title: This Week in Rust 53
Date: 2014-06-22 13:40
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, it was anounced that Steve Klabnik [has been hired to work
exclusively on our
documentation](http://www.reddit.com/r/rust/comments/28bew8/rusts_documentation_is_about_to_drastically/),
starting tomorrow.
<!-- more -->
# What's cooking on master?
73 pull requests were merged in the last week.
## Breaking Changes
The complete breaking change log is available
[here](https://gist.github.com/cmr/d0e6d145af65e6d74713), and you can view it
with `git log --no-merges --grep 'breaking-change' --since 6/14/2014 --until 6/21/2014`.
## Other Changes
- Cross compiling to iOS [is now
supported](https://github.com/rust-lang/rust/pull/14715).
- The borrow checker [has seen a bunch of
cleanup](https://github.com/rust-lang/rust/pull/14947) removing the obsolete
notion of "restrictions".
- Byte strings and byte literals [have been added to the
language](https://github.com/rust-lang/rust/pull/14880).
- Dataflow [uses the new CFG](https://github.com/rust-lang/rust/pull/14873)
rather than a syntax-based analysis.
- The non-exhaustive pattern error [now gives a pattern which is not
matched](https://github.com/rust-lang/rust/pull/14731).
- The stability index [has seen some
extension](https://github.com/rust-lang/rust/pull/15029).
## New Contributors
- Christopher Bergqvist
- Conrad Kleinespel
- John Schmidt
- Nathan Typanski
- Niklas Koep
# New RFCs
- [Revised UFCS performance](https://github.com/rust-lang/rfcs/pull/132)
- [Flexible target specification](https://github.com/rust-lang/rfcs/pull/131)
- [Remove special treatment of Box by borrow
checker](https://github.com/rust-lang/rfcs/pull/130)
- [Refine the `asm!` extension](https://github.com/rust-lang/rfcs/pull/129)
- [Rename mod.rs files to self.rs](https://github.com/rust-lang/rfcs/pull/128)
- [Opt-in builtin traits take 2, default and negative
impls](https://github.com/rust-lang/rfcs/pull/127)
- [Add optional type parameter to
`include_bin!`](https://github.com/rust-lang/rfcs/pull/126)
- [Add prefetch intrinsics](https://github.com/rust-lang/rfcs/pull/125)
- [Add `cloned` and `stable`
keywords](https://github.com/rust-lang/rfcs/pull/124)
- [Rename `Share` to `Threadsafe`](https://github.com/rust-lang/rfcs/pull/123)
- [Syntax sugar for prefix-style type parameter
lists](https://github.com/rust-lang/rfcs/pull/122)
# Community Updates
- [Snowmew's architecture part 2: data
management](http://csherratt.github.io/csherratt/blog/2014/06/22/snowmews-architecture-part-2/)
- [`rust-osc`](http://www.reddit.com/r/rust/comments/2828nq/rustosc_open_sound_control_10_over_udp_in_rust/),
Open Sound Control 1.0 over UDP in Rust.
- [Piston Game Engine: Progress
Update](http://www.reddit.com/r/rust/comments/28srso/piston_game_engine_notice_on_progress/)
- [`Checked<T>`](https://gist.github.com/Florob/0ec238fa00a0c9b40bf7), a type
for more ergonomic checked integer arithmetic.
- [Weekly meeting
notes](http://www.reddit.com/r/rust/comments/28exbu/meetingweekly20140617_rfcs_unsafe_fields_loadable/)
- [`rust-empty` 0.5
released](http://www.reddit.com/r/rust/comments/28cu3g/rustempty_05_released_compile_and_run_on_file/)
# 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.
In the last two weeks, we landed 53 PRs.
## Notable additions
- Brian Anderson landed parallel renedering
- Lars Bergstrom and Manish Goregaokar changed Servo to use a prebuilt Rust compiler (reducing build times from hours to < 10 minutes!) and enabled Travis CI builds
- ms2ger added support for rapidly failing the script task when the JS engine goes OOM
- fdipilla added support for spaces in paths in our configure scripts
- Tetsuharu OHZEKI added support for internal mutability for many pieces of code in Servo
- Martin Robinson added overflow support to child layer sizes
- Matt Brubeck separated desktop and mobile zoom calculations
- schaars ensured that noscript elements are not displayed
- Bruno Abinader implemented querySelectorAll
- Luqman Aden fixed up build failures on Android
- Glenn Watson added a Rust string interning repo (though he declined to name it "yarnbox")
## New Contributors
Pierre Louis Aublin (schaars)
fdipilla
## Meetings and Notes
There were meetings [two weeks ago](https://github.com/mozilla/servo/wiki/Meeting-2014-06-09) discussing the next workweek and build system issues and [last week](https://github.com/mozilla/servo/wiki/Meeting-2014-06-17) about the move to Travis CI, embedding support, and the web platform tests.

View File

@ -0,0 +1,165 @@
Title: This Week in Rust 54
Date: 2014-06-30 12:25
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).
It's time for 0.11! The [prerelease candidate is
available](https://mail.mozilla.org/pipermail/rust-dev/2014-June/010618.html).
<!-- more -->
# What's cooking on master?
73 pull requests were merged in the last week.
## Breaking Changes
The complete breaking change log is available
[here](https://gist.github.com/cmr/9c3db4bc3f0a96426d49), and you can view it
with `git log --no-merges --grep 'breaking-change' --since 6/21/2014 --until
6/28/2014`. Some important ones:
- `*T` [is now known](https://github.com/rust-lang/rust/pull/15208) as `*const
T`.
- `struct` literals [are not
allowed](https://github.com/rust-lang/rust/pull/14885) in expressions that
precede a block.
- The type of `42` [is no longer
int](https://github.com/rust-lang/rust/commit/9e3d0b002a5c2e81d43351c9b8550a3f4ccfb8f9)
but will be inferred as normal.
## Other Changes
- In a series of many PRs, Steve [has started
work](https://github.com/rust-lang/rust/pull/15183) on a new tutorial, which
is available (in draft form) [here](http://doc.rust-lang.org/guide.html).
- Tasks [are now reusable](https://github.com/rust-lang/rust/pull/14886), in
that one can create a task, run a closure in it, and if it did not fail, the
task can be reused.
- Lints [now have a plugin
infrastructure](https://github.com/rust-lang/rust/pull/15024), meaning your
own, arbitrary lints can now be defined!
## New Contributors
- Alex Gaynor
- Arjan Topolovec
- Conrad Kleinespel
- Michael Zhou
- Mike Capp
- Pawel Olzacki
- Robert Buonpastore
- Ruud van Asseldonk
- Zach Pomerantz
# New RFCs
- [Remove the `'` from lifetime
parameters](https://github.com/rust-lang/rfcs/pull/134)
- [Where clauses for more expressive
bounds](https://github.com/rust-lang/rfcs/pull/135)
- [Ban private items in public
APIs](https://github.com/rust-lang/rfcs/pull/136)
- [Objects of type T should be implicitly convertible to
&T](https://github.com/rust-lang/rfcs/pull/137)
- [Remove cross borrowing
entirely](https://github.com/rust-lang/rfcs/pull/139)
- [Clarify that removing language features requires an
RFC](https://github.com/rust-lang/rfcs/pull/140)
- [New lifetime elision rules](https://github.com/rust-lang/rfcs/pull/141)
- [Efficient single inheritance](https://github.com/rust-lang/rfcs/pull/142)
- [FromLiteral](https://github.com/rust-lang/rfcs/pull/143)
- [Memory exploit mitigation](https://github.com/rust-lang/rfcs/pull/145)
- [Scoped attributes for checked
arithmetic](https://github.com/rust-lang/rfcs/pull/146)
# Community Updates
- There was a meetup in San Fransisco on Thursday, about gamedev. [The
recording is available](https://air.mozilla.org/rust-meetup-june-2014/).
- Damien Katz [seems to be
recruiting](https://twitter.com/damienkatz/status/482712736170643457) for
Rust developers to build a distributed object store.
- The meeting notes [have a new
home](https://github.com/rust-lang/meeting-minutes).
- [Racer progress update](http://phildawes.net/blog/2014/06/24/racer-update/),
including vim support!
- [rusticom](https://github.com/breckinloggins/rusticom), a NES emulator.
- [Cargo alpha
announcement](https://mail.mozilla.org/pipermail/rust-dev/2014-June/010569.html)
- [Static checking of units in
Servo](https://blog.mozilla.org/research/2014/06/23/static-checking-of-units-in-servo/)
- [A basic dominion simulator](https://github.com/dradtke/rust-dominion)
- [ncurses Gravity Worm
clone](http://www.reddit.com/r/rust/comments/29dttw/first_attempt_at_ncursesbased_gravity_worm_game/)
- [dash-rust now has a nightly docset
feed](http://www.reddit.com/r/rust/comments/299mi0/dashrust_now_has_a_nightly_docset_feed/)
- [0.11 prerelease
testing](https://mail.mozilla.org/pipermail/rust-dev/2014-June/010618.html)
- [Piston game engine
update](http://www.reddit.com/r/rust/comments/29h27x/the_piston_game_engine_update_notice_on_progress/)
# This Week in Cargo
Cargo is the Mozilla-funded package manager slash build tool for Rust code.
Cargo is being developed by [Tilde](http://www.tilde.io/), in part due to their
previous experience building [Bundler](http://bundler.io/). You can find
Cargo's website at [http://crates.io/](http://crates.io/). Apparently, a
startup is already using `cargo.io`. Darn! The source of the website is
[here](https://github.com/wycats/cargo-website) currently, if you'd like to add
or change anything.
Cargo had its first 'release' on Monday, so this is the very first TWiC! As
part of this, Cargo has [moved to the rust-lang
organization](https://github.com/rust-lang/cargo/commit/382a1033260b5db3aeb8b19207c91775f48cb842).
That commit also serves as the original release. Cargo is 'pre-alpha,' so no
actual releases have been tagged. Yet. Basically, Cargo is at a point where it
is able to be used for basic Rust projects, and dogfooding it will help make
it awesome.
Uptake has been pretty good: [A search on
GitHub](https://github.com/search?q=Cargo.toml&ref=cmdform&type=Code) shows a
large number of code that references Cargo. Of course, some people will still
use other projects to handle this, especially with Cargo's lack of features.
For a short introduction to Cargo, [see my section in the new
Guide](http://doc.rust-lang.org/guide.html#hello,-cargo!). One note that's not
in there, however: you're intended to check your `Cargo.toml` file into version
control, similarly to a `Makefile`.
## Notable additions
Eighteen pull requets landed in this first week. Wow! Here are the bigger ones:
- [Removing Vagrant](https://github.com/rust-lang/cargo/pull/48)
- [Correct usage of DESTDIR](https://github.com/rust-lang/cargo/pull/49)
- [adding a LICENSE (Apache/MIT, just like Rust)](https://github.com/rust-lang/cargo/pull/50)
- [Handle misformatted versions with a nicer error message](https://github.com/rust-lang/cargo/pull/53)
- [Fix Windows tests](https://github.com/rust-lang/cargo/pull/56)
- [Remove 'test' binary from source tree, oops!](https://github.com/rust-lang/cargo/pull/59)
- [Don't recompile nested deps too frequently](https://github.com/rust-lang/cargo/pull/64)
- [Prep work for buildbot: Cargo now also uses bors](https://github.com/rust-lang/cargo/pull/70)
- [`cargo test` command added](https://github.com/rust-lang/cargo/pull/71)
- [Error properly on ssh URLs for dependencies](https://github.com/rust-lang/cargo/pull/72)
- [Use a custom `rm_rf` to paper over Windows git funkiness](https://github.com/rust-lang/cargo/pull/81)
- [Check for the existance of a manifest when reading packages](https://github.com/rust-lang/cargo/pull/83)
## New Contributors
- o11c
- gilles-leblanc
- huonw
- mcpherrinm
- dtrebbien
- halorgium
- Arcterus
- samebchase

View File

@ -0,0 +1,116 @@
Title: This Week in Rust 55
Date: 2014-08-18 22:28
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).
It's been a long while since a TWiR, and I apologize for that. This TWiR is
going to be much more abbreviated than usual. The normal pace will resume next
week.
<!-- more -->
# What's cooking on master?
There were 418 pull requests merged in the past two months, modulo any rollups
(which are usually a combination of 10-20 pull requests).
## Breaking Changes
88 commits contained breaking changes. Since this is a completely unreasonable
number (and I'm sure ancient breaking changes aren't interesting), I'll just
cover the last week's:
- A [bunch of changes](https://github.com/rust-lang/rust/pull/16332) happened
to `core::slice`, including some trait renames. Most code shouldn't be
affected by this, these traits are all in the prelude.
- A `Duration` type [has been
added](https://github.com/rust-lang/rust/pull/15934), and many functions
which logically take a duration have been changed to use it.
- Imports and items are [no longer allowed to
shadow](https://github.com/rust-lang/rust/pull/16482).
## Other Changes
Far too many for me to list! Impressively, pcwalton has been knocking down
backwards incompatible changes left and right. Currently, only [11
issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AP-backcompat-lang+milestone%3A1.0)
backwards incompatible language changes are tagged for 1.0. He has also
implemented [unboxed
closures](https://github.com/rust-lang/rfcs/blob/master/active/0044-closures.md), fixed a bunch of soundness issues, a large
portion of associated types, basic [`where`
clauses](https://github.com/rust-lang/rfcs/pull/135), [lifetime
elision](https://github.com/rust-lang/rfcs/blob/master/active/0039-lifetime-elision.md), and various smaller
issues.
There's been tons of library work, including stabilization, and cargo has
really taken off.
## New Contributors
- Adrien Brault
- Alexis Beingessner
- Alisdair Owens
- Andreas Tolfsen
- Andrew Poelstra
- Angus Lees
- Anton Lofgren
- Ben Gamari
- Bheesham Persaud
- Chris Nixon
- Chuck Ries
- DJUrsus
- Daniel Hofstetter
- David Vazgenovich Shakaryan
- Derecho
- Derek Harland
- Dzmitry Malyshau
- Eduardo Bautista
- Gioele Barabucci
- Hugo Jobling
- Ilya Dmitrichenko
- Jack Heizer
- Jake Scott
- James Hurst
- James Lal
- James Rowe
- Jason Thompson
- John Kåre Alsaker
- Jonas Hietala
- Kevin Walter
- LemmingAvalanche
- Matej Lach
- Mathijs van de Nes
- Michael Matuzak
- Michael Sproul
- Mike Robinson
- Nathan Froyd
- Paolo Falabella
- Patrick Yevsukov
- Peer Aramillo Irizar
- Peter Atashian
- Phil Dawes
- Philipp Gesang
- Prudhvi Krishna Surapaneni
- Robert Clipsham
- Russell
- Samuel Neves
- Simon Persson
- Stuart Pernsteiner
- Tim Joseph Dumol
- Tshepang Lekhonkhobe
- Yazhong Liu
- Yuri Albuquerque
- Zbigniew Siciarz
- dgoon
- donkopotamus
- kwantam
- masklinn
- Mitchell Nordine
- Nick Hamann

View File

@ -0,0 +1,140 @@
State of Rust 0.11.0
====================
:date: 2014-07-15 15:40
:category: Rust
:slug: state-of-rust-0.11.0
Hello and welcome to the *State of Rust*. `Rust`_ is a systems
language pursuing the trifecta: safe, concurrent, and fast.
Over the past 6 months since the last one of these updates was
written, Rust has evolved significantly: the standard library was
refactored to make Rust more convenient to use in embedded or
bare-metal platforms, the language has been greatly simplified (moving
most pointer types into libraries) and the package ecosystem has been
thriving under a new package manager.
The Rust Project
----------------
Rust is now its `own organization`_ on GitHub! This reflects that Rust
is a major project with its own community and culture, and not simply
another project under the Mozilla umbrella. Additionally, the `meeting
minutes`_ now live in that organization, if you're interested in
watching those. We have also introduced a `Discourse forum`_ for
discussing the design and implementation of Rust and its standard
libraries. An `RFC process`_ has been introduced for proposing
changes to the language.
We now have `official nightlies`_ and a `script that installs them`_, which
provides a dead-simple way to install Rust without waiting over half an hour
for a build. Our `online sandbox`_ also provides instant gratification, and
all doc examples are runnable in it.
Moving on from meta-topics, many changes have happened in the language
itself. Many features have been removed. These and other less-major
changes make the language simpler, more consistent, and more powerful.
An incomplete list:
* ``do`` expressions
* The ``Freeze`` kind
* The ``priv`` keyword (everything is private-by-default)
* All variations of ``@``-pointers. They are replaced by the library
type, ``Gc<T>``, which shares many of the same problems ``@`` did,
implementation-wise.
* All variations of ``~``-pointers. They are replaced by the library
types, ``Box<T>`` and ``Vec<T>`` for ``~T`` and ``~[T]``
respectively.
* Dereferencing is now overloadable, via the ``Deref`` and
``DerefMut`` types. This makes creating and using smart pointers
much more painless!
* A "placement new", or more accurately, "placement box" feature has
been added. This replaces ``~expr`` and will be extensible to user
types. ``box 42i`` has type ``Box<int>``. This feature is still
baking.
The libraries have also seen a lot of love. Rather than having a
single, monolithic ``libextra``, there are now multiple more focused
libraries. A list is available on our fancy new `documentation index
page`_. Of particular note, a huge amount of effort was spent
splitting ``libstd`` itself into smaller pieces. There is a (rather
large!) subset, which lives in ``libcore`` that uses no dynamic
allocation or other such runtime features. ``libcore`` is suitable for
use in embedded, bare-metal, and other resource constrained
environments. ``libstd`` still presents a unified interface to all of
the individual pieces, and is the stable entry point to the entire
standard library.
The compiler has also grown a plugin system, that allows for
user-defined syntax extensions, lint passes, and exportable macros.
This is not well documented yet, but the new `regex crate`_ takes
great advantage of this to provide compile-time checked regular
expressions that can compile *directly* into Rust code, rather than
always running them in a virtual machine at runtime or requiring a
complex JIT compiler for good performance.
Steve Klabnik has been hired on a 6 month contract to improve our
documentation. He has been busy filling in examples and writing our `new
guide`_. Our documentation will be vastly improved as time goes on, in
preparation for the big 1.0.
.. _Rust: http://www.rust-lang.org/
.. _We love contributions: https://github.com/rust-lang/rust/wiki/Note-guide-for-new-contributors
.. _own organization: https://github.com/rust-lang/
.. _online sandbox: http://play.rust-lang.org/
.. _official nightlies: http://www.rust-lang.org/install.html
.. _script that installs them: http://www.rust-lang.org/rustup.sh
.. _meeting minutes: https://github.com/rust-lang/meeting-minutes
.. _Discourse forum: http://discuss.rust-lang.org/
.. _RFC process: https://github.com/rust-lang/rfcs/
.. _documentation index page: http://doc.rust-lang.org/#libraries
.. _regex crate: http://doc.rust-lang.org/regex/
.. _new guide: http://doc.rust-lang.org/guide.html
The Rust Ecosystem
------------------
Perhaps the most marked change in Rust is its community. It is growing
faster than I could have anticipated. There are many projects being
undertaken by groups of people who aren't also working on the compiler
or standard library. This is a significant shift from the past, where
trying to do a project in Rust almost forced you to improve Rust or
abandon it. In particular:
* The Zinc_ project is building a bare-metal ARM stack aiming at
writing a completely safe RTOS toolkit. It uses a loadable syntax
extension to describe the hardware features of a particular
hardware platform.
* The Piston_ project is a growing community of game developers
building libraries and an engine to make developing interactive
graphical applications painless and safe.
* The Iron_ project has created a Rack-inspired web framework that
allows easily composable "middleware" to stack and build a robust
web application.
There are many other smaller libraries and projects the community is
undertaking, however these three represent major areas that Rust is
great for and are the largest (in terms of developers/maturity) in
their respective spaces.
Making things even better, the official package manager, Cargo_, has
finally been released! It is only in alpha, but is maturing quickly.
The magnificent `Rust CI`_ is tracking which repositories have Cargo
support. Uptake has been rapid, which bodes very well for its
continued success.
Looking Forward ("Is Rust ready yet?")
--------------------------------------
Rust is *not* ready yet. It still has a few more release cycles before 1.0. In
particular, the "unboxed closure" and "dynamically sized types" work is not
yet complete. There are also many minor changes to improve ergonomics in the
pipeline. That said, it is becoming more stable, and many major features are
complete. If you want to, give it a spin, and let us know how it goes!
.. _Zinc: http://zinc.rs/
.. _Piston: http://www.piston.rs/
.. _Iron: http://ironframework.io/
.. _Cargo: http://crates.io/
.. _Rust CI: http://rust-ci.org/

35
pelicanconf.py Normal file
View File

@ -0,0 +1,35 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = u'Corey Richardson'
SITENAME = u"This Week in Rust"
SITEURL = 'http://this-week-in-rust.org'
THEME = 'pelican-elegant-1.3'
TIMEZONE = 'America/New_York'
DEFAULT_LANG = u'en'
FEED_DOMAIN = SITEURL
FEED_ALL_ATOM = 'atom.xml'
CATEGORY_FEED_ATOM = 'categories/%s/atom.xml'
DEFAULT_PAGINATION = 10
ARTICLE_URL = 'blog/{date:%Y}/{date:%m}/{date:%d}/{slug}/'
ARTICLE_SAVE_AS = 'blog/{date:%Y}/{date:%m}/{date:%d}/{slug}/index.html'
ARCHIVES_SAVE_AS = 'blog/archives/index.html'
CATEGORY_URL = 'categories/{slug}/'
CATEGORY_SAVE_AS = 'categories/{slug}/index.html'
LANDING_PAGE_ABOUT = {
"title": "Cataloging the Rust community's awesomeness",
"details": """
A weekly newsletter about Rust and the Rust community, with bonus content
scattered about.
"""
}

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
Markdown==2.4
pelican==3.4

4
run.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
. ./bin/activate
./bin/pelican content -s pelicanconf.py -t themes/pelican-elegant-1.3
rsync -razvP --delete-after output/ cmr@octayn.net:twir