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
News

I made a NES emulator in Rust using generators.
kyle.space

Where rustc spends its time.
wiki.alopex.li

2019 compiler roadmap progress.
internals.rust-lang.org

Update on const generics progress.
rust-lang/rust/issues/44580#issuecomment-544155666

Asynchronous destructors.
boats.gitlab.io

A tiny, static, full-text search engine using Rust and WebAssembly.
endler.dev

MicroRust: discover the world of microcontrollers through Rust on the BBC micro:bit.
droogmic.github.io

Dealing with process termination in Linux.
iximiuz.com

The embedded WG's operating system tutorials rewrite added support for the Raspberry Pi 4.
rust-embedded/rust-raspi3-OS-tutorials/tree/rewrite_for_v2

Adventures in motion control: simple automation sequences
adventures.michaelfbryan.com

Programming Servo: shipping message-ports(via a detour into Spectre).
medium.com/programming-servo

Rotary encoders in embedded Rust.
leshow.github.io
Crate of the week: grubbnet

This week's crate is grubbnet, a TCP client/server library for networked applications and games.
Updates from core

Allow foreign exceptions to unwind through Rust code and Rust panics to unwind through FFI
rust-lang/rust/pull/65646

expand: Feature gate out-of-line modules in proc macro input
rust-lang/rust/pull/66078

Lint ignored #[inline] on function prototypes
rust-lang/rust/pull/65294

Improve the "try using a variant of the expected type" hint
rust-lang/rust/pull/65562

Use heuristics to recover parsing of missing ;
rust-lang/rust/pull/65640

Point at local similarly named element and tweak references to variants
rust-lang/rust/pull/65421

Custom lifetime error for impl item doesn't conform to trait
rust-lang/rust/pull/65068

Add lint and tests for unnecessary parens around types
rust-lang/rust/pull/65112

Correct handling of type flags with ConstValue::Placeholder
rust-lang/rust/pull/65643

Use structured suggestion for unnecessary bounds in type aliases
rust-lang/rust/pull/65914

save-analysis: Account for async desugaring in async fn return types
rust-lang/rust/pull/65936

Switch CrateMetadata's source_map_import_info from RwLock to Once
rust-lang/rust/pull/65979

Don't use eval_always for miri queries used from codegen
rust-lang/rust/pull/65927

rustc: use IndexVec instead of Vec
rust-lang/rust/pull/65825

Make promote_consts emit the errors when required promotion fails
rust-lang/rust/pull/65946

Implement ordered/sorted iterators on BinaryHeap
rust-lang/rust/pull/65091

Make *{const, mut} T>::offset_from const fn
rust-lang/rust/pull/63810

Stabilize float_to_from_bytes feature
rust-lang/rust/pull/66002

hashbrown: Introduce ahash-compile-time-rng feature
rust-lang/hashbrown/pull/125

cargo: Add --filter-platform to cargo metadata
rust-lang/cargo/pull/7376

cargo: Fix cargo fix not showing colors
rust-lang/cargo/pull/7550

chalk: Remove delayed literals
rust-lang/chalk/pull/270

chalk: Add TypeName::Error variant
rust-lang/chalk/pull/269

chalk: Output multiple solutions
rust-lang/chalk/pull/263

rustdoc: Stabilize cfg(doctest)
rust-lang/rust/pull/63803
News

Completing the transition to the new borrow checker.
blog.rust-lang.org

Rust support for Windows Runtime in the works by the author of C++ WinRT.
kennykerr.ca

You probably didn't want .into_iter().cloned().
www.reddit.com

Clippy is removing its plugin interface.
blog.rust-lang.org

Rust concurrency patterns: condvars and locks.
medium.com/@polyglot_factotum

How to make your C codebase rusty: rewriting keyboard firmware keymap in Rust.
about.houqp.me

When writing a bump allocator, always bump downwards.
fitzgeraldnick.com

Adventures in motion control: initial motion system.
adventures.michaelfbryan.com

2019-10-24 compiler team triage meeting.
blog.rust-lang.org
Crate of the week: displaydoc

This week's crate is displaydoc, a procedural derive macro to implement Display by string-interpolating the doc comment.
News

Completing the transition to the new borrow checker.
blog.rust-lang.org

Rust support for Windows Runtime in the works by the author of C++ WinRT.
kennykerr.ca

You probably didn't want .into_iter().cloned().
www.reddit.com

