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

remove a stack frame from .await calls
rust-lang/rust/pull/70831

improve async-await/generator obligation errors in some cases
rust-lang/rust/pull/70679

make needs_drop less pessimistic on generators
rust-lang/rust/pull/70015

provide better compiler output when using ? on Option in fn returning Result and vice-versa
rust-lang/rust/pull/71141

suggest .into() over try_into() when it would work
rust-lang/rust/pull/71051

maintain chain of derived obligations
rust-lang/rust/pull/69793

chalk: recursive solver
rust-lang/chalk/pull/372

chalk: recursive solver: Exit early on ambiguity
rust-lang/chalk/pull/404

chalk: make it possible to cache the result of env elaboration
rust-lang/chalk/pull/403

use query to determine whether function needs const checking
rust-lang/rust/pull/69642

mir-opt: run SimplifyLocals to a fixedpoint and handle most rvalue
rust-lang/rust/pull/70755

miri: add option to disable alignment check
rust-lang/miri/pull/1332

miri: let machine hook dynamically decide about alignment checks
rust-lang/rust/pull/71101

miri: expand frame hooks
rust-lang/rust/pull/71100

miri: handle std::sync::atomic::spin_loop_hint()
rust-lang/miri/pull/1342

ptr: introduce len() method on raw slices
rust-lang/rust/pull/71082

miri: use pre-computed layouts some more
rust-lang/miri/pull/1349

miri-unleashed: test that we detect heap allocations
rust-lang/rust/pull/71276

deprecate the asm! macro in favor of llvm_asm!
rust-lang/rust/pull/71007

backtrace: remove memmap dependency
rust-lang/backtrace-rs/pull/311

cargo: several updates to token/index handling
rust-lang/cargo/pull/7973

cargo: try to avoid panics on buggy (?) clocks
rust-lang/cargo/pull/8114
News

Rust Survey 2019 results.
blog.rust-lang.org

Testing sync at Dropbox.
dropbox.tech

Write an OS for the Raspberry Pi in Rust.
tc.gts3.org

Wired Logic - a pixel-based digital circuit simulator running in a browser (Rust compiled into WASM).
iostapyshyn.github.io

Better stack fixing for Firefox.
blog.mozilla.org

Writing Python inside your Rust code — part 1.
blog.m-ou.se

wgpu-rs on the web.
gfx-rs.github.io

Building a Rust web browser from scratch.
joshondesign.com

From Pratt to Dijkstra.
matklad.github.io

Rust lang tips and tricks.
mudit.blog

An experiment with type-erased data structures.
vgatherps.github.io

How to write CRaP Rust code.
blog.logrocket.com

Intro to gfx-hal - part 3: Vertex buffers.
www.falseidolfactory.com

How I reverse engineered the LastPass CLI tool.
adventures.michaelfbryan.com

Open-sourcing dotenv-linter: lightning-fast tool to lint your .env files.
evrone.com

rust-analyzer changelog 21.
rust-analyzer.github.io
Crate of the week: regex2fat

This week's crate is regex2fat, a program to convert a regular expression into a decidedly nonstandard FAT32 file system.
Updates from core

don't run various MIR optimizations at mir-opt-level=0
rust-lang/rust/pull/70073

replace thread_local with generator resume arguments in box_region
rust-lang/rust/pull/71554

fix -Zast-json to output correct JSON form
rust-lang/rust/pull/71284

allow wasm32 compilation of librustc_data_structures/profiling.rs
rust-lang/rust/pull/71369

proc_macro::is_available()
rust-lang/rust/pull/71400

proc_macro: stabilize Span::resolved_at and Span::located_at
rust-lang/rust/pull/69041

attempt to recover perf by removing exports_all_green
rust-lang/rust/pull/71267

chalk: use FxHashMap/FxHashSet and add well-formed clause for tuples
rust-lang/chalk/pull/411

ConstProp: use a BitSet<Local> instead of IndexVec<Local, bool>
rust-lang/rust/pull/71312

fix span of while (let) expressions after lowering
rust-lang/rust/pull/71494

Miri Frame: use mir::Location to represent position in function
rust-lang/rust/pull/71475

add BinaryHeap::retain
rust-lang/rust/pull/71485

add a function to turn Box<T> into Box<[T]>
rust-lang/rust/pull/71421

add missing Send and Sync impls for linked list Cursor and CursorMut
rust-lang/rust/pull/71548

