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: fast-float

This week's crate is fast-float, a crate providing methods to parse floats really fast.
Updates from core

use correct ABI for wasm32 by default
rust-lang/rust/pull/79998

improve diagnostics when closure doesn't meet trait bound
rust-lang/rust/pull/80635

enhance type inference errors involving the ? operator
rust-lang/rust/pull/80517

explain method-call move errors in loops
rust-lang/rust/pull/80324

make CTFE able to check for undefined behavior
rust-lang/rust/pull/78407

split a func into cold/hot parts, reducing rustc binary size
rust-lang/rust/pull/80042

suggest _ and .. if a pattern has too few fields
rust-lang/rust/pull/80017

suggest async {} for async || {}
rust-lang/rust/pull/76580

do not suggest invalid code in pattern with loop
rust-lang/rust/pull/80941

add allow-by-default lint on implicit ABI in extern function pointers and items
rust-lang/rust/pull/76219

reintroduce hir::ExprKind::If
rust-lang/rust/pull/79328

remove redundant def_id lookups
rust-lang/rust/pull/80232

serialize incr comp structures to file via fixed-size buffer
rust-lang/rust/pull/80463

turn type inhabitedness into a query to fix exhaustive_patterns perf
rust-lang/rust/pull/79670

box Item::Attributes
rust-lang/rust/pull/80802

resolve: simplify collection of traits in scope
rust-lang/rust/pull/80765

use Once instead of Mutex to manage capture resolution
rust-lang/rust/pull/80736

consistently avoid constructing optimized MIR when not doing codegen
rust-lang/rust/pull/80718

add benchmark and fast path for BufReader::read_exact
rust-lang/rust/pull/80201

add MaybeUninit method array_assume_init
rust-lang/rust/pull/80600

change BinaryHeap::append rebuild heuristic
rust-lang/rust/pull/77435

implement ptr::write without dedicated intrinsic
rust-lang/rust/pull/80290

introduce {Ref, RefMut}::try_map' for optional projections inRefCell`
rust-lang/rust/pull/78455

re-stabilize Weak::as_ptr and friends for unsized T
rust-lang/rust/pull/80764

add Iterator::intersperse_with
rust-lang/rust/pull/80567

TrustedRandomAaccess specialization composes incorrectly for nested iter::Zips
rust-lang/rust/pull/80670

remove unreachable panics from VecDeque::{front/back}(_mut)
rust-lang/rust/pull/80834

add NonZeroUn::is_power_of_two
rust-lang/rust/pull/81107

stabilize split_inclusive
rust-lang/rust/pull/77858

stabilize the poll_map feature
rust-lang/rust/pull/80968

add as_rchunks (and friends) to slices
rust-lang/rust/pull/78818

hashbrown: hide allocator details and default to Global
rust-lang/hashbrown/pull/227

hashbrown: export AllocError as well as Allocator
rust-lang/hashbrown/pull/223

regex: implement regex::Replacer for String, &String, Cow<'a, str>, &Cow<'a, str>
rust-lang/regex/pull/728

futures: fix type-inference in sink::unfold() by specifying more of its types
rust-lang/futures-rs/pull/2311

clippy: roadmap for 2021
rust-lang/rust-clippy/pull/6462
Updates from Rust Community

Official
[Inside] Rustdoc performance improvements
blog.rust-lang.org

[Inside] Changes to the Rustdoc team
blog.rust-lang.org

Newsletters
This Month in Rust GameDev #17 - December 2020
rust-gamedev.github.io

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

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

Knurling-rs Changelog #13
ferrous-systems.com

This week in Ballista #1
ballistacompute.org

Deno in 2020
deno.land

async-std v1.9.0
async-rs/async-std/releases/tag/v1.9.0

[video] Penrose 0.2.0 Overview
www.youtube.com

Observations/Thoughts
Cryptoxide perf (SHA2 / Blake2)
vincenthz.github.io

About variadics in Rust
https://gist.github.com/PoignardAzur/aea33f28e2c58ffe1a93b8f8d3c58667

Rust in Production: 1Password
serokell.io

Unconditional loops are unconditionally awesome
brson.github.io

Rust is a hard way to make a web API
macwright.com

Writing a better Line Iterator in Rust
dev.to

Implementing cross-process Sanakirja locks
pijul.org

future::join and const-eval
blog.yoshuawuyts.com

I used Rust in production for 6 months! Here's my feedback
www.qovery.com

[video] Learning Rust with "Too Many Linked Lists" (Episode 2) - Pop & Drop
youtu.be

[video] std::process::exit is evil - a Rust bug fixing story
youtu.be

Rust Walkthroughs
OS in Rust: Running our custom kernel on an emulator: Part-5
blog.knoldus.com