Clippy is removing its plugin interface.
blog.rust-lang.org

Rust concurrency patterns: condvars and locks.
medium.com/@polyglot_factotum

How to make your C codebase rusty: rewriting keyboard firmware keymap in Rust.
about.houqp.me

When writing a bump allocator, always bump downwards.
fitzgeraldnick.com

Adventures in motion control: initial motion system.
adventures.michaelfbryan.com

2019-10-24 compiler team triage meeting.
blog.rust-lang.org
Crate of the week: displaydoc

This week's crate is displaydoc, a procedural derive macro to implement Display by string-interpolating the doc comment.
Updates from core

Allow foreign exceptions to unwind through Rust code and Rust panics to unwind through FFI
rust-lang/rust/pull/65646

expand: Feature gate out-of-line modules in proc macro input
rust-lang/rust/pull/66078

Lint ignored #[inline] on function prototypes
rust-lang/rust/pull/65294

Improve the "try using a variant of the expected type" hint
rust-lang/rust/pull/65562

Use heuristics to recover parsing of missing ;
rust-lang/rust/pull/65640

Point at local similarly named element and tweak references to variants
rust-lang/rust/pull/65421

Custom lifetime error for impl item doesn't conform to trait
rust-lang/rust/pull/65068

Add lint and tests for unnecessary parens around types
rust-lang/rust/pull/65112

Correct handling of type flags with ConstValue::Placeholder
rust-lang/rust/pull/65643

Use structured suggestion for unnecessary bounds in type aliases
rust-lang/rust/pull/65914

save-analysis: Account for async desugaring in async fn return types
rust-lang/rust/pull/65936

Switch CrateMetadata's source_map_import_info from RwLock to Once
rust-lang/rust/pull/65979

Don't use eval_always for miri queries used from codegen
rust-lang/rust/pull/65927

rustc: use IndexVec instead of Vec
rust-lang/rust/pull/65825

Make promote_consts emit the errors when required promotion fails
rust-lang/rust/pull/65946

Implement ordered/sorted iterators on BinaryHeap
rust-lang/rust/pull/65091

Make *{const, mut} T>::offset_from const fn
rust-lang/rust/pull/63810

Stabilize float_to_from_bytes feature
rust-lang/rust/pull/66002

hashbrown: Introduce ahash-compile-time-rng feature
rust-lang/hashbrown/pull/125

cargo: Add --filter-platform to cargo metadata
rust-lang/cargo/pull/7376

cargo: Fix cargo fix not showing colors
rust-lang/cargo/pull/7550

chalk: Remove delayed literals
rust-lang/chalk/pull/270

chalk: Add TypeName::Error variant
rust-lang/chalk/pull/269

chalk: Output multiple solutions
rust-lang/chalk/pull/263

rustdoc: Stabilize cfg(doctest)
rust-lang/rust/pull/63803
News

Completing the transition to the new borrow checker.
blog.rust-lang.org

Rust support for Windows Runtime in the works by the author of C++ WinRT.
kennykerr.ca

You probably didn't want .into_iter().cloned().
www.reddit.com

Clippy is removing its plugin interface.
blog.rust-lang.org

Rust concurrency patterns: condvars and locks.
medium.com/@polyglot_factotum

How to make your C codebase rusty: rewriting keyboard firmware keymap in Rust.
about.houqp.me

When writing a bump allocator, always bump downwards.
fitzgeraldnick.com

Adventures in motion control: initial motion system.
adventures.michaelfbryan.com

2019-10-24 compiler team triage meeting.
blog.rust-lang.org
News

Completing the transition to the new borrow checker.
blog.rust-lang.org

Rust support for Windows Runtime in the works by the author of C++ WinRT.
kennykerr.ca

You probably didn't want .into_iter().cloned().
www.reddit.com

Clippy is removing its plugin interface.
blog.rust-lang.org

Rust concurrency patterns: condvars and locks.
medium.com/@polyglot_factotum

How to make your C codebase rusty: rewriting keyboard firmware keymap in Rust.
about.houqp.me

When writing a bump allocator, always bump downwards.
fitzgeraldnick.com

Adventures in motion control: initial motion system.
adventures.michaelfbryan.com

2019-10-24 compiler team triage meeting.
blog.rust-lang.org
Crate of the week: displaydoc

This week's crate is displaydoc, a procedural derive macro to implement Display by string-interpolating the doc comment.
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.