Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us an email! Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.
Updates from Rust Community
News & Blog Posts
- Announcing Rust 1.11.
- A year of Rust and DNS. Benjamin Fry talks about his experience developing trust-dns - a Rust based DNS server.
- GC support in Rust: API design.
- Writing a JPEG decoder in Rust - Part 2: Implementation I.
- A Tokio echo server in 35 lines. Tokio is a network application framework for Rust.
- Filters everywhere. Short intro to the "filters" crate and remaining issues.
- [ discussion] The
?
operator will be harmful to Rust. - [slides] Rust: Systems programming for everyone.
- [podcast] New Rustacean bonus episode 6. Building (and celebrating) all the little, not-so-glorious pieces of the Rust ecosystem.
New Crates & Project Updates
- rustup 0.6.0 released with bug fixes in manifest handling.
- aelitabot.xyz. bors-like commit checking for GitHub repositories.
- GilRs. GilRs abstract platform specific APIs to provide unified interfaces for working with gamepads.
- This week in Servo 75.
- This week in Rust docs 18.
- This week in Tock embedded OS 3.
- This week in TiKV 2016-08-21.
- This week in Ruma 2016-08-21.
- This month in Zone of Control 2016-08-22. ZoC is a turn-based hexagonal strategy game written in Rust.
Crate of the Week
No crate was selected for this week for lack of votes. Ain't that a pity?
Submit your suggestions and votes for next week!
Call for Participation
Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
- [easy] tokei: Update existing languages with their String literals.
- [easy] servo: Change starting line of scripts from 0 to 1.
- [easy] servo: Remove the mako zip file and use proper python dependencies.
- [less easy] servo: Create a
./mach test-perf
command. - [easy] rust: Error code list which need to be updated to new format.
- [easy] rustup: Don't capture backtraces without RUST_BACKTRACE=1. An easy fix, done in two steps, first modifying error-chain, then upgrading it in rustup.
- [easy] rustup: Add command to install shell completions.
- [moderate] rust: improve error message when resolution via Deref actually required DerefMut. Good first type system bug.
- [hard] imag: implement bindings to lua/lisp (ketos)/rhai for the filter library
- [hard] filters: implement
BitAnd
,BitOr
,BitXor
andNot
for all implementations ofFilter<N>
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
167 pull requests were merged in the last two weeks.
- 1.11 Changelog
- 1.12 stabilizations
!
is now a proper typestd::slice::Iter
nowAsRef
s to the underlying slicestd::vec::IntoIter::as_
{slice
,mut_slice
}Debug
forstd::vec::IntoIter
- {
Cell
,RefCell
,UnsafeCell
}<T>
now haveFrom<T>
Drain
s now covariantvec::IntoIter
now covariant again- Extra methods on atomic types (implements RFC #1649)
panic::catch_unwind
slightly faster (but still an antipattern in normal code)- incremental compilation now obeys certain commandline args
- improved
&
ptr printing - No more RUST_NEW_ERROR_FORMAT (the new format is now live everywhere)
- MIR early exit cache invalidation fixed (one of CS' hard problems, even for Rust)
- More groundwork for
item_like_import
s (part of RFC #1560) - LLVM backports to fix perf regressions
- MIPS-uclibc target added
- Cargo now allows
opt-level=
{s
,z
} in profiles - Cargo resolve no longer cares for the package root
- Cargo: OpenSSL is now correctly downloaded from www.openssl.org (formerly openssl.org, but they changed it apparently)
rustdoc
now omits the!
in links to macros
New Contributors
- Alexandre Oliveira
- Amit Levy
- clementmiao
- DarkEld3r
- Dustin Bensing
- Erik Uggeldahl
- Jacob
- JessRudder
- Michael Layne
- Nazım Can Altınova
- Neil Williams
- pliniker
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- RFC 1679: Add "panic-safe" or "total" alternatives to the existing panicking indexing syntax.
- RFC 1640: Add
checked_sub()
already known from various primitive types to theDuration
struct. - RFC 1589: Define a best practices procedure for making bug fixes in the compiler.
- RFC 1561: Macro naming and modularisation.
- RFC 1623: Omit
'static
lifetimes to reference or generics lifetime values instatic
orconst
declarations. - RFC 1681: Procedural macros 1.1.
Final Comment Period
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now. This week's FCPs are:
mem::discriminant()
. Add a function that extracts the discriminant from an enum variant as a comparable, hashable, printable, but (for now) opaque and unorderable type.- Eager expansion of macros.
- Add a compiler flag that emits crate dependencies on a best-effort basis.
- regex 1.0.
- Allow type aliases in enumeration repr attributes.
- Introduce
dyn
keyword. - Add a
vis
matcher tomacro_rules!
that matches valid visibility annotations. - Saturating and checking integer wrapper types.
libstd::sys
, the greatlibstd
refactor.
New RFCs
- A process for establishing the Rust roadmap.
- Add two functions,
ptr::read_unaligned
andptr::write_unaligned
, which allows reading/writing to an unaligned pointer. - Enable customizing the linkage of a platform's C runtime.
- Add std::function macro for getting the name of the current function.
Upcoming Events
- 8/24. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 8/25. Rust release triage at #rust-triage on irc.mozilla.org.
- 8/29. Rust Sthlm: Rust on the Web.
- 8/29. Rust on the web Rust Meetup Stockholm #2.
- 8/31. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 9/5. Rust Cologne/Bonn: Compiling Rust to your Browser.
- 9/5. Zurich / Switzerland: Rust Meetup - Lecture: Rust
. - 9/9. RustConf 2016.
- 9/9. Rust Table of Regulars Darmstadt.
- 9/9. Tokio Hack Night.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email Erick Tryzelaar or Brian Anderson for access.
fn work(on: RustProject) -> Money
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
No quote was selected for QotW.