Polishing Rust: Boxing and Unboxing Results
https://mrtact.medium.com/polishing-rust-30eeac3c4bf3

Efficient custom shapes in QtQuick with Rust
carlschwan.eu

Scientific Computing in Rust
aftix.xyz

Rust GUI: Introduction a.k.a. the state of Rust GUI libraries (as of January 2021)
dev.to

How to Fetch a Web API with Rust 🦀
dev.to

Replacing FastAPI with Rust: Part 4 - A Solution
dev.to

Getting started with Rust and Redis
dev.to

How To Write A REST Client In Rust
www.lpalmieri.com

[video] Rust live coding - Tower deep dive
youtu.be

Miscellaneous
Rust/WebAssembly on AWS Lambda@Edge
markentier.tech

[video] (Live Coding) Zola, a Static Site Generator. Migrating my blog & reviewing Zola's source code.
youtu.be
Crate of the week: dotenv-linter

This week's crate is dotenv-linter, a lightning fast linter for .env files.
Updates from core

improve unknown external crate error
rust-lang/rust/pull/81046

gracefully handle loop labels missing leading ' in different positions
rust-lang/rust/pull/81236

improve diagnostics when parsing angle args
rust-lang/rust/pull/80065

permit mutable references in all const contexts
rust-lang/rust/pull/78578

prevent query cycles in the MIR inliner
rust-lang/rust/pull/68828

mir: improve size_of handling when arg is unsized
rust-lang/rust/pull/81243

implement Error for &(impl Error)
rust-lang/rust/pull/75180

change branching in iter.skip()
rust-lang/rust/pull/80715

BufWriter: Provide into_raw_parts
rust-lang/rust/pull/79705

fix soundness issue for replace_range and range
rust-lang/rust/pull/81169

avoid hash_slice in VecDeque's Hash implementation
rust-lang/rust/pull/81170

turn alloc's force_expr macro into a regular macro_rules
rust-lang/rust/pull/81241

hashbrown: add try_insert_no_grow method on RawTable
rust-lang/hashbrown/pull/229

fix a bug in Cargo's cyclic dep graph detection
rust-lang/cargo/pull/9075

cargo: add some extra help to cargo new and invalid package names
rust-lang/cargo/pull/9098

rustdoc: fix rendering of stabilization version for trait implementors
rust-lang/rust/pull/81302

clippy: manual_filter_map and manual_find_map
rust-lang/rust-clippy/pull/6591

clippy: new lint: exhaustive_enums, exhaustive_structs
rust-lang/rust-clippy/pull/6617
Updates from Rust Community

Official
[Inside] Rust & the case of the disappearing stack frames
blog.rust-lang.org

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

Performance improvement on front-end generated by rustdoc
blog.guillaume-gomez.fr

Criterion.rs v0.3.4 and Iai 0.1.0
bheisler.github.io

The RustyHermit Unikernel
rust-osdev.com

Introducing usb-ids.rs
blog.yossarian.net

⚡️ Dotenv-linter v3.0.0: Overview 🦀
evrone.com

Observations/Thoughts
Porting a serverless chatbot from Python to Rust
blog.console.dev

Unsafe Rust: How and when (not) to use it
blog.logrocket.com

Rust and Go department directories
dev.to

Parsing real-world data with Rust: introducing the alias_all attribute in Serde
deaddabe.fr

Rust Walkthroughs
Wrapping Errors in Rust
edgarluque.com

Implementing Raft's Leader Election in Rust
laurocaetano.com

2048 WASM
dev.to

Implementing an LRU Cache in Rust
dev.to

JSON input validation in Warp
dev.to

Make A Language - Part Nineteen: Code Representations
arzg.github.io

Make A Language - Part Twenty: Testing
arzg.github.io

How to optimise compilation times with Rust
lemmy.ml

Automatic flamegraphs for benchmarks with Criterion
www.jibbow.com

Implementing Raft's Leader Election in Rust
laurocaetano.com

First time using Yew: A Go game board in just a few lines of Rust.
radim.xyz

[ES] El juego de la vida usando Rust y Iced
irvingfisica/iced_examples/blob/master/Life.md

Miscellaneous
Are we learning yet?
www.arewelearningyet.com/

Microsoft Opens Up Old Win32 APIs to C# and Rust, More Languages to Come
visualstudiomagazine.com

A fix for the LLVM noalias bug has landed in time for LLVM 12 branches
www.reddit.com

Dynamic type systems aren't even simpler
hisham.hm

Everywhere I go, I miss Rust's `enum`s
www.reddit.com

Open-Source Rust: 24 Awesome Frameworks, Projects, and Libraries
serokell.io
Crate of the week: aquamarine

This week's crate is aquamarine bringing you inline diagrams for your rustdocs.
Thanks to @mersinvald for fixing the bot!
Updates from core

