pub ThisWeekInRust {} – Telegram
pub ThisWeekInRust {}
992 subscribers
2 photos
2.41K links
Handpicked Rust updates,
delivered to your telegram.

Contacts: @sergeysova
Reposted from: https://this-week-in-rust.org
Source code: https://github.com/sergeysova/this_week_in_rust.rs
Another: @this_week_in_react
Download Telegram
Crate of the week: fancy-regex

This week's crate is fancy-regex a regex implementation using regex for speed and backtracking for fancy features.
Updates from core

add AArch64 big-endian and ILP32 targets
rust-lang/rust/pull/81455

improve handling of spans around macro result parse errors
rust-lang/rust/pull/81608

identify unreachable subpatterns more reliably
rust-lang/rust/pull/80632

fix issues with move closures and mutability
rust-lang/rust/pull/80092

const_evaluatable: consider sub-expressions to be evaluatable
rust-lang/rust/pull/81577

introduce future-compatibility warning for forbidden lint groups
rust-lang/rust/pull/81556

Box the biggest ast::ItemKind variants
rust-lang/rust/pull/81405

improve error message for disallowed ptr-to-int casts in const eval
rust-lang/rust/pull/81779

typeck: emit structured suggestions for tuple struct syntax
rust-lang/rust/pull/81737

faster few span methods
rust-lang/rust/pull/81735

fix bug with assert!() calling the wrong edition of panic!()
rust-lang/rust/pull/81647

make Allocator object-safe
rust-lang/rust/pull/81730

add Frames Iterator for Backtrace
rust-lang/rust/pull/81022

add Vec::extend_from_within method under vec_extend_from_within feature gate
rust-lang/rust/pull/79015

BTreeMap: make Ord bound explicit, compile-test its absence
rust-lang/rust/pull/81610

implement TrustedLen for Fuse<I: TrustedLen>
rust-lang/rust/pull/81599

rename Iterator::fold_first to reduce and stabilize it
rust-lang/rust/pull/79805

stabilize the Wake trait
rust-lang/rust/pull/74304

stabilize peekable_next_if
rust-lang/rust/pull/80011

stabilize poison API of Once, rename poisoned()
rust-lang/rust/pull/81745

stabilize remaining integer methods as const fn
rust-lang/rust/pull/80962

futures-rs: avoid once_cell in static wakers
rust-lang/futures-rs/pull/2332

hashbrown: implement From<HashMap<T, ()>> for HashSet<T>
rust-lang/hashbrown/pull/235

cargo: fix panic with doc collision orphan
rust-lang/cargo/pull/9142

cargo: fix env/cfg set for cargo test and cargo run
rust-lang/cargo/pull/9122

make rustdoc respect --error-format short in doctests
rust-lang/rust/pull/81675

clippy: fix let_underscore_drop false positive
rust-lang/rust-clippy/pull/6682

clippy: fix let_and_return false positive
rust-lang/rust-clippy/pull/6659

clippy: don't trigger exhaustive_structs for structs with private fields
rust-lang/rust-clippy/pull/6661

clippy: add new lint missing_panics_doc
rust-lang/rust-clippy/pull/6523

compiletest: Add option to emit compiler stderr per bitwidth
rust-lang/rust/pull/81817
Updates from Rust Community

Official
[Foundation] Hello World!
foundation.rust-lang.org

[Inside] 1.50.0 pre-release testing
blog.rust-lang.org

Newsletters
This Month in Rust GameDev #18 - January 2021
rust-gamedev.github.io

This Month in Rust OSDev (January 2021)
rust-osdev.com

Project/Tooling Updates
rust-analyzer Changelog #63
rust-analyzer.github.io

Launching wasm.rs: a collection of crates, a community
https://yrashk.medium.com/launching-wasm-rs-a-collection-of-crates-a-community-4344d2ba75b3

A Memory Safe TLS Module for the Apache HTTP Server
www.abetterinternet.org

