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: 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.
Updates from core

coverage bug fixes and optimization support
rust-lang/rust/pull/83307

ban custom inner attributes in expressions and statements
rust-lang/rust/pull/83488

GenericParam does not need to be a HIR owner
rust-lang/rust/pull/83424

remove assignments to ZST places instead of marking ZST return place as unused
rust-lang/rust/pull/83177

run analyses before thir-tree dumps
rust-lang/rust/pull/83050

import small cold functions
rust-lang/rust/pull/82980

implement feature(const_generics_defaults)
rust-lang/rust/pull/75384

stabilize debug_non_exhaustive
rust-lang/rust/pull/83041

simplify encoder and decoder
rust-lang/rust/pull/83273

remove (lots of) dead code
rust-lang/rust/pull/83185

use TrustedRandomAccess for in-place iterators where possible
rust-lang/rust/pull/79846

instruct LLVM that binary_search returns a valid index
rust-lang/rust/pull/81354

make NonNull::as_ref (and friends) return refs with unbound lifetimes
rust-lang/rust/pull/80771

add function core::iter::zip
rust-lang/rust/pull/82917

revert reverting of stabilizing integer::BITS
rust-lang/rust/pull/82565

generalize and inline slice::fill specializations
rust-lang/rust/pull/83245

add Result::into_err where the Ok variant is the never type
rust-lang/rust/pull/83421

remove Option::{unwrap_none, expect_none}
rust-lang/rust/pull/83349

futures: add AsyncSeekExt::stream_position
rust-lang/futures-rs/pull/2380

cargo: default macOS targets to unpacked debuginfo
rust-lang/cargo/pull/9298

rustdoc: sidebar trait items order
rust-lang/rust/pull/83051

docs.rs: stop displaying and serving authorship information
rust-lang/docs.rs/pull/1322
Updates from Rust Community

Official
Announcing Rust 1.51.0
blog.rust-lang.org

[Foundation] Introducing Mark Rousskov
foundation.rust-lang.org

[Foundation] Introducing Nell Shamrell-Harrington
foundation.rust-lang.org

Project/Tooling Updates
rust-analyzer changelog #70
rust-analyzer.github.io

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

Knurling-rs Financial Update and Call for Funding
ferrous-systems.com

Ockam | End-to-end encrypted messaging and mutual authentication between distributed applications
ockam-network/ockam

Announcing the Deno Company
deno.com

Observations/Thoughts
Using Rust to corrode insane Python run-times
www.vortexa.com

The current state of Rust web frameworks
blog.logrocket.com

GhostCell: Separating Permissions from Data in Rust
plv.mpi-sws.org

Using const generics in slipstream
vorner.github.io

Rust iterators tips and tricks
robinmoussu.gitlab.io

Rust Walkthroughs
Pin and suffering
fasterthanli.me

Embedding Rust Into Zephyr Firmware using C-bindgen
www.jaredwolff.com

Parser combinators in Rust
doma.dev

Grids in Rust, part 2: const generics
blog.adamchalmers.com

Ergonomic error handling with Rust
dev.to

Implementing SHA2 (256/512) algorithm with Rust const generics
dev.to

Analisando alocações de memória em Rust utilizando GNU Debugger
dev.to

Testing an embedded application
ferrous-systems.com

Using Const Generics To Model An Electronics Graph
mkhan45.github.io

Rust's Module System Explained
aloso.github.io

[series] Working with the trust-dns-resolver crate
dev.to

[video] Safer Rust: Program Verification with Creusot
youtu.be

Miscellaneous
Linus Torvalds weighs in on Rust language in the Linux kernel
arstechnica.com

Ownership Concept Diagram
www.reddit.com
Crate of the week: tide-acme

This week's crate is tide-acme, a crate for automatic HTTPS certificaion using Let's Encrypt for Tide.