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.
Check out this week's This Week in Rust Podcast
Updates from Rust Community
No official Rust announcements this week! :)
Tooling
Newsletters
Observations/Thoughts
- 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
- 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
Project Updates
- 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
Miscellaneous
- 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!
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.
- 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
- resolve
char
as a primitive even if there is a module in scope - forbid
#[track_caller]
on main - remove restriction on type parameters preceding consts w/ feature const-generics
- implement the
min_const_generics
feature gate - tweak confusable idents checking
- miri: accept some post-monomorphization errors
- bubble up errors from
FileDescriptor::as_file_handle
- simplify
array::IntoIter
- polymorphize: unevaluated constants
- instance: polymorphize upvar closures/generators
- clean up const-hacks in int endianess conversion functions
- add
as_mut_ptr
toNonNull<[T]>
- make
MaybeUninit::as_
(mut_
)ptr
const - make
IntoIterator
lifetime bounds of&BTreeMap
match with&HashMap
- implement
into_keys
andinto_values
for associative maps - stabilize
Ident::new_raw
- limit I/O vector count on Unix
- add
unsigned_abs
to 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
main()
- 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.
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.
RFCs
No RFCs are currently in the final comment period.
Tracking Issues & PRs
No Tracking Issues or PRs are currently in the final comment period.
New RFCs
- Proposal for POSIX error numbers in
std::os::unix
- Standardize methods for leaking containers
- Introduce '$self' macro metavar for hygienic macro items
Upcoming Events
Online
- August 11. Saarbrücken, DE - Rust-Saar Meetup
3u16
- 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
North America
- August 13. Columbus, OH, US - Columbus Rust Society - Monthly Meeting
- August 25. Dallas, TX, US - Dallas Rust - Last Tuesday
Asia Pacific
If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access.
Rust Jobs
- 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!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.