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
News & Blog Posts
- Compiling Rust binaries for Windows 98 SE and more: a journey
- Zero To Production #0: Foreword
- 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!
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.
- 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<StatusCode>
- 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
#![no_builtins]
- 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
- use
once_cell
crate instead of custom data structure - simple NRVO
- remove ReScope
- exhaustively check
ty::Kind
during structural match checking - move borrow-of-packed-field unsafety check out of loop
- fix
InlineAsmOperand
expresions being visited twice during liveness checking - chalk: cleanup crate structure and add features for SLG/recursive solvers
- check non-
Send
/Sync
upvars captured by generator - support coercion between
FnDef
and arg-less closure and vice versa - more lazy normalization of constants
- miri: prepare Dlsym system for dynamic symbols on Windows
- use
T
's discriminant type inmem::Discriminant<T>
instead ofu64
- fix discriminant type in generator transform
impl From<Cow>
forBox
,Rc
, andArc
- another attempt to reduce
size_of<HashMap>
- set initial non-empty
Vec
size to 4 instead of 1 - make
std::char
functions and constants associated tochar
- stabilize
saturating_abs
andsaturating_neg
- add
len
andslice_from_raw_parts
toNonNull<[T]>
- add fast-path optimization for
Ipv4Addr::fmt
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
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 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.
RFCs
No RFCs are currently in the final comment period.
Tracking Issues & PRs
- [disposition: merge] Tracking issue for
std::io::{BufReader, BufWriter}::capacity
- [disposition: merge] impl
From<[T; N]>
forBox<[T]>
- [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
Range*<char>
iterable) - [disposition: merge] Stabilize core::panic::Location::caller
- [disposition: merge] Stabilize str_strip feature
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- 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
North America
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
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.
– Kornel Lesiński on rust-users
Thanks to trentj for the suggestions!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.