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
- Announcing the Embedded Devices Working Group.
- Announcing stdweb 0.4 - export arbitrary functions to JavaScript.
- Speed without wizardry. Rust + WebAssembly and performance.
- Programming an ARM microcontroller in Rust at four different levels of abstraction.
- Should you Rust in embedded yet?
- Reasoning with types in Rust.
- Typestates in Rust.
- Discovery: Discover the world of microcontrollers through Rust! - 2018 edition.
- Oxidizing Fedora: Try Rust and its applications in Fedora 27.
- Debian: Rust architecture status.
- RustConf CFP is now open. Deadline is 13 April.
- RustFest CFP is now open. Deadline is 17 March.
- This week in Rust docs 94.
- [podcast] Rusty Spike Podcast - episode 20. Rust 1.24, Rayon, Facebook, Fedora, Snips, and benchmarks.
Crate of the Week
This week's crate is fselect, a crate to find files by SQL-like queries. Thanks to Jhspetersson 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.
- Get started with these beginner-friendly issues.
- [doc] rustc-guide: A guide to how rustc works and how to contribute to it has issues that need help. The difficulty ranges from "copy the contents of the rustc READMEs" or "proofreading" to "write about the dark bowls of X in rustc". Prior knowledge of compiler internals is not required.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
127 pull requests were merged in the last week
- fix exponential projection complexity on nested types
- avoid ICE in arg mistmatch error for tuple variants
- fix parsing of extern paths in types and poly-traits
- make ".e0" not parse as 0.0
- use sparse bitsets instead of dense ones for NLL results
- reset default binding mode when we pass through a
&
pattern - add nonstandard_style alias for bad_style
- fix span of visibility
- overhaul improper_ctypes output
- inform user where to give a type annotation
- handle custom diagnostic for
&str + String
- fix nested impl trait lifetimes
- error on nested impl Trait and path projections from impl Trait
- remove "static item recursion checking" in favor of relying on cycle checks in the query engine
- improve tuple struct field access hygiene
- macros: improve struct constructor field hygiene, fix span bug
- do not run the default panic hook inside procedural macros
- introduce UnpackedKind
- do not run MIR type checker twice
- MIR: gather move at SwitchInt, Assert terminators
- allow two-phase borrows of &mut self in ops
- incr.comp.: Don't keep RefCells in on-disk-cache borrowed in order to allow for recursive invocations
- rustc_trans: rewrite mips64 ABI code
- termination trait in tests
- detect wrong number of args when type-checking a closure
- add Iterator::try_for_each
- add Iterator::flatten
- add Condvar APIs not susceptible to spurious wake
- stabilize 'entry_and_modify' feature
- stabilize Box::leak
- Fix borrow checker unsoundness with unions
- Derive std::cmp::Reverse as Copy or Clone
- When encountering invalid token after
unsafe
, mention{
- Implement implied shortcut links for intra-rustdoc-links
- rename rdrnd target feature to rdrand
- book: Second edition is now the definitive edition
- rustc explain
- rustdoc: generate documentation for auto-trait impls
- rustdoc: don't crash when an external trait's docs needs to import another trait
- fix rustdoc test ICE
- make cargo-the-binary version the same as the Rust version
- cargo: warn Windows 7 users about old TLS
- cargo: display path to custom commands with
--list -v
New Contributors
- Andreas Streichardt
- Anthony Deschamps
- boats
- Bryan Drewery
- csmoe
- Dale Wijnand
- Dan Aloni
- Federico Poli
- hedgehog1024
- Hidehito Yabuuchi
- Jakub Adam Wieczorek
- Jimmy Brush
- moe
- Nathan Ringo
- newpavlov
- Vitali Lovich
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 2325: Stable SIMD in Rust.
- RFC 2226: Hexadecimal integers with fmt::Debug, including within larger types.
- RFC 2151: Raw identifiers. Add a raw identifier format
r#ident
, so crates written in future language epochs/versions can still use an older API that overlaps with new keywords. - RFC 2298:
?
repetition in macro rules. - RFC 2046: label-break-value. Allow a break not only out of
loop
, but of labelled blocks with no loop - RFC 2333: Prior art. A section to the RFC template where RFC authors may discuss the experience of other programming languages.
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] Rust 2018 roadmap.
- [disposition: merge] Cargo profile dependencies.
- [disposition: merge] Allow locals and destructuring in const fn.
- [disposition: merge] Finalize syntax of
impl Trait
anddyn Trait
with multiple bounds. - [disposition: merge] Amend RFC 0141 Lifetime elision: Mention deduplicated lifetimes.
- [disposition: merge] Update the disambiguation handling in RFC 1946 (intra-rustdoc-links) to match impl concerns.
New RFCs
- Standard library API for immovable types.
- Allow
loop
in constant evaluation. - Allow panicking in constants.
#[derive_no_bound(..)]
and#[derive_field_bound(..)]
.- Add
is_sorted
to the standard library.
Upcoming Events
The community team is trying to improve outreach to meetup organisers. Please fill out their call for contact info if you are running or used to run a meetup.
- Mar 4. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Mar 5. London, GB - Rust learning and hacking evening #8.
- Mar 6. Johannesburg, SA - Monthly Meetup of the Johannesburg Rustaceans.
- Mar 7. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- Mar 7. Atlanta, US - Grab a beer with fellow Rustaceans.
- Mar 7. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Mar 7. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Mar 8. Rust release triage.
- Mar 8. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Mar 8. San Diego, US - San Diego Rust March Meetup.
- Mar 11. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Mar 12. Seattle, US - Monthly meetup.
- Mar 13. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Mar 13. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Mar 13. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Mar 13. Rust Events Team Meeting.
- Mar 15. Cambridge, GB - Cambridge Rust Meetup.
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
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
No quote was selected for QotW.