Observations/Thoughts
Benchmarking Tokio Tasks and Goroutines
www.reddit.com

A Better Rust Profiler
matklad.github.io

An unsafe tour of Rust's Send and Sync
nyanpasu64.github.io

Improving texture atlas allocation in WebRender
nical.github.io

Rust Walkthroughs
Async Rust: Futures, Tasks, Wakers; Oh My!
msarmi9.github.io

Rust for Haskell Programmers!
mmhaskell.com

Rust CLI Game of Life tutorial - Part 1
dev.to

Where everything went wrong...
msirringhaus.github.io

Rust for Clojurists
https://gist.github.com/oakes/4af1023b6c5162c6f8f0

[ES] El formato RON: Rusty Object Notation
blog.adrianistan.eu

[video] 1Password Developer Fireside Chat: Introduction to Rust Macros
youtu.be

[video] Dynamic vs Static Dispatch in Rust
youtu.be

Miscellaneous
Congratulations, Rustaceans, on the creation of the Rust Foundation!
aws.amazon.com

Microsoft joins Rust Foundation
cloudblogs.microsoft.com

Google joins the Rust Foundation
opensource.googleblog.com

Mozilla Welcomes the Rust Foundation
blog.mozilla.org

Trusted Programming - Our Rust Mission at Huawei
trusted-programming.github.io

YSK: VSCode's most recent update fixed a quirk in Rust workflows
www.reddit.com

curl supports rustls
daniel.haxx.se

Architecting Artichoke Ruby: A Modular Ruby implementation written in Rust
artichoke/artichoke/blob/21045d8f1086c669dd428a3b5bdcc4a58e13acec/ARCHITECTURE.md

[video] Interview with Ashley Williams, Rust Foundation Interim Executive Director (Part 1)
youtu.be
Crate of the week: threadIO

This week's crate is threadIO, a crate that makes disk IO in a background thread easy and elegant.
Updates from core

parser: fix panic in 'const impl' recovery
rust-lang/rust/pull/81876

fix derived PartialOrd operators
rust-lang/rust/pull/81384

borrowck: refactor visited map to a bitset
rust-lang/rust/pull/81132

add suggest mut method for loop
rust-lang/rust/pull/81466

miri: Remove non-power-of-two SIMD vectors
rust-lang/miri/pull/1703

chalk: add Movability to Generator
rust-lang/chalk/pull/685

try fast_reject::simplify_type in coherence before doing full check
rust-lang/rust/pull/81744

fix suggestion to introduce explicit lifetime
rust-lang/rust/pull/81995

make suggestion of changing mutability of arguments broader
rust-lang/rust/pull/81990

optimize Vec::retain
rust-lang/rust/pull/81126

make Vec::split_at_spare_mut public
rust-lang/rust/pull/81687

BTreeMap: disentangle Drop implementation from IntoIter
rust-lang/rust/pull/81486

initialize BTree nodes directly in the heap
rust-lang/rust/pull/81494

stabilize the partition_point feature
rust-lang/rust/pull/81012

add Box::into_inner
rust-lang/rust/pull/80438

stdsimd: add SIMD shuffles for SimdType{2, 4, 8, 16, 32, 64}
rust-lang/stdsimd/pull/62

stdsimd: add bitmasks and simplify mask API
rust-lang/stdsimd/pull/61

libtest: allow multiple filters
rust-lang/rust/pull/81356

cargo: change git dependencies to use HEAD by default
rust-lang/cargo/pull/9133

cargo: emit warning on env variable case mismatch
rust-lang/cargo/pull/9169

crates.io: add COM0 and LPT0 to the list of reserved crate names (Windows users rejoice)
rust-lang/crates.io/pull/3271

clippy: fix suggestions that need parens in from_iter_instead_of_collect lint
rust-lang/rust-clippy/pull/6657

clippy: fix missing_panics_doc warning on unreachable!
rust-lang/rust-clippy/pull/6700

