pub ThisWeekInRust {} – Telegram
pub ThisWeekInRust {}
990 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

New members for the Rust core team.
internals.rust-lang.org

Tools team changes.
internals.rust-lang.org

Raspberry Pi 3: Hardware debugging using JTAG.
rust-embedded/rust-raspi3-OS-tutorials/tree/master/0B_hw_debug_JTAG

From 46s to 5s - Optimizing a 350 line raytracer in Rust.
blog.usejournal.com

Should Rust channels panic on send if nobody's listening?
www.randomhacks.net

In nightly Rust, 'await!' may never return (dropping futures).
www.randomhacks.net

The rise of wgpu.
gfx-rs.github.io

Making a case: Rust for Python developers.
medium.com/@rajasekar3eg

Intro to web programming in Rust for NodeJS developers.
medium.com/@gruberbastian

Remote development and debugging of Rust with CLion.
medium.com/nearprotocol

This week in Rust and WebAssembly 13.
rustwasm.github.io

The Embedded WG newsletter 16.
rust-embedded.github.io
Crate of the week: validator

This week's crate is validator, a crate offering simple validation for Rust structs. Thanks to Willi Kappler for the suggestion!
Do you want to read core updates here?
Anonymous Poll
78%
Yes
16%
Don't care
7%
No, hide it
Updates from core

Optimize copying large ranges of undefmask blocks
rust-lang/rust/pull/58556

Unregress using scalar unions in constants
rust-lang/rust/pull/59139

Ignore higher-ranked object bound conditions created by WF
rust-lang/rust/pull/59132

Visit impl Trait for dead_code lint
rust-lang/rust/pull/59129

rustc: Fix ICE when trait alias has bare Self
rust-lang/rust/pull/59118

Fix ICE in MIR pretty printing
rust-lang/rust/pull/59036

resolve: Account for new importable entities
rust-lang/rust/pull/59047

Remove restriction on isize/usize in repr(simd)
rust-lang/rust/pull/59201

Add Cmp::clamp for ranges
rust-lang/rust/pull/58710

Stabilize Range*::contains
rust-lang/rust/pull/59152

Change std::fs::copy to use copyfile on MacOS and iOS
rust-lang/rust/pull/58901

Stabilize Option::copied
rust-lang/rust/pull/59231

cargo: Fix resolving yanked crates when using a local registry
rust-lang/cargo/pull/6742

cargo: Stricter package change detection
rust-lang/cargo/pull/6740
News

Writing an OS in Rust: Paging implementation.
os.phil-opp.com

Fast, bump-allocated virtual DOMs with Rust and Wasm.
hacks.mozilla.org

Implementing a NES emulator in Rust.
www.michaelburge.us

Porting the UNIX-like Redox OS to Arm v8.0.
fosdem.org

A Rust API for librnoscript.
people.gnome.org

Embedded in Rust: Implementing a static stack usage analysis tool.
blog.japaric.io

Scientific computing: a Rust adventure (part 1 - zero-cost abstractions).
www.lpalmieri.com

Web Programming in Rust - 02/x: Deployments.
dev.to

Announcing Governance Working Group.
internals.rust-lang.org
Crate of the week: copyless

This week's crate is copyless, a crate to extend boxes and vecs to operate on values while avoiding memcpys. Thanks to Dzmitry Malyshau for the suggestion!
Updates from core

Move libtest out of rust-lang/rust
rust-lang/rust/pull/57842

Introduce assembly tests suite
rust-lang/rust/pull/58791

syntax: Better recovery for $ty::AssocItem and ty!()::AssocItem
rust-lang/rust/pull/59058

MIR optimization: Run branch cleanup after copy propagation
rust-lang/rust/pull/59290

Do not complain about non-existing fields after parse recovery
rust-lang/rust/pull/59266

Make meta-item API compatible with LocalInternedString::get soundness fix
rust-lang/rust/pull/59256

Use a valid name for graphviz graphs
rust-lang/rust/pull/59251

When moving out of a for loop head, suggest borrowing it
rust-lang/rust/pull/59195

When encountering ||{}(), suggest the likely intended (||{})()
rust-lang/rust/pull/59035

Point at coercion reason for if expressions without else clause if caused by return type
rust-lang/rust/pull/58981

Elide object safety errors on non-existent trait function
rust-lang/rust/pull/58929

