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.
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.
- Implement calling of
const fn-methods in true constants.
- Add suggestion of similar macro names to
macro undefinederror 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.
- Adam Badawy
- Bhargav Patel
- Christopher Sumnicht
- Mihaly Barasz
- Mika Attila
- Ori Avtalion
- Paul A. Jungwirth
- Sean Griffin
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
- Amend RFC 550 with (expanded) abstract specification rather than algorithm.
- Add a
IndexAssigntrait that allows overloading "indexed assignment" expressions like
a[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
- Allocators, take III.
#[repr(pack = "N")].
try_somemacro equivalent to
try!macro with additional case.
- Add a
podlanguage item and marker trait.
- 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.
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.
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.