summaryrefslogtreecommitdiffstats
path: root/content/2013-08-04-this-week-in-rust.markdown
diff options
context:
space:
mode:
authorCorey Richardson <corey@octayn.net>2014-11-05 17:12:45 -0500
committerCorey Richardson <corey@octayn.net>2014-11-05 17:12:45 -0500
commitb90d2b10b0708aba718b121861d59555c6818295 (patch)
treec400703ca4f13b34d5ac09099560ebc2f1782f62 /content/2013-08-04-this-week-in-rust.markdown
Initial commit
Diffstat (limited to 'content/2013-08-04-this-week-in-rust.markdown')
-rw-r--r--content/2013-08-04-this-week-in-rust.markdown181
1 files changed, 181 insertions, 0 deletions
diff --git a/content/2013-08-04-this-week-in-rust.markdown b/content/2013-08-04-this-week-in-rust.markdown
new file mode 100644
index 0000000..37636b8
--- /dev/null
+++ b/content/2013-08-04-this-week-in-rust.markdown
@@ -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.