implement BitOr and BitOrAssign for the NonZero integer types
rust-lang/rust/pull/69813

stabilize most common subset of alloc_layout_extras
rust-lang/rust/pull/69362

stabilize Span::mixed_site
rust-lang/rust/pull/68716

stabilize BTreeMap::remove_entry
rust-lang/rust/pull/70712

futures: introduce ready_chunks adaptor
rust-lang/futures-rs/pull/2123

backport to 0.1: Avoid starvation from FuturesUnordered::poll_next
rust-lang/futures-rs/pull/2122

futures: add AsyncWriteExt::write_all_vectored utility
rust-lang/futures-rs/pull/1741

hashbrown: future-proof specialization code
rust-lang/hashbrown/pull/147

hashbrown: remove unsound use of specialization
rust-lang/hashbrown/pull/154

cargo: fix warning for resolve mismatch in workspace
rust-lang/cargo/pull/8169

cargo: add resolver opt-in for new feature resolver
rust-lang/cargo/pull/8129

rustdoc: replace big JS dict with JSON parsing
rust-lang/rust/pull/71250
News

🎈🎉 Announcing Rust 1.43.0. 🎉🎈
blog.rust-lang.org

How to speed up the Rust compiler in 2020.
blog.mozilla.org

A taste of WebGPU in Firefox.
hacks.mozilla.org

Data ingestion with Rust and AWS Lambda.
jamesmcm.github.io

Embedded Rust pattern - zero sized references.
ferrous-systems.com

Implementing a linear quadtree in Rust.
snorrwe.onrender.com

Memory efficient serialization of tagged union.
robinmoussu.gitlab.io

Unpacking Serde.
www.reddit.com

[video] Rust stream: ownership, closures, and threads - oh my.
www.youtube.com

[video] Crust of Rust: lifetime annotations.
www.youtube.com

First impressions on Rust and WebAssembly.
deedone.github.io

From Rust to WebAssembly: Building an interactive note-taking web app with Actix & Yew.
www.luu.io

Rust’s future: internal execution.
blog.knoldus.com

Rust concurrency: five easy pieces.
medium.com/@polyglot_factotum

(Almost) lockless stream buffering.
mcfelix.me

Rust and Node.js: a match made in heaven.
blog.logrocket.com

Reducing the size of a Rust GStreamer plugin.
www.collabora.com

Writing Python inside your Rust code — Part 2.
blog.m-ou.se
Crate of the week: coercible_errors

This week's crate is coercible_errors, a library that allows generic trait implementations to omit the size cost of Result::Err if errors never happen.
Updates from core

implement RFC #2523, #[cfg(version(..))]
rust-lang.github.io

have the per-query caches store the results on arenas
rust-lang/rust/pull/70674

avoid duplicating code for each query
rust-lang/rust/pull/69808

forbid dyn Trait in patterns
rust-lang/rust/pull/71038

fix wrong argument in autoderef process
rust-lang/rust/pull/71627

suggest into instead of try_into if possible with int types
rust-lang/rust/pull/71617

tweak some suggestions in rustc_resolve
rust-lang/rust/pull/71438

add message for resolution failure because wrong namespace
rust-lang/rust/pull/71419

point at the return type on .into() failure caused by ?
rust-lang/rust/pull/71409

suggest ; or assignment to drop borrows in tail exprs
rust-lang/rust/pull/71217

on type mismatch involving associated type, suggest constraint
rust-lang/rust/pull/71108

minimize parameter of coerce_borrowed_pointer
rust-lang/rust/pull/71524

remove some Vec allocations to improve performance
rust-lang/rust/pull/71268

allow Unreachable terminators unconditionally in const-checking
rust-lang/rust/pull/71691

allow Downcast projections unconditionally in const-checking
rust-lang/rust/pull/71688

added MIR constant propagation of Scalars into function call arguments
rust-lang/rust/pull/71697

Miri: unleash all feature gates
rust-lang/rust/pull/71631

use existing framework for backward dataflow analyses
rust-lang/rust/pull/71006

add Read/Write::can_read/write_vectored
rust-lang/rust/pull/67841

add RefCell::take
rust-lang/rust/pull/71398

slice::fill: use T instead of generic arg
rust-lang/rust/pull/71165

Vec drop and truncate: drop using raw slice *mut [T]
rust-lang/rust/pull/71148

