Initial commit
This commit is contained in:
commit
b90d2b10b0
|
@ -0,0 +1,6 @@
|
|||
*.pyc
|
||||
bin
|
||||
lib
|
||||
include
|
||||
themes
|
||||
output
|
Binary file not shown.
Binary file not shown.
|
@ -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
|
|
@ -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
|
|
@ -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.
|
|
@ -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))
|
||||
|
|
@ -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' ".
|
||||
|
||||
<!-- 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)
|
|
@ -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)
|
|
@ -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/)
|
|
@ -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)
|
|
@ -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)
|
|
@ -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.
|
|
@ -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)
|
|
@ -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)
|
|
@ -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/).
|
||||
|
|
@ -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/)
|
|
@ -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.
|
|
@ -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!
|
|
@ -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).
|
|
@ -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.
|
|
@ -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.
|
|
@ -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/)
|
|
@ -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!"
|
|
@ -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.
|
|
@ -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/).
|
|
@ -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.
|
|
@ -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)
|
|
@ -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.
|
|
@ -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"
|
|
@ -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/)
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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)
|
|
@ -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!
|
|
@ -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.
|
|
@ -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)
|
||||
|
|
@ -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)
|
|
@ -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/).
|
|
@ -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.
|
|
@ -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 ` `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/)
|
|
@ -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)
|
|
@ -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/)
|
|
@ -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)
|
|
@ -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)
|
|
@ -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)
|
|
@ -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)
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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/)
|
|
@ -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.
|
|
@ -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)
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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/
|
|
@ -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.
|
||||
"""
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
Markdown==2.4
|
||||
pelican==3.4
|
Loading…
Reference in New Issue