clippy: fix vec_init_then_push false positives
rust-lang/rust-clippy/pull/6697

clippy: downgrade trivial_regex to nursery
rust-lang/rust-clippy/pull/6696

clippy: new lint: bytes_nth
rust-lang/rust-clippy/pull/6695
Updates from Rust Community

Official
Announcing Rust 1.50.0
blog.rust-lang.org

Project/Tooling Updates
IntelliJ Rust changelog #141
intellij-rust.github.io

rust-analyzer changelog #64
rust-analyzer.github.io

A big release for relm
relm.antoyo.xyz

Observations/Thoughts
The XDG base directory specification and Rust
blog.liw.fi

Zero dependency images (of chaos) in Rust
state.smerity.com

Examples of declarative style in Rust
https://radekvit.medium.com/examples-of-declarative-style-in-rust-9fae89c0fea

Rust 2030 Christmas list: Better cfg
https://gist.github.com/PoignardAzur/8038f5ed7dc8d00e3e9472aca57fb35c

For the Love of Macros
matklad.github.io

The Tokio Upgrade from 0.2 to 1.x
fly.io

Cranelift, Part 2: Compiler Efficiency, CFGs, and a Branch Peephole Optimizer
cfallin.org

[audio] Building with Rust: Luca Palmieri on TrueLayer and Zero to Production
anchor.fm

[audio] Chats with James 008 - Yoshua Wuyts
jamesmunns.com

[video] Rust 1.50 Patch Review
www.youtube.com

Rust Walkthroughs
Actors with Tokio
ryhl.io

Building a microservice with Rust
medium.com/tenable-techblog

Rust is cool - Enums
thatgeoguy.ca

Rust CLI Game of Life tutorial - Part 2
dev.to

Calling Rust from a Cloudflare Worker
dev.to

Validating JSON input with Rust web services
dev.to

What would SQLite look like if written in Rust? -- Part 1
dev.to

Generalizing over Generics in Rust (Part 1) - AKA Higher Kinded Types in Rust
rustyyato.github.io

Procedural Macros: The Basics
blog.turbo.fish

Building an OpenStreetMap app in Rust, Part II
blogg.bekk.no

Look, Ma! No JS! - Compiling Rust to WebAssembly
www.novatec-gmbh.de

Simple ray tracer written in Rust from scratch
dranikpg/simple-rays

Short Circuit Sum in Rust
www.fpcomplete.com

Zero to Production in Rust, Part 7.1 - Skeleton And Principles For A Maintainable Test Suite
www.lpalmieri.com

CCSS Devclub Rust Workshop
www.notion.so

[video] Graphs in Rust: Let's Build a Maze!
youtu.be

Miscellaneous
Cleora - an ultra fast graph embedding tool written in Rust
Synerise/cleora

Cost-based query optimizations in multithreaded environments
vertexclique.com

Writing our own Cheat Engine: Exact Value scanning
lonami.dev

What would SQLite look like if written in Rust? — Part 1
medium.com/the-polyglot-programmer
Crate of the week: firestorm

Despite having no nominations, this week's crate is firestorm, a fast intrusive flamegraph profiling library.
Updates from core

suggest to create a new const item if the fn in the array is a const fn
rust-lang/rust/pull/81503

fixing bad suggestion for _ in const type when a function
rust-lang/rust/pull/81914

simplify eat_digits
rust-lang/rust/pull/81427

precompute ancestors when checking privacy
rust-lang/rust/pull/81574

optimize counting digits in line numbers during error reporting
rust-lang/rust/pull/82248

only store a LocalDefId in some HIR nodes
rust-lang/rust/pull/81611

to digit simplification
rust-lang/rust/pull/82094

reduce size of InterpErrorInfo to 8 bytes
rust-lang/rust/pull/82116

pass large interpreter types by reference, not value
rust-lang/rust/pull/82124

improve assert_eq! and assert_ne!
rust-lang/rust/pull/79100

