pub ThisWeekInRust {} – Telegram
pub ThisWeekInRust {}
994 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: 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.
Updates from core

expand: do not allocate Lrc for allow_internal_unstable list unless necessary
rust-lang/rust/pull/82422

account for if (let pat = expr) {}
rust-lang/rust/pull/82854

introduce proc_macro_back_compat lint, and emit for time-macros-impl
rust-lang/rust/pull/83127

eagerly construct bodies of THIR
rust-lang/rust/pull/82495

store HIR attributes in a side table
rust-lang/rust/pull/79519

add StatementKind::CopyNonOverlapping
rust-lang/rust/pull/77511

tweaks to stable hashing
rust-lang/rust/pull/83064

rustc_query_system: simplify QueryCache::iter
rust-lang/rust/pull/83069

mir-opt-level 4 is the new 3
rust-lang/miri/pull/1737

miri: ensure we catch incorrectly unwinding calls
rust-lang/miri/pull/1744

miri: check callee ABI when Miri calls closures
rust-lang/miri/pull/1743

don't implement mem::replace with mem::swap
rust-lang/rust/pull/83022

fix io::copy specialization using copy_file_range when writer was opened with O_APPEND
rust-lang/rust/pull/82417

added #[repr(transparent)] to core::cmp::Reverse
rust-lang/rust/pull/81879

add Option::get_or_default
rust-lang/rust/pull/82849

implement Extend and FromIterator for OsString
rust-lang/rust/pull/82121

improve sift_down performance in BinaryHeap
rust-lang/rust/pull/81127

fix leak in Vec::extend_from_within
rust-lang/rust/pull/82760

regex: substantially reduce regex stack size
rust-lang/regex/pull/752

clippy: implement new lint: if_then_some_else_none
rust-lang/rust-clippy/pull/6859
Updates from Rust Community

Project/Tooling Updates
MiniWASM - A minimalist Rust WebAssembly project template
thedjinn/MiniWASM

Stepper 0.5 (formerly Step/Dir) - Universal Stepper Motor Interface
flott-motion.org

Rust Analyzer Changelog #68
rust-analyzer.github.io

IntelliJ Rust Changelog #143
intellij-rust.github.io

Observations/Thoughts
Why the Starship shell prompt is built in Rust (interview with project creator)
console.dev

Rust vs. Go: Why They’re Better Together
thenewstack.io

Cranelift, Part 3: Correctness in Register Allocation
cfallin.org

Making Great Docs with Rustdoc
www.tangramvision.com

Writing a Postgres SQL Pretty Printer in Rust: Part 1
blog.urth.org

Data Manipulation: Polars vs Rust
able.bio

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

Rust Koans
crazymykl/rust-koans

How to send emails with Rust
kerkour.com

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

Arenas in Rust
manishearth.github.io

Zero Downtime Deployments
www.lpalmieri.com

Deploy A Rust Website on Heroku
dev.to

One enum to rule them all
www.jakobmeier.ch

Writing a 3D Shooter using rg3d - #3 - Bots, AI
rg3d.rs

Developing High Performance Apache Cassandra Applications in Rust (Part 1)
www.datastax.com

Strings in Rust
bes.github.io

Rust - Reqwest examples
dev.to

libp2p tutorial: Build a peer-to-peer app in Rust
blog.logrocket.com

[video] Rust for Beginners - Watch me code the Rustlings Tutorial
www.youtube.com

[video] Crust of Rust: The Drop Check (live edition)
www.youtube.com

Miscellaneous
rkyv is faster than {bincode, capnp, cbor, flatbuffers, postcard, prost, serde_json}
davidkoloski.me

100ms delays with Rust on Lambda
www.peakscale.com

Speed of Rust vs C
kornel.ski

Rust Playground At Your Fingertips
www.greyblake.com

totally_safe_transmute, line-by-line
kornel.ski

Rust Graphics Crates
ocboogie/rust-graphics-crates

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

Paid Online Research: Rust Programmers’ Experience and Challenges
www.personal.psu.edu
Crate of the week: ibig

This week's crate is ibig, a crate of fast big integers.
Updates from core

enable mutable noalias for LLVM >= 12 (Fingers crossed)
rust-lang/rust/pull/82834

allow registering tool lints with register_tool
rust-lang/rust/pull/83216

