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 a pull request. 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
- Building a cross-platform game in Rust.
- Rust to WebAssembly, made easy.
- HolyJit: A JIT for Firefox's and Servo's JS engine written in Rust.
- Rust with session types for safe & high-performance codecs.
- Nightly rustdoc is changing markdown rendering, here's some common differences and how to fix them.
- How to deploy a Rocket application to Heroku
- Test driven development with Rust.
- This week in Rust docs 78.
- [podcast] Rusty Spike Podcast - Episode 4. Rust 1.21 release, popularity of the O’Reilly Rust book, GitHub Octoverse, module counts, and Servo adding JetStream.
Crate of the Week
This week's crate is colored a UNIX-based terminal color crate. Thanks to Kyle Galloway for the suggestion.
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.
- How to get involved with the new gfx-rs development.
- Contribute to Rust's 2017 impl period.
- CfP is open for FOSDEM 2018.
- semver-parser: Add examples to public items and methods.
- semver-parser: Add readme, keywords and categories to Cargo.toml.
- semver-parser: Add html_root_url attribute to crate root.
- semver-parser: Make structures with public fields non-exhaustive.
- semver-parser: Rename
Predicate
toComparator
andVersionReq
toRange
. - semver-parser: Support parsing range sets.
- semver-parser: Add documentation to the crate root and public items.
- semver-parser: Implement common traits for
Version
. - semver-parser: Implement common traits for
VersionReq
. - semver: Use
?
instead ofunwrap
in examples. - semver: Document error cases on
Version::parse
. - semver: Document error cases on
VersionReq::parse
. - semver: Turn references to other
semver
items into links. - semver: Add keywords and categories to Cargo.toml.
- semver: Add html_root_url attribute to crate root.
- semver: Make error types non-exhaustive.
- semver: Make fields on
Version
private. - semver: Support range sets.
- semver: Rename VersionReq to Range.
- winit: Wayland metabug.
- arrayvec: ArrayString lacks removal features.
- [easy] allocators-rs: malloc-bind: Use likely/unlikely.
- [medium] allocators-rs: elfc: Test in Travis and AppVeyor.
- [medium] allocators-rs: alloc-fmt: Skip early frames of backtrace.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
121 pull requests were merged in the last week
- rustbuild: Compile rustc with ThinLTO
- code suggestions for non-shorthand field pattern, no-mangle lints
- cleanly error for non-const variable in associated const
- remove or encapsulate the remaining non-query data in tcx
- make
erase_regions_ty
query anonymous - bump the minimum LLVM to 3.9
- backport ThinLTO LLVM 5 fixes
- rustc: Move bytecode compression into codegen
- rustc: Add
_imp_
symbols later in compilation - incr.comp.: Use 128bit SipHash for fingerprinting
- mark block exits as reachable if the block can break
- avoid unnecessary allocas for indirect function arguments
- std: Update randomness implementation on Windows
- fix a few bugs in drop generation
- introduce pthread_cancel() for terminating threads
- fix ABI breakage in syscall constants
- fix most rendering warnings from switching to CommonMark
- allow cargo install --version as well (preferred)
New Contributors
- cjkenn
- clippered
- greg
- Marco Concetto Rudilosso
- Sunjay Varma
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:
- [disposition: merge] Fallible collection allocation 1.0.
- [disposition: merge] Implicit caller location (third try to the unwrap/expect line info problem).
- [disposition: merge] Unsized rvalues.
- [disposition: merge] eRFC: Cargo build system integration.
- [disposition: merge] Type privacy and private-in-public lints.
New RFCs
- Cargo versioning.
- Movable array iterators.
- Imply Option.
- Support long path names on all Windows versions.
Upcoming Events
- Oct 26 & 27. Rust Belt Rust 2017 - Columbus OH.
- Oct 26. Finland Rust-lang group October meetup.
- Oct 26. Mozilla Community Dresden - Rust meetup.
- Oct 27. Rust Bangalore - Rust XML JSON and Serialization Workshop.
- Oct 28 & 29. Get In Touch With Rust! @ MozFest London
- Oct 30. Rust Oslo - Code generation and type providers in Rust.
- Oct 31. Rust Zürich - Calling Rust from C and Java - October Community Meetup.
- Nov 1. Boston Rust - Presentation and Hack Night.
- Nov 1. Rust Atlanta - Grab a beer with fellow Rustaceans.
- Nov 1. OpenTechSchool Berlin - Rust Hack and Learn.
- Nov 1. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Nov 1. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Nov 2. Rust Bay Area - Zero Knowledge Proof Macros and Cernan (data pipelining).
- Nov 2. Rust release triage.
- Nov 4. Rust Bangalore - Rust Concurrency Workshop.
- Nov 8. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Nov 8. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Nov 9. Rust DC - Mid-month Rustful.
- Nov 9. Columbus Rust Society - Monthly Meeting.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email the Rust Community Team for access.
Rust Jobs
- Distributed Application Developer at Sphere Identity, Auckland, NZ.
- Full-time Rust position at Commure, San Francisco, US.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
I guess I would say that, it’s not only important that it be possible to do a good design in a given language, but that the language actively encourage it by making the bad design painful. I think rust does a FANTASTIC job of this.
— /u/kyrenn during an AMA on developing a cross-platform game in Rust.
Thanks to Kyle Strand for the suggestion!