add Mutex::unlock
rust-lang/rust/pull/81873

stabilize Arguments::as_str
rust-lang/rust/pull/82120

futures: FuturesUnordered: do not poll the same future twice per iteration
rust-lang/futures-rs/pull/2333

remove unsafe impl Send for CompletedTest & TestResult
rust-lang/rust/pull/82302

test: print test name only once on timeout
rust-lang/rust/pull/82349

cargo: propagate lto=off harder
rust-lang/cargo/pull/9182
Updates from Rust Community

Project/Tooling Updates
MoonZoon - New Rust fullstack framework
moonzoon.rs

rust-analyzer Changelog #65
rust-analyzer.github.io

Knurling-rs changelog #17
ferrous-systems.com

Observations/Thoughts
Rust for web development: 2 years later
kerkour.com

Integrating Rust and C++ in Firefox
manishearth.github.io

Building a telnet chat server with Rust and Lunatic
dev.to

Against Packaging Rust Crates
fy.blackhats.net.au

Why building a front-end framework in Rust is hard
lik.ai

Oxidizing Kraken
blog.kraken.com

Maybe We Can Have Nice Things
noncombatant.org

Three Things I Miss About Rust
bennett.dev/

Storages: an alternative to allocators
www.reddit.com

Rust Walkthroughs
Rust ownership, the hard way
chrismorgan.info

Handling Unix Kill Signals in Rust
dev.to

Replacing FastAPI with Rust: Part 5 - Rocket 0.5
dev.to

Running ML models in a game (and in Wasm!)
dev.to

What would SQLite look like if written in Rust? - Part 2
dev.to

A primer on code generation in Cranelift
blog.benj.me

Testing a Hardware Abstraction Layer (HAL)
ferrous-systems.com

Cross Compiling Rust GTK Projects for Windows
nivethan.dev

Procedural Macros: A simple derive macro
blog.turbo.fish

Building an OpenStreetMap app in Rust, Part III
blogg.bekk.no

Generalizing over Generics in Rust (Part 1.5): Mechanisms
rustyyato.github.io

Macros in Rust: A tutorial with examples
blog.logrocket.com

[ES] Pipelines en Rust(II)
yorodm.is-a.dev

[video] Rust for Windows
youtu.be

[video] Crust of Rust: Subtyping and Variance
youtu.be

[video] Learning Rust: Web Server with Actix Web
youtu.be

[video] [series] Rust For Beginners - Watch me code the Rustlings Tutorial
youtube.com

[video] [series] Easy Rust - learn to program in Rust with simple English
youtube.com

Miscellaneous
Python cryptography, Rust, and Gentoo
lwn.net

Mitigating Memory Safety Issues in Open Source Software
security.googleblog.com

matklad @ NEAR
matklad.github.io

Application-wide panic handling
domwillia.ms

Benchmarking low-level I/O: C, C++, Rust, Golang, Java, Python
medium.com/star-gazers

[video] Ask the Expert: Rust at Microsoft
youtu.be

[video] AWS re:Invent 2020: Next-gen networking infrastructure with Rust and Tokio
youtu.be

[video] Interview Part 2/2 with Ashley Williams, Rust Foundation Interim Executive Director
youtu.be
Crate of the week: lever

This week's crate is lever, a library for writing transactional systems.
Updates from core

implement -Z hir-stats for nested foreign items
rust-lang/rust/pull/82258

suggest character encoding is incorrect when encountering random null bytes
rust-lang/rust/pull/81856

suggest returning tail expressions that match return type
rust-lang/rust/pull/81769

improve suggestion for tuple struct pattern matching errors
rust-lang/rust/pull/81235

improve error message when found type is deref of expected
rust-lang/rust/pull/82364

AST: remove some unnecessary boxes
rust-lang/rust/pull/82321

apply lint restrictions from renamed lints
rust-lang/rust/pull/82620

remove storage markers if they won't be used during code generation
rust-lang/rust/pull/78360