hashbrown: mark RawTable::par_iter unsafe
rust-lang/hashbrown/pull/157
News

Async interviews: my take thus far
smallcultfollowing.com

Multi-threaded HTTP/WebSocket server in Rust.
sergey-melnychuk.github.io

Cheating Rank-n with Traits
leshow.github.io

Understanding Memory and Thread Safety Practices
and Issues in Real-World Rust Programs
cseweb.ucsd.edu

A beginners guide to gRPC with Rust
dev.to

Setup Anaconda, Jupyter, and Rust
shahinrostami.com

Teleforking a process onto a different computer!
thume.ca

Stubbing out WASI manually in Rust
www.jakubkonka.com

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

IntelliJ Rust changelog #121
intellij-rust.github.io

Type-level programming in Rust
willcrichton.net

Rust at FullStory, Part 2: A Look Inside Our Mobile SDK
bionic.fullstory.com

Notes on Parsing in Rust
blog.wesleyac.com

Create a blazingly fast REST API in Rust (Part 1/2)
docs.qovery.com

The Safety Boat: Kubernetes and Rust
msrc-blog.microsoft.com

From Pratt to Dijkstra
matklad.github.io

Learning embedded Rust by building RISC-V-powered robot - Part 4
k155la3.blog

How to write CRaP Rust Code
blog.logrocket.com

Rust concurrency: a streaming workflow, served with a side of back-pressure.
medium.com/@polyglot_factotum

Writing a Python module in Rust using PyO3
kushaldas.in

Creating a Robust, Reusable Link-Checker
adventures.michaelfbryan.com

[video] Crust of Rust: Declarative Macros
www.youtube.com

[video] Rust Stream: String it All Together!
www.youtube.com

[video] Educational Rust live coding - Building a git CLI
www.youtube.com

[video] Maximum Sum of Subarrays (Leetcode) in Rust
www.youtube.com

[video] WASM + Rust
www.youtube.com

[video] Concurrency in Rust with Async/Await
www.youtube.com

[video] Rust and Tell Berlin Meetup - April 2020 [video]
www.youtube.com

[video] Rust Zürisee, April: cargo crev and cargo audit
www.youtube.com
Crate of the week: winrt

This week's crate is winrt, Microsoft's Rust/WinRT language projection.
Updates from core

Define UB in float-to-int casts to saturate
rust-lang/rust/pull/71269

Improve bitcode generation for Apple platforms
rust-lang/rust/pull/71970

Don't force rustc to do codegen for LTO builds
rust-lang/cargo/pull/8192

Correctly handle UEFI targets as Windows-like when emitting sections for LLVM bitcode
rust-lang/rust/pull/71881

Prevent compiler stack overflow for deeply recursive code
rust-lang/rust/pull/55617

resolve: Relax fresh binding disambiguation slightly to fix regression
rust-lang/rust/pull/71846

upgrade chalk and use chalk-solve/chalk-ir/chalk-rust-ir
rust-lang/rust/pull/69406

Report cannot move errors in promoted MIR
rust-lang/rust/pull/71587

Simplify the tcx.alloc_map API
rust-lang/rust/pull/71508

Suggest removing semicolon in last expression only if it's type is known
rust-lang/rust/pull/71894

Skip attempting to run coerce_unsized on an inference variable
rust-lang/rust/pull/69530

Unify the undo log of all snapshot types
rust-lang/rust/pull/69464

Reduce TypedArena creations in check_match
rust-lang/rust/pull/71975

Shrink LocalDecl
rust-lang/rust/pull/71942

Add remove_current_as_list to LinkedList's CursorMut
rust-lang/rust/pull/71878

Add Arc::{incr, decr}_strong_count
rust-lang/rust/pull/70733

Add Option to Force Unwind Tables
rust-lang/rust/pull/69984

Make BTreeMap::new and BTreeSet::new const
rust-lang/rust/pull/71839

Btreemap iter intertwined
rust-lang/rust/pull/71510

Add core::future::{pending, ready}
rust-lang/rust/pull/70834

futures: Refactor to reduce the amount of unsafe and duplicated code
rust-lang/futures-rs/pull/2128

cargo: Update assertions in LTO calculations
rust-lang/cargo/pull/8226

cargo: Try to remove secrets from http.debug
rust-lang/cargo/pull/8222

cargo features: allow activated_features_unverified to communicate not-present
rust-lang/cargo/pull/8194
News