more precise spans for HIR paths
rust-lang/rust/pull/83092

const_evaluatable_checked: stop eagerly erroring in is_const_evaluatable
rust-lang/rust/pull/82707

miri: improve error message of calling unsupported non-"C"/"system"-ABI foreign function
rust-lang/miri/pull/1745

make source-based code coverage compatible with MIR inlining
rust-lang/rust/pull/83080

stabilize or_patterns (RFC 2535, 2530, 2175)
rust-lang/rust/pull/79278

stabilize feature(osstring_ascii)
rust-lang/rust/pull/80193

stabilize slice::IterMut::as_slice
rust-lang/rust/pull/82771

stabilize assoc_char_funcs and assoc_char_consts
rust-lang/rust/pull/82919

implement String::remove_matches
rust-lang/rust/pull/71780

add a check for ASCII characters in to_upper and to_lower
rust-lang/rust/pull/81358

fix invalid slice access in String::retain
rust-lang/rust/pull/82554

constify copy related functions
rust-lang/rust/pull/83091

add as_str method for split whitespace str iterators
rust-lang/rust/pull/82570

Vec::dedup_by optimization
rust-lang/rust/pull/82191

fix overflowing length in Vec<ZST> to VecDeque
rust-lang/rust/pull/83244

implement TrustedLen and TrustedRandomAccess for Range<integer>, array::IntoIter, VecDequeue's iterators
rust-lang/rust/pull/81607

cargo: allow cargo update to operate with the --offline flag
rust-lang/cargo/pull/9279

cargo: refactor feature handling, and improve error messages
rust-lang/cargo/pull/9290

rustdoc: reduce GC work during search
rust-lang/rust/pull/83077

rustfmt: fix issue 'double spaces between struct field prefix and identity when using long attributes
rust-lang/rustfmt/pull/4747
Updates from Rust Community

Official
Building a shared vision for Async Rust
blog.rust-lang.org

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

[Foundation] Introducing Bobby Holley
foundation.rust-lang.org

[Foundation] Introducing Tyler Mandry
foundation.rust-lang.org

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

Observations/Thoughts
The biggest threat to Rust's sustainability
kerkour.com

Safe Systems Programming in Rust
cacm.acm.org

The GPIO war: macro bunkers for typestate explosions
www.ecorax.net

A look back at asynchronous Rust
https://tomaka.medium.com/a-look-back-at-asynchronous-rust-d54d63934a1c

Rust as an App Language
www.ikiapps.com

How often does Rust change?
steveklabnik.com

Serving a single file over HTTP with Rust and Go
vadosware.io

The Case for the Typestate Pattern - The Typestate Pattern itself
www.novatec-gmbh.de

[ZH] Rust in Embedded World
zhuanlan.zhihu.com

[video] Cheaply writing a fast interpreter - Neil Mitchell
youtu.be

Rust Walkthroughs
Introduction to Apache Arrow with Rust
bit.ly

How to execute shellcodes from memory in Rust
kerkour.com

Beginner's Guide to Rust Pattern Matching
https://doma-dev.medium.com/pattern-matching-in-rust-and-other-imperative-languages-7cf1c6abf4a1

Writing a PostgreSQL Pretty Printer in Rust: Part 1.5
blog.urth.org

Calling .NET APIs from Rust
ericsink.com

The magical applications of Zero-Sized Types in Rust
www.hardmo.de

Rust and Rocket - Zero to Deploy
dev.to

Learning to Fly: Let's simulate evolution in Rust! (pt 3)
pwy.io

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

Tutorial: Writing a tiny Entity Component System in Rust
ianjk.com

Implementing RAII guards in Rust
aloso.github.io

[JP] [TECH] Actix web で HttpOnly な Cookie を設定する 🍪
dev.to

[video] The four-part "Overview of the Rust Programming Language" for beginners is now complete
www.youtube.com

Miscellaneous
Streaming using Bastion & Kafka - near consumer native correlation
vertexclique.com

Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust
benhoyt.com

Linus Torvalds on where Rust will fit into Linux
www.zdnet.com

Rust: integrating LLVM source-base code coverage with GitLab
www.collabora.com
Crate of the week: egg

This week's crate is egg, a project using e-graphs to provide a new way to build program optimizers and synthesizers.