remove many RefCells from DocContext
rust-lang/rust/pull/82305

prevent computing Item attributes twice
rust-lang/rust/pull/82265

new mir-opt pass to simplify gotos with const values
rust-lang/rust/pull/80475

add an impl of Error on Arc<impl Error>
rust-lang/rust/pull/80553

make ptr::write const
rust-lang/rust/pull/81167

make char and u8 methods const
rust-lang/rust/pull/82078

slight perf improvement on char::to_ascii_lowercase
rust-lang/rust/pull/81837

stabilize str_split_once
rust-lang/rust/pull/81940

specialize slice::fill with Copy type and u8/i8/bool
rust-lang/rust/pull/81874

futures: future::SelectAll::into_inner
rust-lang/futures-rs/pull/2363

futures: futures_util::stream::SelectAll::push should use &self
rust-lang/futures-rs/pull/2293

cargo: run rustdoc doctests relative to the workspace
rust-lang/cargo/pull/9105

cargo: throw error if CARGO_TARGET_DIR is an empty string
rust-lang/cargo/pull/8939

cargo: add support for [env] section in .cargo/config.toml
rust-lang/cargo/pull/9175

cargo: make it more clear which module is being tested when running cargo test
rust-lang/cargo/pull/9195
Updates from Rust Community

Official
Const generics MVP hits beta!
blog.rust-lang.org

[Inside] Lang team March update
blog.rust-lang.org

Project/Tooling Updates
IntelliJ Rust Changelog #142
intellij-rust.github.io

rust-analyzer changelog #66
rust-analyzer.github.io

Knurling-rs changelog #18
ferrous-systems.com

Last Month in Flott - March 2021
flott-motion.org

RampMaker 0.2 - Stepper Motor Acceleration Ramp Generator
flott-motion.org

Observations/Thoughts
Why we built the core auth library in Rust (interview with CTO of Oso)
console.dev

Data Manipulation: Pandas vs Rust
able.bio

Achieving warp speed with Rust
https://gist.github.com/little-dude/674de61df7f48547bdcc5bbe2860563d

Evolution of Kube
clux.github.io

Temporal RDO update optimization
dev.to

Introducing The Calypso Chronicles
dev.to

Rust: Beware of Escape Sequences\n
https://d3lm.medium.com/rust-beware-of-escape-sequences-85ec90e9e243#ee0e-58229fc84d02

Introducing Rustybot (part 3 of n)
objectdisoriented.evokewonder.com

Delete Cargo Integration Tests
matklad.github.io

Rust Walkthroughs
C++ to Rust - or how to render your mindset
jduchniewicz.com

Generic impl blocks are kinda like macros...
dev.to

Make a Back-End Number Guessing Game with Rust
dev.to

Captures in closures and async blocks
www.fpcomplete.com

Testing a driver crate
ferrous-systems.com

Using Rust for AWS Lambdas
beanseverywhere.xyz

Always-On Benchmarking in Rust
medium.com/edge-node-engineering

Building an OpenStreetMap app in Rust, Part IV
blogg.bekk.no

Solving Advent of Code 2020 in under a second
timvisee.com

The Case for the Typestate Pattern - Introducing Algebraic Data Types
www.novatec-gmbh.de

[DE] Weniger Frust mit Rust
www.golem.de

[video] Learning Rust: Procedural Macros
youtu.be

[video] Rust proxy server with Warp and Hyper
youtu.be

Miscellaneous
Ferrocene Part 3: The Road to Rust in mission- and safety-critical
ferrous-systems.com

How our AWS Rust team will contribute to Rust's future successes
aws.amazon.com

Librnoscript, Rust, and non-mainstream architectures
people.gnome.org

Always-On Benchmarking In Rust
medium.com/edge-node-engineering

[DE] Weniger Frust mit Rust
www.golem.de
Crate of the week: camino

This week's crate is camino, a library with UTF-8 coded paths mimicking std::os::Path's API.
Updates from core

