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
- Mozilla is shipping its first production Rust code in Firefox 48.
- Linux perf gets Rust symbol demangling support.
- Testing strategies for Corrode. Corrode is a C to Rust translator.
- Rust for Node.js developers - Part 3. Crates, Modules and the web.
- How to package Rust applications to RPM using vendoring.
- A Rust-powered public web page in 5 minutes.
New Crates & Project Updates
- Rust Project changelog for 2016-07-15. Updates to rustup, libc, net2, regex, websites.
- rustup 0.3 released. Includes fixes for downloading old releases, various cleanups, and preliminary (non-functional) rustls support.
- Lyon. GPU-based 2D graphics rendering experiments in Rust.
- Gluon. A static, type inferred and embeddable language written in Rust.
- Tango. Markdown-based Literate programming in Rust, integrated with Cargo.
- ScreenRuster. X11 screen saver and locker.
- These weeks in Servo 71.
- This week in Rust docs 13.
- This week in Ruma - July 17, 2016.
- What's coming up in imag 11.
Crate of the Week
This week has a belated Crate of the Week with Vincent Esche's self-submitted cargo-modules, which gives us the
cargo modules subcommand that shows the module structure of our crates in a tree view, optionally warning of orphans. Thanks, Vincent!
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] imag: Make
- [moderate] rust: Very confusing error on attempt to pass
path::Pathby value. This is bad error message that is hit often. Good bug to get familiar with the compiler.
- [easy] rust: move coerce_match, coerce_calls and related tests into run-pass-valgrind. Just moving tests around. Easy introduction to the build system.
- [easy] rustbyexample.com is in need of maintainers. Good first tasks are writing Mutex examples and Arc examples.
- [hard] rustup: Write a GUI installer for rustup on Windows. This is involved but should be fun. It's an integration problem, writing a Windows GUI that hooks into the MSI installation system and calls into the rustup libraries. Required for rustup 1.0.
- [easy] cargo: Warn on the duplicate entry points for lib and bin.
- [easy] cargo: Can't specify precise crate version if there are multiple versions.
- [easy] error-chain: Display implementation should show the error's Display, not just the description. Looks like a simple fix.
- [easy] rust: Parsing inconsistencies (lambda, proc, return). This bug identifies some bugs where the rustc parser disagrees with the reference parser. Good first bug for someone interested in parsers.
- [easy] imag:
--versionsyield helptext instead of version(s).
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
105 pull requests were merged in the last two weeks.
- Match whole statements in macros
- Harder floats on MIPS
- New method
- Non-Squiggly-braced Macros now need Semicolon
- Simplify Macro Hygiene
- Stable order for handling type projection bounds
- calling directly imported trait methods no longer crashes rustc
- Unicode 9.0 update
- Simplify error reporting (potentially plugin-breaking)
readdirnow also works on Solaris
- String interner cleanup
- Deprecated API spring clean
- Cargo can now enable dependencies' features
cargo publish --dry-run
- Aravind Gollakota
- Ben Boeckel
- Ben Stern
- Dridi Boukelmoune
- Isaac Andrade
- Zhen Zhang
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- RFC 1574: Introduce more conventions around documenting Rust projects.
- RFC 1644: Default and expanded errors for rustc.
Final Comment Period
!to a type
- Add language support for bitfields.
- Add support for 128-bit integers.
- Add space-friendly arguments. Add
-C llvm-argwhich allow you to pass along argument with spaces.
- Exclude macros from importing with
global_asm!for module-level inline assembly.
- Allow all literals in attributes.
- RFC process for formatting style and Rustfmt defaults.
- Replace synchronization primitives with those from parking_lot.
- Dedicated strike team to resolve unsafe code guidelines.
- Introduce non-panicking borrow methods on
- Propose asserts. This rfc proposes that the following macros be added:
- Procedural macros 1.1.
- Startup initialized statics. Introduce the ability to initialize (i.e., mutate) static items (even non-mut ones) at the beginning of main in a compiler-guaranteed safe manner.
- Unified machine word trait. Unify functionality peculiar to
u64in a trait containing the family of
saturatingvariants of arithmetic operations, as well as a few new ones.
- Add non-panicking
abs()functions to all signed integer types.
- Add "panic-safe" or "total" alternatives to the existing panicking indexing syntax.
- 7/20. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 7/21. Rust Hack & Learn Karlsruhe.
- 7/27. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
fn work(on: RustProject) -> Money
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
fzammetti: Am I the only one that finds highly ironic the naming of something that's supposed to be new and cutting-edge after a substance universally synonymous with old, dilapidated and broken down?
paperelectron: Rust is as close to the bare metal as you can get.