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
News & Blog Posts
- Compiling Rust binaries for Windows 98 SE and more: a journey
- Zero To Production #0: Foreword
- Some Extensive Projects Working with Rust
- Writing Python inside your Rust code — Part 4
- Drawing SVG Graphics with Rust
- Designing the Rust Unleash API Client
- Conway's Game of Life on the NES in Rust
- How to organize your Rust tests
- Just: How I Organize Large Rust Programs
- Integrating Qt events into Actix and Rust
- Actix-Web in Docker: How to build small and secure images
- Angular, Rust, WebAssembly, Node.js, Serverless, and... the NEW Azure Static Web Apps!
- The Chromium project finds that around 70% of our serious security bugs are memory safety problems
- Integration of AV-Metrics Into rav1e, the AV1 Encoder
- Oxidizing the technical interview
- Porting K-D Forests to Rust
- Rust Macro Rules in Practice
- Rust: Dropping heavy things in another thread can make your code 10000 times faster
- Rust's Runtime
- [audio] Tech Except!ons: What Microsoft has to do with Rust? With Ryan Levick
- [video] [Russian] Rust: Not as hard as you think - Meta/conf: Backend Meetup 2020
- [video] 3 Part Video for Beginners to Rust Programming on Iteration
- [video] Bringing WebAssembly outside the web with WASI by Lin Clark
- [video] Microsoft's Safe Systems Programming Languages Effort
- [video] Rust, WebAssembly, and the future of Serverless by Steve Klabnik
Crate of the Week
This week's crate is cargo-asm, a cargo subcommand to show the resulting assembly of a function. Useful for performance work.
Thanks to Jay Oster 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.
- pijama: easy issues
- mdbx-rs: Add support for more compile time options
- ruma: Replace impl_enum! with strum derives
- time-rs: Revamped parsing/formatting
- http-types: Request::query should match Tide's behavior
- http-types: Status should take TryInto
- http-types: Expose method shorthands for Request constructor
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
359 pull requests were merged in the last week
- update to LLVM 10
- llvm: expose tiny code model to users
- enable ARM TME (Transactional Memory Extensions)
- implement new
asm!syntax from RFC #2873
- always generated object code for
- break tokens before checking if they are 'probably equal'
- emit a better diagnostic when function actually has a 'self' parameter
- stabilize fn-like proc macros in expression, pattern and statement positions
once_cellcrate instead of custom data structure
- simple NRVO
- remove ReScope
- exhaustively check
ty::Kindduring structural match checking
- move borrow-of-packed-field unsafety check out of loop
InlineAsmOperandexpresions being visited twice during liveness checking
- chalk: cleanup crate structure and add features for SLG/recursive solvers
- check non-
Syncupvars captured by generator
- support coercion between
FnDefand arg-less closure and vice versa
- more lazy normalization of constants
- miri: prepare Dlsym system for dynamic symbols on Windows
T's discriminant type in
- fix discriminant type in generator transform
- another attempt to reduce
- set initial non-empty
Vecsize to 4 instead of 1
std::charfunctions and constants associated to
- add fast-path optimization for
impl Ord for proc_macro::LineColumn
- cargo: try installing exact versions before updating
- cargo: automatically update
patch, and provide better errors if an update is not possible
- cargo: add option to strip binaries
- rustfmt: merge configs from parent directories
- rustfmt: umprove error message when module resolution failed
- rustfmt: parse comma-separated branches in macro definitions
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 last 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.
- [disposition: merge] Tracking issue for
- [disposition: merge] impl
- [disposition: merge] Implement PartialOrd and Ord for SocketAddr*
- [disposition: merge] Stabilize AtomicN::fetch_min and AtomicN::fetch_max
- [disposition: merge] Resolve overflow behavior for RangeFrom
- [disposition: merge] impl Step for char (make
- [disposition: merge] Stabilize core::panic::Location::caller
- [disposition: merge] Stabilize str_strip feature
No new RFCs were proposed this week.
- May 27. Montréal, QC, CA - Remote - RustMTL May 2020
- May 27. Wrocław, PL - Remote - Rust Wrocław Meetup #20
- May 27. London, UK - Remote - LDN Talks May 2020
- May 28. Berlin, DE - Remote - Rust Hack and Learn
- June 3. Johannesburg, ZA - Remote - Johannesburg Rust Meetup
- June 8. Auckland, NZ - Remote - Rust AKL
- June 9. Seattle, WA - Remote - Seattle Rust Meetup
Tweet us at @ThisWeekInRust to get your job offers listed here!
- Rust Back End Engineer, Core Banking - TrueLayer - Milan, Italy
- Sr. SW Engineer (TW or Remote) - NZXT - Taipei, Taiwan
- Rust Graphics Engineer - Elektron - Gotheburg, Sweden
Quote of the Week
Things that are programming patterns in C are types in Rust.
Thanks to trentj for the suggestions!