upgrade to LLVM 12
rust-lang/rust/pull/81451

backport some LLVM compile-time improvements
rust-lang/rust/pull/82783

add natvis for Result, NonNull, CString, CStr, and Cow
rust-lang/rust/pull/82557

change error about unknown attributes to a warning
rust-lang/rust/pull/82702

shrink the size of Rvalue by 16 bytes
rust-lang/rust/pull/82727

move check only relevant in error case out of critical path
rust-lang/rust/pull/82738

add assert_matches! macro
rust-lang/rust/pull/82770

generalize Write impl for Vec<u8> to Vec<u8, A>
rust-lang/rust/pull/82862

avoid unnecessary Vec construction in BufReader
rust-lang/rust/pull/82728

improve slice.binary_search_by()'s best-case performance to O(1)
rust-lang/rust/pull/74024

add {BTreeMap, HashMap}::try_insert
rust-lang/rust/pull/82764

hashbrown: add try_insert
rust-lang/hashbrown/pull/247

cargo: fix filter_platform to run on targets other than x86
rust-lang/cargo/pull/9246

make rustdoc lints a tool lint instead of built-in
rust-lang/rust/pull/80527
Updates from Rust Community

Official
Planning the Rust 2021 Edition
blog.rust-lang.org

Newsletters
This Month in Rust GameDev #19 - February 2021
rust-gamedev.github.io

This Month in Rust OSDev (February 2021)
rust-osdev.com

RiB Newsletter #21 - More Rust and blockchains
www.reddit.com

Project/Tooling Updates
rust-analyzer Changelog #67
rust-analyzer.github.io

rust-gpu v0.3
EmbarkStudios/rust-gpu/releases/tag/v0.3.0

cargo-generate 0.6.0
cargo-generate/cargo-generate/releases/tag/v0.6.0

Automatically generate APIs for datasets using Rust, Arrow and Datafusion
roapi.github.io

Observations/Thoughts
Serverless Rust Testing
www.peakscale.com

Rust's Type System is Turing-Complete
sdleffler.github.io

Why I rewrote my Rust keyboard firmware in Zig: consistency, mastery, and fun
kevinlynagh.com

Calling a private Rust function from outside of its module
tim.mcnamara.nz

Safe, Flexible Aliasing with Deferred Borrows
cfallin.org

Evaluating Memory Models for Graph-Like Data Structures in the Rust Programming Language: Performance and Usability
www.diva-portal.org

Rusts Universes
aloso.github.io

How I significantly improved Giganotes app performance using Rust
www.reddit.com

Rust Walkthroughs
OS in Rust: Incorporate VGA buffer: Part-6
blog.knoldus.com

Writing a 3D Shooter using rg3d - #1 - Character Controller
rg3d.rs

Writing a 3D Shooter using rg3d - #2 - Weapons
rg3d.rs

Writing Pong in Rust for my OS Written in Rust
blog.stephenmarz.com

Replacing FastAPI with Rust: Part 6 - AWS Lambda
dev.to

Creating an Iterator in Rust
aloso.github.io

Building an OpenStreetMap app in Rust, Part V
blogg.bekk.no

[video] Learning Rust: Structs and Traits
youtu.be

[video] Answers to StackOverflow's top Rust programming questions explained
youtu.be

[video] (Live Coding) Learning Timely Dataflow
youtu.be

[FA] [video] Rust in Farsi ツ
www.youtube.com

Miscellaneous
Debian running on Rust coreutils
sylvestre.ledru.info

A friend and I made pipes-rs, a Rust clone of pipes.sh
www.reddit.com

Half of curl's vulnerabilities are C mistakes
daniel.haxx.se

[video] USENIX Enigma 2021 - Quantifying Memory Unsafety and Reactions to It
youtu.be
Crate of the week: Sorceress

This week's crate is Sorceress, a Rust environment for sound synthesis and algorithmic composition.