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.
This week's edition was edited by: nasa42, brson, and llogiq.
Updates from Rust Community
News & Blog Posts
- Rustaceans: Please keep a changelog!
- Building a simple JIT in Rust.
- Build an API in Rust with JWT authentication using Nickel.rs.
- Using Wayland from Rust, part 1.
- Language of the month: Rust, the results.
- embed_lang - An embeddable language written in Rust.
- Implementing a SuperCollider UGen in Rust.
- This week in Redox OS 7.
- This week in Servo 43.
Notable New Crates & Project Updates
- MIO released v0.5 which includes support for Windows, NetBSD, and Android.
- Rust by Example now has a new error handling section via this PR.
- notty. A new kind of terminal.
- Collenchyma. High Performance Computation for CUDA, OpenCL and common CPU.
- gaol. Cross-platform application sandboxing for Rust.
- RobotS. Actor system for Rust, inspired by Akka & Erlang.
- kaws. A tool for deploying multiple Kubernetes clusters in AWS using CoreOS, GPG, and Terraform.
- Kinglet. A modern asynchronous HTTP server for Rust.
- Rugra. An ultra minimal graphics engine in Rust.
- inlinable_string. An owned, grow-able UTF-8 string that stores small strings inline and avoids heap-allocation.
Updates from Rust Core
92 pull requests were merged in the last week.
See the triage digest and subteam reports for more details.
Notable changes
- Implement calling of
const fn
-methods in true constants. - Add suggestion of similar macro names to
macro undefined
error message. - Fix various bugs around empty structs and patterns.
- Allow constant evaluation of index operations on constant arrays and repeat expressions.
- Implement RFC 16, attributes on statements and expressions.
- std: Stabilize APIs for the 1.6 release.
- Cargo: Allow build scripts to specify dependencies.
New Contributors
- Adam Badawy
- Bhargav Patel
- Christopher Sumnicht
- Mihaly Barasz
- Mika Attila
- Ori Avtalion
- Paul A. Jungwirth
- Sean Griffin
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
No RFCs were approved this week!
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:
- Amend RFC 550 with (expanded) abstract specification rather than algorithm.
- Add a
IndexAssign
trait that allows overloading "indexed assignment" expressions likea[b] = c
. - Allow eliding more type parameters.
- Add thread-local custom panic handlers to customize the behavior of thread panics.
- Allow a custom panic handler.
- Add an
alias
attribute to#[link]
and-l
.
New RFCs
- Allocators, take III.
- Add
#[repr(pack = "N")]
. - Add
try_some
macro equivalent totry!
. - Expand
try!
macro with additional case. - Add a
pod
language item and marker trait.
Upcoming Events
- 12/8. San Diego Rust Meetup.
- 12/9. RustBerlin Hack and Learn.
- 12/10. Columbus Rust Society.
- 12/11. Rhein-Main Area Rust Meetup.
- 12/14. Seattle Rust Meetup.
- 12/15. Rust - Rethinking Systems Programming.
- 12/21. Paris - Rust Paris.
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
- Research Engineer - Servo at Mozilla.
- Senior Research Engineer - Rust at Mozilla.
- Open Source Software Engineer at MaidSafe.
- Software Engineer - Sensor Development at IronNet Cybersecurity.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Crate of the Week
This week's Crate of the Week is cargo-count – a neat way to summarize line counts for cargo projects.
Thanks to lizida who suggested it back in September. Submit your suggestions for next week!
Quote of the Week
The major philosophic difference between Rust today and Swift-as-I-envision-it is that Rust forces you to think about ownership everywhere, but Swift-as-I-envision-it should only force you to think about single ownership & borrowing if you want to optimize performance or guarantee that you have no encounters with the runtime.
If it helps, think of the extant Swift "inout" parameter modifier as being equivalent to "&mut", and imagine the logical swift extensions to support the rest of the Rust model.
This is a really important area for us to develop, but it also isn't the highest priority of the team. That means that Rust will maintain a lead in this area of applicability... unless someone motivated and capable from the open source community decides that it is really important to them, and makes it happen sooner.
— Chris Lattner on /r/rust.
Thanks to llogiq for the tip.