Announcing Rust 1.43.1
blog.rust-lang.org

Rust concurrency: the single-writer principle.
medium.com/@polyglot_factotum

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

A no_std Rust binary
fasterthanli.me

Notes on io_uring
boats.gitlab.io

no_std async/await - soon on stable
ferrous-systems.com

"try fn" without special-casing Result
dev.to

time_it: A case study in Rust macros
notes.iveselov.info

Dynamic stylesheets and Yew
conradludgate.com

A practical introduction to async programming in Rust
jamesmcm.github.io

Rust Closures in FFI
adventures.michaelfbryan.com

Collecting many errors from an iterator of Results.
tarquin-the-brave.github.io

Auto-currying Rust Functions
peppe.rs

Converting bits to integers in Rust using generics
dev.to

Magnifying Glasses for Rust Assembly
www.justanotherdot.com

More Rust and Load Balancer Adventures
medium.com/@bparli

Porting North Korean Dictionaries with Rust
digitalnk.com

Rust verification tools
alastairreid.github.io

Series Announcement - Zero to Production in Rust
www.lpalmieri.com

What I Learned Contributing to Rust-Analyzer
dev.to

What’s the difference between a Rust char and a Go rune?
www.christianfscott.com

Writing A Wayland Compositor In Rust
wiki.alopex.li

Yak shaving conditional compilation in Rust
bitshifter.github.io

Oxidize Global Workshop and CfP announcement
ferrous-systems.com

Collecting many errors from an iterator of Results.
tarquin-the-brave.github.io

Writing Python inside your Rust code - Part 3
blog.m-ou.se

Rust FFI - Building an ASN1 codec
sjames.github.io

[video] Building a simple GraphQL API with Actix and Juniper
youtu.be

[video] Named Field Init in C, C++20, Zig, Rust, & D
www.youtube.com
Crate of the week: cargo-workspaces

This week's crate is cargo-workspaces, a cargo subcommand to manage your cargo workspace.
Updates from core

add built in PSP target
rust-lang/rust/pull/72062

emit a warning when optimization fuel runs out
rust-lang/rust/pull/72067

literal error reporting cleanup
rust-lang/rust/pull/72047

incomplete features can also be unsound
rust-lang/rust/pull/72045

be less aggressive with DroplessArena/TypedArena growth
rust-lang/rust/pull/71872

provide separate option for std debug asserts
rust-lang/rust/pull/72146

rework the std::iter::Step trait
rust-lang/rust/pull/69659

simpler slice Iterator methods
rust-lang/rust/pull/72166

make RawVec::grow mostly non-generic
rust-lang/rust/pull/72013

implement FromStr for OsString
rust-lang/rust/pull/71662

make offset must_use
rust-lang/rust/pull/72143

cargo: ignore broken console output in some situations
rust-lang/cargo/pull/8236

cargo: handle LTO with an rlib/cdylib crate type
rust-lang/cargo/pull/8254

cargo: gracefully handle errors during a build
rust-lang/cargo/pull/8247
News

Five Years of Rust
blog.rust-lang.org

Structuring and handling errors in 2020
nick.groenen.me

Taking Advantage of Auto-Vectorization in Rust
nickwilcox.github.io

State of Web Routing in Rust
pksunkara.com

Rust releases for single and multiple targets with GitHub Actions
mateuscosta.me

Getting Started With Rust By Building A Tiny Markdown Compiler
jesselawson.org

Parcel and Rust: A WASM Romcom
dev.to

Reading temperature sensor in Rust using Raspberry Pi GPIO
dev.to

Rust Analyzer - Next Few Years
rust-analyzer.github.io

Rust Closures in FFI
adventures.michaelfbryan.com

The case for using Rust for Automotive Software
medium.com/@sojan.james

Gamedev #4: Benefits of full-stack Rust
www.jakobmeier.ch

RISC-V OS using Rust Chapter 9: Block IO
osblog.stephenmarz.com

A Guide to Global Data in Rust
paulkernfeld/global-data-in-rust

[audio] What's New in Rust 1.42 and 1.43
rustacean-station.org

[video] Jonathan Teaches Jason Rust!
www.youtube.com

[video] Educational Rust coding - Building a web app
www.twitch.tv

[video] Rust and C++ Cardiff Virtual Meetup
www.youtube.com
Crate of the week: apply

This week's crate is apply, a tiny library for chaining free functions into method call chains.