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: pre

This week's crate is pre, a library for declaring and checking the assurance of precondition, useful for unsafe functions.
Hi!
We have plans to revive this channel.
Be tuned!
Updates from core

stabilize min_const_generics (Huzzah!)
rust-lang/rust/pull/79135

utilize PGO for rustc linux dist builds
rust-lang/rust/pull/80262

suggest fn ptr rather than fn item and suggest to use Fn trait bounds rather than the unique closure type
rust-lang/rust/pull/80284

implement a compiler diagnostic for move async mistake
rust-lang/rust/pull/80160

highlight edition-specific keywords correctly in code blocks, accounting for code block edition modifiers
rust-lang/rust/pull/80226

prevent caching normalization results with a cycle
rust-lang/rust/pull/80246

fix ICE when lookup method in trait for type that have bound vars
rust-lang/rust/pull/80170

remove DefPath from Visibility and calculate it on demand
rust-lang/rust/pull/80099

`rustc_query_system : reduce dependency graph memory usage
rust-lang/rust/pull/79589

add impl Div<NonZeroU*> for u* which cannot panic
rust-lang/rust/pull/79134

deprecate atomic compare_and_swap method
rust-lang/rust/pull/79261

stabilize core::slice::fill
rust-lang/rust/pull/79213

stabilize deque_range
rust-lang/rust/pull/79022

use clone_from from hashbrown::{HashMap, HashSet}
rust-lang/rust/pull/80400

futures: perf: pack the state and future of unfolds in the same memory
rust-lang/futures-rs/pull/2283

cargo: stabilize RUSTC_WORKSPACE_WRAPPER
rust-lang/cargo/pull/8976

rustdoc: stabilise --default-theme command line option
rust-lang/rust/pull/79642
Updates from Rust Community

Official
[Inside] Please welcome cjgillot and Nadrieril to compiler-contributors
blog.rust-lang.org

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

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

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

Redox OS 0.6.0
www.redox-os.org

Observations/Thoughts
Call Site Dependency Injection
matklad.github.io

A look at tokio 1.0 API Changes
leshow.github.io

Memory-Safety Challenge Considered Solved? An In-Depth Study with All Rust CVEs
arxiv.org

45,000+ lines of Rust code later: An update on the Record & Debug Tool (rd)
sidkshatriya/me/blob/master/003-Rd-makes-significant-advances.md

Cloning A Reference and Method Call Syntax in Rust
www.fpcomplete.com

Executable PNGs
djharper.dev

Why mongodump is fast
windsoilder.github.io

Rust Walkthroughs
Concurrency in modern programming languages: Rust
dev.to

Building distributed GraphQL backend using Rust and Apollo Federation
dev.to

Enhance code quality using matches macro! in Rust
blog.knoldus.com

ClickOnce for Rust Apps
https://taggartsoftware.medium.com/clickonce-for-rust-apps-f96873feb8f1

Closures in Rust
zhauniarovich.com

Don't let failures spread over your suite with process-based tests isolation
blog.cyplo.dev

Triangle From Scratch
rust-tutorials.github.io

[video] [series] (Live Coding) Advent of Code 2020 in Rust
youtube.com

Miscellaneous
Redox OS 0.6 Released With Many Fixes, Rewritten Kernel Memory Manager
www.phoronix.com

The more things change...
smallcultfollowing.com

Min const generics stabilization has been merged into master! It will reach stable on March 25, 2021 as part of Rust 1.51
www.reddit.com
Crate of the week: autograd

This week's crate is autograd, a library of differentiable operations and tensors for machine learning applications.
Updates from core

add edition 2021
rust-lang/rust/pull/79576

sync rustc_codegen_cranelift
rust-lang/rust/pull/80408

diag: print enum variant instead of enum type
rust-lang/rust/pull/80613

suggest renaming or escaping when fixing non-snake-case identifiers which would conflict with keywords
rust-lang/rust/pull/80592

support pattern as const parents in type_of
rust-lang/rust/pull/80551

parse const generics defaults
rust-lang/rust/pull/80547

miri: make size/align_of_val work for dangling raw ptrs
rust-lang/rust/pull/80491

slightly more typed interface to panic implementation
rust-lang/rust/pull/80260

remove all doc_comment!{} hacks by using #[doc = expr] where needed
rust-lang/rust/pull/79150

make copy(_nonoverlapping) const
rust-lang/rust/pull/79684

add Iterator::intersperse
rust-lang/rust/pull/79479

add fallible Box, Arc, and Rc allocator APIs
rust-lang/rust/pull/80310

do not create dangling &T in Weak<T>::drop
rust-lang/rust/pull/80488

de-stabilize unsized raw ptr methods for Weak
rust-lang/rust/pull/80422
Updates from Rust Community

Official
Announcing Rust 1.49.0
blog.rust-lang.org

mdBook security advisory
blog.rust-lang.org

Newsletters
RiB Newsletter #19 - Rust and smart contracts
www.reddit.com

Project/Tooling Updates
Rust Analyzer Changelog #58
rust-analyzer.github.io

Rust Search Extension Changelog v1.1
rust.extension.sh

Rust Design Patterns now also as a book
www.reddit.com

Pijul - How to survive?
pijul.org

RustFFT 5.0 has been released!
users.rust-lang.org

napi 1.0 released
napi.rs

Insta got a new website with docs and a Visual Studio Code Extension
insta.rs/

Isahc 1.0 and Retrospective
stephencoakley.com

slotmap 1.0 has been released! Copy restriction removed, no_std support, and more
www.reddit.com

libbpf-rs: eBPF for the Rust ecosystem
dxuuu.xyz

Observations/Thoughts
Reflecting on developing a database (2020 edition)
alex-dukhno.github.io

bore(1) + nonymous: lessons learned writing a DNS query tool and #![no_std] DNS library
www.azabani.com

Exploring RustFFT's SIMD Architecture
users.rust-lang.org

Understanding Yew Part 1
dev.to

Transposing options/results with iterators
dev.to

Dark side of POSIX APIs
vorner.github.io

Redesigning coca's Storage Abstraction
https://gist.github.com/teryror/7b9a23fd0cd8dcfbcb6ebd34ee2639f8

Generic associated types encode higher-order functions on types
willcrichton.net

Rust's SemVer Snares: Sizedness and Size
jack.wrenn.fyi

Why using WebAssembly and Rust together improves Node.js performance
developer.ibm.com

Rust Walkthroughs
Building a runtime reflection system for Rust 🦀️ (Part 3)
www.osohq.com

Writing a Kubernetes CRD Controller in Rust
technosophos.com

Adding FFI Support in x7
dpbriggs.ca

Recursive Iterators in Rust
fasterthanli.me

Writing a Prometheus MPD Exporter
beyermatthias.de

Rust Programming Language Tutorial - How to Build a To-Do List App
www.freecodecamp.org

Diving into Rust with a CLI
dev.to

Creating a GUI for a Rust application
dev.to

Zero to Production #6.5: An Introduction To Property-Based Testing In Rust
www.lpalmieri.com

Holiday Hacking - Tracking my heart rate while playing Call of Duty
jcdav.is

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

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

Extracting Files From an Archive Format I Understand Way Too Much
jam1.re

[series] eBPF Networking in Rust
dev.to

[video] FLTK Rust: use FLUID (RAD tool) with Rust
youtu.be

Miscellaneous
Rust 1.49.0 Released With 64-bit ARM Linux Support Rated Tier-1
www.phoronix.com

Rust will drop official support for Windows XP
www.reddit.com

Rust is the second most used language for Advent of Code, after Python
www.reddit.com

Rust grew 94% on O'Reilly online learning this year
www.reddit.com

Rust is now overall faster than C in benchmarks
www.reddit.com
Crate of the week: nom-supreme

This week's crate is nom-supreme, a crate of utilities for nom parsers, especially for great parse error handling.
Updates from core

use correct span for structured suggestion
rust-lang/rust/pull/80801

rustc_parse: better spans for synthesized token streams
rust-lang/rust/pull/80784

ast: remove some indirection layers from values in key-value attributes
rust-lang/rust/pull/80441

resolve: scope visiting doesn't need an Ident
rust-lang/rust/pull/80782

resolve/expand: improve attribute expansion on macro definitions and calls
rust-lang/rust/pull/80563

optimize DST field access
rust-lang/rust/pull/80200

allow references to interior mutable data behind a feature gate
rust-lang/rust/pull/80418

fixed const_generics error help
rust-lang/rust/pull/80714

use an empty TokenCursorFrame stack when capturing tokens
rust-lang/rust/pull/80830

deduplicate solution enum in chalk-recursive
rust-lang/chalk/pull/674

optimize away some fs::metadata calls
rust-lang/rust/pull/80756

optimize away some path lookups in the generic fs::copy implementation
rust-lang/rust/pull/80755

implement From<char> for u64 and u128
rust-lang/rust/pull/79502

stabilize slice::strip_prefix and slice::strip_suffix
rust-lang/rust/pull/77853

add [T; N]::each_ref and [T; N]::each_mut
rust-lang/rust/pull/75490

futures: perf: avoid an Option in the Map* futures
rust-lang/futures-rs/pull/2306

backtrace: use the symbol table if the DWARF only has line numbers
rust-lang/backtrace-rs/pull/401

cargo: stabilize -Zfeatures and -Zpackage-features
rust-lang/cargo/pull/8997

rustdoc: fix macros 2.0 and built-in derives being shown at the wrong path
rust-lang/rust/pull/77862

docs.rs: fix N+1 queries when fetching crate details
rust-lang/docs.rs/pull/1239

docs.rs: fix performance regression in all releases-views
rust-lang/docs.rs/pull/1237

clippy: new lint: vec_init_then_push
rust-lang/rust-clippy/pull/6538
Updates from Rust Community

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

This Month in Rust OSDev (December 2020)
rust-osdev.com

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

Knurling-rs Changelog #12
ferrous-systems.com

GCC Rust – How it can be achieved
www.embecosm.com

Open Source Security, Inc. Announces Funding of GCC Front-End for Rust
opensrcsec.com

Progress report on rustc_codegen_cranelift (Dec 2020)
bjorn3.github.io

Observations/Thoughts
XML parsing in Rust
simplabs.com

parsing baseball files in Rust instead of Python for an 8x speedup!
gregstoll.wordpress.com

Philosophies of Rust and Haskell
www.fpcomplete.com

Maybe you don't need Rust and WASM to speed up your JS
mrale.ph

Simplifying Endian-Specific file parsers in Rust with Omnom and type inference
www.parsed.uk

Rust's SemVer Snares: repr(transparent) Super-Cut
jack.wrenn.fyi

Exploiting Mixed Binaries
www.cs.ucy.ac.cy

[audio] The Virtual World: Embedded Rust part 2 - James Munns
anchor.fm

Rust Walkthroughs
Setting a Rust Executable's Icon in Windows
www.anthropicstudios.com

The Little Book of Rust Books
lborb.github.io

Rust Design Patterns
rust-unofficial.github.io

Hecto: Build your own text editor in Rust
www.philippflenker.com

CLI Shell Completions in Rust
dev.to

Dynamically Aligned Types?
dev.to

Polishing Rust - Temporary Value Dropped While Borrowed
https://mrtact.medium.com/polishing-rust-42d9131d1c3

Testing Hardware Using Rust Firmware and Rust Based CLI
www.jaredwolff.com

Exposing a Rust Library to Other Languages
sixtyfps.io

Replacing FastAPI with Rust: Part 3 - Trying Actix
dev.to

[video] Learning Rust by following the "Too Many Linked Lists" tutorial (Episode 1)
youtu.be

[video] Rust Parser and State Machine
youtu.be

Miscellaneous
Rust Language Cheat Sheet
cheats.rs/

Another Rust-y OS: Theseus joins Redox in pursuit of safer, more resilient systems
www.theregister.com

[video] OSDI '20 - Redleaf: Isolation and Communication in a Safe Operating System
youtu.be

[video] Read a paper: Theseus--An OS written in Rust
youtu.be
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.