rustc: stabilize -Zrun-dsymutil as -Csplit-debuginfo
rust-lang/rust/pull/79570

point only at generic arguments when they are unexpected
rust-lang/rust/pull/79591

improve diagnostics for Precise Capture
rust-lang/rust/pull/81062

account for existing _ field pattern when suggesting ..
rust-lang/rust/pull/81422

tweak suggestion for missing field in patterns
rust-lang/rust/pull/81416

visit only statements in always live locals
rust-lang/rust/pull/81440

avoid memory allocation when removing dead blocks
rust-lang/rust/pull/81470

make hitting the recursion limit in projection non-fatal
rust-lang/rust/pull/81055

clashing_extern_declarations: use symbol interning to avoid string alloc
rust-lang/rust/pull/81453

miri: add random failures to compare_exchange_weak
rust-lang/miri/pull/1686

trying to Vec::shrink_to greater than capacity should be no-op
rust-lang/rust/pull/81335

implement Rust 2021 panic
rust-lang/rust/pull/80851

implement missing AsMut<str> for str
rust-lang/rust/pull/80279

implement io::Seek for io::Empty
rust-lang/rust/pull/78044

let io::copy reuse BufWriter buffers
rust-lang/rust/pull/78641

add 'Box::downcast()fordyn Any + Send + Sync`
rust-lang/rust/pull/80945

add unwrap_unchecked() methods for Option and Result
rust-lang/rust/pull/80876

add core::stream::Stream
rust-lang/rust/pull/79023

stabilize core::slice::fill_with
rust-lang/rust/pull/81048

stabilize unsigned_abs
rust-lang/rust/pull/80959

stabilize raw ref macros
rust-lang/rust/pull/80886

stabilize by-value [T; N] iterator core::array::IntoIter
rust-lang/rust/pull/80470

stabilise cargo test -- --include-ignored
rust-lang/rust/pull/80053

stabilize Arc::{increment, decrement}_strong_count
rust-lang/rust/pull/79285

stabilize Seek::stream_position (feature seek_convenience)
rust-lang/rust/pull/70904

optimize decimal formatting of 128-bit integers
rust-lang/rust/pull/81484

stabilize int_bits_const
rust-lang/rust/pull/81590

hashbrown: reduce the amount of llvm IR instantiated
rust-lang/hashbrown/pull/205

libtest: wait for test threads to exit after they report completion
rust-lang/rust/pull/81367

cargo: impl warn for locked install without Cargo.lock
rust-lang/cargo/pull/9108

rustdoc: improve docblock readability on small screen
rust-lang/rust/pull/81563
Updates from Rust Community

Newsletters
RiB Newsletter #20 - Old fashioned chill
www.reddit.com

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

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

Llama Rust SDK preview 0.1.3
ericsink.com

Gfx-rs Release of v0.7
gfx-rs.github.io

Open-sourcing Datanymizer: in-flight template-driven data anonymization
evrone.com

Announcing Step/Dir - Universal Stepper Motor Interface
flott-motion.org

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

Krustlet v0.6.0
deislabs/krustlet/releases/tag/v0.6.0

Observations/Thoughts
Is Rust a Functional Programming Language?
robert.kra.hn

Rust Collections Case Study: BTreeMap
cglab.ca

Saving some allocations
vorner.github.io

Bringing Stack Clash Protection to Clang/X86 - the Open Source Way
blog.llvm.org

Announcing Krator: Build Kubernetes Operators with state machines.
deislabs.io

Rust Walkthroughs
Returning Rust Iterators
depth-first.com

How to Read Rust Functions, Part 1
www.possiblerust.com

Parsing PDF Documents in Rust
adventures.michaelfbryan.com

Building and deploying Rust utilities
robert.kra.hn

Learning to Fly: Let's create a simulation in Rust! (pt 2)
pwy.io

Rust made my open source project 1000x faster
www.reddit.com

Introducing Drogue Device
blog.drogue.io

3 Things to Try When You Can't Make A Trait Object
www.possiblerust.com

Making concurrency fearless with Rust (for C++ developers)
https://radekvit.medium.com/making-concurrency-fearless-with-rust-for-c-developers-d5d8da50a452

Exploring WebSocket with Rust and Tide
javierviola.com

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

[PL] CrabbyBird #5 Obsługa kolizji
postacnormalna.pl

Miscellaneous
RustBelt: Securing the Foundations of the Rust Programming Language
people.mpi-sws.org

Polymorphisation: Improving Rust compilation times through intelligent monomorphisation
davidtw.co

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

Chats with James: 006 - Bryan Cantrill
jamesmunns.com

Long range networking with LoRa: an overview featuring a Rust modem driver
tweedegolf.nl
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