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.
Check out this week's This Week in Rust Podcast
Updates from Rust Community
No official Rust announcements this week! :)
- Steve Klabnik Interview
- Why QEMU should move from C to Rust
- First Impressions of Rust
- How to Stick with Rust
- Why learning Rust is great...As a second language
- What Is The Minimal Set Of Optimizations Needed For Zero-Cost Abstraction?
- Propane: an experimental generator syntax for Rust
- [ES] ¿Por qué me gusta tanto Rust?
Learn Standard Rust
- Moves, copies and clones in Rust
- Rust for a Pythonista #2: Building a Rust crate for CSS inlining
- Surviving Rust async interfaces
- Two Easy Ways to Test Async Functions in Rust
- Cloning yourself - a refactoring for thread-spawning Rust types
- Allocation API, allocators and virtual memory
- [ES] Polimorfismo con traits en Rust
- [PT] Aprendendo Rust: 06 - Controles de fluxo
- [PT] Meia hora aprendendo Rust - Parte 1
- [video] Crust of Rust: Channels
Learn More Rust
- Zero To Production #3: How To Bootstrap A Rust Web API From Scratch
- Using Rust Lambdas in Production
- Incorporate Postgres with Rust
- Let's implement a Bloom Filter
- A Guide to Contiguous Data in Rust
- Inbound & Outbound FFI
- Tutorial: Deno Apps with WebAssembly, Rust, and WASI
- Single Page Applications using Rust
- Implementing a Type-safe printf in Rust
- Building a Brainf*ck Compiler with Rust and LLVM
- Modernize network function development with this Rust-based framework
- Let's build a RedditBot to curate playlist links - I
- Let's build a RedditBot to curate playlist links - II
- Rust on iOS with SDL2
- [video] Using Linux libc in Rust - with the file-locker Crate
- [video] Embedded Rust Mob Programming
- [video] Implementing TCP in Rust (part 1)
- [video] Define a function with parameters in Rust
- Knurling-rs Announcement
- Meili raises 1.5M€ for open source search in Rust
- hors - instant coding answers via the command line have released v0.6.4, with pretty colorized output by default
- Building a faster CouchDB View Server in Rust
- The promise of Rust async-await for embedded
- Implementing the .NET Profiling API in Rust
- Possibly one step towards named arguments in Rust
- Embedded Rust tooling for the 21st century
- rustc 1.44.1 is reproducible in Debian
- Google engineers just submitted a new LLVM optimizer for consideration which gains an average of 2.33% perf.
Crate of the Week
This week's crate is bevy, a very capable yet simple game engine.
Thanks to mmmmib for the suggestion!
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.
- cargo: Deduplicate Cargo workspace information
- dotenv-linter: several good first issues
- ruma: several help wanted issues
- tensorbase: several good first issues
- kanidm: several good first issues
- Libre-SOC: Add PowerPC64 to Rust's new inline assembly implementation (payment available)
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
307 pull requests were merged in the last week
- add back unwinding support for Sony PSP
- fix ICE when using asm! on an unsupported architecture
- handle well known traits for more types
charas a primitive even if there is a module in scope
- remove restriction on type parameters preceding consts w/ feature const-generics
- implement the
- tweak confusable idents checking
- miri: accept some post-monomorphization errors
- bubble up errors from
- polymorphize: unevaluated constants
- instance: polymorphize upvar closures/generators
- clean up const-hacks in int endianess conversion functions
IntoIteratorlifetime bounds of
into_valuesfor associative maps
- limit I/O vector count on Unix
unsigned_absto signed integers
- BTreeMap: better way to postpone root access in DrainFilter
- hashbrown: do not iterate to drop if empty
- hashbrown: relax bounds on HashSet constructors
- hashbrown: avoid closures to improve compile times
- stdarch: add more things that do adds
- futures: avoid writes without any data in write_all_vectored
- clean up rustdoc's
- rustdoc: display elided lifetime for non-reference type in doc
Rust Compiler Performance Triage
- 2020-08-11. 1 regression, 1 improvements, 1 of them on rollups. No outstanding nags from last week.
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.
No RFCs are currently in the final comment period.
No Tracking Issues or PRs are currently in the final comment period.
- Proposal for POSIX error numbers in
- Standardize methods for leaking containers
- Introduce '$self' macro metavar for hygienic macro items
- August 11. Saarbrücken, DE - Rust-Saar Meetup
- August 11. Dallas, TX, US - Dallas Rust - Second Tuesday
- August 13. San Diego, CA, US - San Diego Rust - August 2020 Tele-Meetup
- August 19. Vancouver, BC, CA - Vancouver Rust - Rust Study/Hack/Hang-out Night
- August 20. RustConf
- August 13. Columbus, OH, US - Columbus Rust Society - Monthly Meeting
- August 25. Dallas, TX, US - Dallas Rust - Last Tuesday
- Senior Rust Engineer at equilibrium (Remote)
- Software Developer at DerivaDEX (Remote)
- Rust Core Engineer at CasperLabs (Remote)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
You're not allowed to use references in structs until you think Rust is easy. They're the evil-hardmode of Rust that will ruin your day.
Thanks to Tom Phinney for the suggestion!