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
- 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!
Submit your suggestions 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] imag: Make
imag
forward--debug
and--verbose
to subcommands. - [moderate] rust: Very confusing error on attempt to pass
path::Path
by 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:
--version
and--versions
yield 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
new_parser_from_ts
- 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)
readdir
now also works on Solaris- String interner cleanup
&Mutex
is nowRefUnwindSafe
- Simplify
LinkedList
withShared
instead ofBox
- Deprecated API spring clean
- Cargo can now enable dependencies' features
cargo publish --dry-run
New Contributors
- abhi
- Aravind Gollakota
- Ben Boeckel
- Ben Stern
- David
- Dridi Boukelmoune
- Isaac Andrade
- Zhen Zhang
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 1574: Introduce more conventions around documenting Rust projects.
- RFC 1644: Default and expanded errors for rustc.
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:
- Promote
!
to a type - Add language support for bitfields.
- Add support for 128-bit integers.
- Add space-friendly arguments. Add
-C link-arg
and-C llvm-arg
which allow you to pass along argument with spaces. - Exclude macros from importing with
#[macro_use(not(...))]
. - Add
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.
- Add
assert_ne
to complimentassert_eq
. - Introduce non-panicking borrow methods on
RefCell<T>
. - Propose asserts. This rfc proposes that the following macros be added:
assert_gt
,assert_lt
,assert_ge
, andassert_le
.
New RFCs
- 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
i8
…i64
andu8
…u64
in a trait containing the family ofoverflowing
/checked
/wrapping
/saturating
variants 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.
Upcoming Events
- 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.
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
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.
On /r/programming.