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.
Updates from Rust Community
News & Blog Posts
- Announcing Rust 1.19.
- Towards a second edition of the compiler.
- Introducing PyO3 - Rust bindings for the Python interpreter.
- Introducing Tarpaulin - a code coverage tool for Rust.
- Measuring test coverage of Rust libraries.
- Using Rocket + error_chain for REST APIs in Rust.
- Gfx-rs - the new low-level core.
- Supporting workspaces in RLS.
- Making Redox self-hosting, status report 3.
- Making of RustDay Mexico City 2017, a RustBridge day.
- Rain of Rust – how we did it?
- This week in Rust docs 65.
- This week in Redox 26.
Crate of the 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.
- Call for Proposals is open for Rust Belt Rust 2017 until 7 August.
- Get in the swing with the libz blitz contest: Win free tickets to RustFest Zürich.
- [easy] rust-unic: Expand components/ucd/tests/category_tests.rs.
- [easy] rust-bindgen: Stop passing
whitelisted_itemsas an argument to the codegen functions, and use ctx.codegen_items() instead.
- [easy] rust-bindgen: Document bitfield usage in the users guide.
- [easy] rust-bindgen: Start emitting unions in stable mode.
- rust-corrode: Port Map, IntMap, Set, and IntSet methods from Haskell.
- ion: Better builtin help documentation.
- ion: List of builtins to implement.
- ion: List of methods in Ion.
- ion: Possible algebraic data types / enum support.
- ion: Prompt configuration.
- ion: Builtin argument parser (ie: getopt).
- ion: More sophisticated matching mechanisms.
- ion: Associative arrays (HashMaps).
- ion: Syntax discussion.
- ion: Functions and variable scopes.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
110 pull requests were merged in the last week
- LLVM 5.0 update (work in progress)
- RELRO support (hardening technique)
- compiler buildins abort on panic
- fix macro spans
- match pattern range cover check fixed
- repr alignment for unions
- support generic lifetime args in method calls
- allow linking of Address Sanitizer to dylibs/cdylibs
#[inline(always)]annotations (a good reminder not to overuse them)
- JSON error byte positions now always start at the top of the file
- rustbuild is now more eager to build our rust
- some more notes changed to suggestions
- improved error when mistyping
- more compact message for multiple unused args
- cargo now uses .gitignore-like pattern matching for files/paths
- Bruce Mitchener
- Evan Cameron
- Jacques-Henri Jourdan
- Joe Ranweiler
- Perry Fraser
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- RFC 2044: Put the RFCs repo under license terms.
- RFC 1946: Intra Rustdoc Links.
- RFC 1861: Add
extern typedeclarations for declaring types from external libraries which have an unknown size/layout.
- Amend #1440: allow
constitems to contain drop types.
Final Comment Period
- [disposition: merge] "Guide-level" and "Reference-level" explanations to replace how we teach and detailed design sections.
- [disposition: merge] Add replace and swap functions to RefCell.
- [disposition: merge] Generic associated types (associated type constructors).
- [disposition: postpone] Eager expansion of macros.
- [disposition: merge] Allow an optional vert at the beginning of a match branch.
- [disposition: merge] Future-proofing enums/structs with
- [disposition: merge] Enable nested method calls.
- [disposition: merge] Tweak object safety rules to allow static dispatch.
- stable mechanism to specify the behavior of panic! in no-std applications.
- Add impl Trait type alias and variable declarations.
Style RFCs are part of the process for deciding on style guidelines for the Rust community and defaults for Rustfmt. The process is similar to the RFC process, but we try to reach rough consensus on issues (including a final comment period) before progressing to PRs. Just like the RFC process, all users are welcome to comment and submit RFCs. If you want to help decide what Rust code should look like, come get involved!
The RFC style is now the default style in Rustfmt - try it out and let us know what you think!
Currently being discussed:
- Jul 27. Rust release triage.
- Aug 2. Rust User Group Cologne - Crate Polishing.
- Aug 2. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Aug 2. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Aug 7. Rust Belt Rust 2017 CFP deadline.
- Aug 9. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Aug 9. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Aug 9. OpenTechSchool Berlin - Rust Hack and Learn.
- Aug 10. Rust release triage.
- Aug 10. Columbus Rust Society - Monthly meetup.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
No quote was selected for QotW.