Unify OsString/OsStr for byte-based implementations
rust-lang/rust/pull/58953

Add provided methods Seek::{stream_len, stream_position}
rust-lang/rust/pull/58422

Add todo!() macro
rust-lang/rust/pull/56348

Implement ExactSizeIterator for ToLowercase and ToUppercase
rust-lang/rust/pull/58778

Make Option<ThreadId> no larger than ThreadId with NonZeroU64
rust-lang/rust/pull/59291

Stabilize refcell_map_split feature
rust-lang/rust/pull/59280

Add const generics to rustdoc
rust-lang/rust/pull/59170

crates.io: Allow download counts to fail to be updated
rust-lang/crates.io/pull/1675
News

Why Hashbrown (Rust's new HashMap implementation) does a double-lookup on insertion.
gankro.github.io

Chaining functions without returning self.
randompoison.github.io

"Learning Rust With Entirely Too Many Linked Lists" has been updated for Rust 2018.
rust-unofficial.github.io

Miri available as rustup component.
www.ralfj.de

How to debug Rust with Visual Studio Code.
www.forrestthewoods.com

Rust: The hard parts - part one: References, borrowing, and ownership.
naftuli.wtf

Procedural macro in Rust 101.
dev.to

Generalizing seqlocks: The swym algorithm.
mtak-blog.github.io

The phantom builder.
wiredforge.com

Variance in Rust: An intuitive explanation.
ehsanmkermani.com

Rust All Hands 2019: Array iterators, Rayon, and more.
developers.redhat.com

This week in Rust and WebAssembly 14.
rustwasm.github.io

The Embedded WG newsletter 17.
rust-embedded.github.io
Crate of the week: safety-guard

This week's crate is safety-guard, a crate providing a #[safety] attribute that generates both a doc entry and debug assertion. Thanks to Willi Kappler for the suggestion!
Updates from core

Add intial support for wasm32-unknown-wasi
rust-lang/libc/pull/1307

Allow closure to unsafe fn coercion
rust-lang/rust/pull/59580

Include bounds in generic re-ordering diagnostic
rust-lang/rust/pull/59572

Optimize indentation in the pretty printer
rust-lang/rust/pull/59507

Use SmallVec in TokenStreamBuilder
rust-lang/rust/pull/59476

Make ASCII case conversions more than 4× faster
rust-lang/rust/pull/59283

Adjust MaybeUninit API to discussions
rust-lang/rust/pull/59284

Introduce proc_macro::Span::source_text
rust-lang/rust/pull/55780

Add Default to std::alloc::System
rust-lang/rust/pull/59451

Add FromStr impl for NonZero types
rust-lang/rust/pull/58717

Implement AsRawFd for stdio locks
rust-lang/rust/pull/59512

Simplify checked_duration_since
rust-lang/rust/pull/59374

Stabilize refcell_replace_swap
rust-lang/rust/pull/59581

stabilize ptr::hash
rust-lang/rust/pull/59603

Stabilize {f32, f64}::copysign()
rust-lang/rust/pull/59503

cargo metadata: Don't show null deps
rust-lang/cargo/pull/6534

cargo install: Be more restrictive about cli flags
rust-lang/cargo/pull/6801

rustdoc: Fix infinite recursion
rust-lang/rust/pull/59539

rustdoc: collapse blanket impls in the same way as normal impls
rust-lang/rust/pull/59534
News

Five super helpful Rust things that nobody told you about.
saghm.github.io

RaptorQ (RFC6330) and performance optimization in Rust.
www.cberner.com

Idiomatic monads in Rust.
varkor.github.io

BoringTun, a userspace WireGuard implementation in Rust.
blog.cloudflare.com

Understanding futures in Rust - part 1.
www.viget.com

Mocking in Rust with conditional compilation.
klausi.github.io

Face detection with Tensorflow Rust.
cetra3.github.io

DSL in Rust: Challenges.
blog.yoshuawuyts.com

Explained: How does async work in Rust?
dev.to

This week in Rust and WebAssembly 15.
rustwasm.github.io
Crate of the week: sonic

This week's crate is sonic, a fast, lightweight & schema-less search backend. Thanks to Vikrant for the suggestion!
Updates from core

Show better errors for LLVM IR output
rust-lang/rust/pull/59744

Use for_each to extend collections
rust-lang/rust/pull/59740

wasi: Use shared API for preopened file denoscriptors
rust-lang/rust/pull/59727

Never return uninhabited values at all
rust-lang/rust/pull/59639

Shrink mir::Statement
rust-lang/rust/pull/59630

Refactor async fn return type lowering
rust-lang/rust/pull/59286

Unsized rvalues: implement boxed closure impls
rust-lang/rust/pull/59500

Fixes for shallow borrows
rust-lang/rust/pull/59585

Suggest using anonymous lifetime in impl Trait return
rust-lang/rust/pull/58919

Fix invalid bounds string generation in rustdoc
rust-lang/rust/pull/58894

More restrictive 2 phase borrows - take 2
rust-lang/rust/pull/58739

Tweak Span encoding
rust-lang/rust/pull/58458

Add 'partition_at_index/_by/_by_key' for slices
rust-lang/rust/pull/55448

Support allocating iterators with arenas
rust-lang/rust/pull/59533

Remove duplicated code from Iterator::{ne, lt, le, gt, ge}
rust-lang/rust/pull/59262

Forward formatter settings to bounds of Range<T> in fmt::Debug impl
rust-lang/rust/pull/59596

std: Avoid usage of Once in Instant
rust-lang/rust/pull/59676

Improve worst-case performance of HashSet.is_subset
rust-lang/rust/pull/59665

Improve worst-case performance of BTreeSet intersection
rust-lang/rust/pull/59186

Implement useful steps_between for all integers
rust-lang/rust/pull/59444

cargo: Add install-upgrade
rust-lang/cargo/pull/6798

cargo: Improve error message to rerun a test in a workspace
rust-lang/cargo/pull/6824

cargo Resolve: Be less strict while offline
rust-lang/cargo/pull/6814

cargo: Add more suggestions on how to deal with excluding a package from a workspace
rust-lang/cargo/pull/6805

Allow cargo install --path P to load config from P
rust-lang/cargo/pull/6804

Allow cargo doc --open with multiple packages
rust-lang/cargo/pull/6803

Speed up rustdoc run
rust-lang/rust/pull/59452

crates.io: Add monitoring for common spam patterns
rust-lang/crates.io/pull/1678
News

Rust is the most loved language four years in a row.
insights.stackoverflow.com

How to compose functions in Rust.
stackoverflow.com

A basic web application with Rust and Actix-web.
zupzup.org

More tricks up in the ArcSwap’s sleeve.
vorner.github.io

Arenas vs. indices.
llogiq.github.io

Protocols in Tokio (i3 IPC).
leshow.github.io

Array1 and function traits (scientific computing: a Rust adventure, part 2).
www.lpalmieri.com
Crate of the week: interact

This week's crate is interact, a framework for online introspection of the running program state. Thanks to Willi Kappler for the suggestion!
Updates from core

save-analysis: Pull associated type definition using qpath_def
rust-lang/rust/pull/59894

Recover from missing semicolon based on the found token
rust-lang/rust/pull/59866

Increase Span from 4 bytes to 8 bytes
rust-lang/rust/pull/59693

proc_macro: Stop using LEB128 for RPC
rust-lang/rust/pull/59820

Remove duplicated redundant spans
rust-lang/rust/pull/59896

Mark variables captured by reference as mutable correctly
rust-lang/rust/pull/59708

Suggest removing ? to resolve type errors
rust-lang/rust/pull/59859

Make duplicate matcher bindings a hard error
rust-lang/rust/pull/59858

Improvement for comparision against fn
rust-lang/rust/pull/59798

Suggest importing macros from the crate root
rust-lang/rust/pull/59784

Function arguments should never get promoted
rust-lang/rust/pull/59724

miri: Implement non-deterministc mode
rust-lang/miri/pull/683

miri: Unsized locals and by-value dyn traits
rust-lang/rust/pull/59780

std: Add {read, write}_vectored for more types
rust-lang/rust/pull/59852

MaybeUninit: Remove deprecated functions
rust-lang/rust/pull/59912

Stabilize the alloc crate
rust-lang/rust/pull/59675

Improve warning in cargo new with parse error
rust-lang/cargo/pull/6839

rustup.rs: Less copying during dist installation
rust-lang/rustup.rs/pull/1744

rustup.rs: Shell completions for Cargo
rust-lang/rustup.rs/pull/1646

Add --path option to 'rustup override set'
rust-lang/rustup.rs/pull/1524