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: texture-synthesis

This week's crate is texture-synthesis, a program to generate textures by choosing examples.
Updates from core

Infer consts more consistently
rust-lang/rust/pull/64679

Parse assoc type bounds in generic params and provide custom diagnostic
rust-lang/rust/pull/64676

Update to LLVM 9.0.0
rust-lang/rust/pull/64634

rustbuild: Copy crate doc files fewer times
rust-lang/rust/pull/64613

Point at original span when emitting unreachable lint
rust-lang/rust/pull/64592

record fewer adjustment types in generator witnesses, avoid spurious drops in MIR construction
rust-lang/rust/pull/64584

More ObligationForest improvements
rust-lang/rust/pull/64545

Replace state_for_location with DataflowResultsCursor
rust-lang/rust/pull/64532

Load proc macro metadata in the correct order
rust-lang/rust/pull/64528

Various ObligationForest improvements
rust-lang/rust/pull/64500

Shrink SubregionOrigin
rust-lang/rust/pull/64394

save-analysis: Nest typeck tables when processing functions/methods
rust-lang/rust/pull/64250

Add cmp::{min_by, min_by_key, max_by, max_by_key}
rust-lang/rust/pull/64047

Stabilize param_attrs in Rust 1.39.0
rust-lang/rust/pull/64010

Make sure interned constants are immutable
rust-lang/rust/pull/63955

Added ability to crosscompile doctests
rust-lang/cargo/pull/6892

Add std_detect::detect::features() API that returns iterator of target-features and reject unstable features in feature-detection macros
rust-lang/stdarch/pull/739
News

LLVM: closing the gap - cross-language LTO between Rust and C/C++.
blog.llvm.org

Weld: accelerating numpy, scikit and pandas as much as 100x with Rust and LLVM.
notamonadtutorial.com

Declarative memory management.
amos.me

Generic newtypes: A way to work around the orphan rule.
blog.eizinger.io

Async builders.
blog.yoshuawuyts.com

Adventures in motion control: top-level infrastructure.
adventures.michaelfbryan.com

Build an NB-IoT GPS Tracker on STM32 L476 with Apache Mynewt and Embedded Rust.
medium.com/@ly.lee

Navigating the Rust OSS community.
yaah.dev
Crate of the week: runtime

This week's crate is runtime, an experimental hot-reloading oriented runtime in Rust.
Updates from core

Rest In Peace, AST borrowck (2012-2019)
rust-lang/rust/pull/64790

Fix double panic when printing query stack during an ICE
rust-lang/rust/pull/64799

or-patterns: Push PatKind/PatternKind::Or at top level to HIR & HAIR
rust-lang/rust/pull/64508

Fix format macro expansions spans to be macro-generated
rust-lang/rust/pull/64793

Remove blanket silencing of "type annotation needed" errors
rust-lang/rust/pull/64746

Include message on tests that should panic but do not
rust-lang/rust/pull/64745

Point at definition when misusing ADT
rust-lang/rust/pull/64691

Account for tail expressions when pointing at return type
rust-lang/rust/pull/64802

On obligation errors point at the unfulfilled binding when possible
rust-lang/rust/pull/64151

Fix coherence checking for impl trait in type aliases
rust-lang/rust/pull/63934

Propagate types.err in locals further to avoid spurious knock-down errors
rust-lang/rust/pull/64674

check_match: Improve diagnostics for let A = 2; with const A: i32 = 3
rust-lang/rust/pull/64859

Point at enclosing match when expecting () in arm
rust-lang/rust/pull/64825

Add a cycle detector for generic Graphs and mir::Bodys
rust-lang/rust/pull/64622

Add const-eval support for SIMD types, insert, and extract
rust-lang/rust/pull/64738

Implement dataflow-based const validation
rust-lang/rust/pull/64470

Optimize try_eval_bits to avoid layout queries
rust-lang/rust/pull/64673

Even more ObligationForest improvements
rust-lang/rust/pull/64627

A more explanatory thread local storage panic message
rust-lang/rust/pull/64481

Stabilize str::len, [T]::len and str::as_bytes as const fn
rust-lang/rust/pull/63770

Reserve impl<T> From<!> for T
rust-lang/rust/pull/62661

Remove manual unrolling from slice::Iter(Mut)::try_fold
rust-lang/rust/pull/64600

compiler-builtins: Implement bcmp
rust-lang/compiler-builtins/pull/315

cargo: Improve test output with --quiet
rust-lang/cargo/pull/7446
News

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

Security advisory for Cargo.
blog.rust-lang.org

Async-await hits beta.
blog.rust-lang.org

Accurate mental model for Rust's reference types.
docs.rs

Fighting the Async fragmentation.
vorner.github.io

Making a RISC-V Operating System using Rust.
web.eecs.utk.edu

Plugins in Rust.
adventures.michaelfbryan.com

Building the Azure IoT Edge Security Daemon in Rust.
msrc-blog.microsoft.com

Adventures in motion control: FPS counter.
adventures.michaelfbryan.com

Causal profiling Rust code.
llogiq.github.io

gfx-rs 2019 update.
gfx-rs.github.io

Announcing Drone OS - an embedded operating system for writing real-time applications in Rust.
www.reddit.com
Crate of the week: pin-project

This week's crate is pin-project, a proc-macro-derive for ergonomic and safe Pin projections.
Updates from core

Only add sanitizer runtimes when linking an executable
rust-lang/rust/pull/64780

LLVM/wasm: Fix conflict between ret legalization and sjlj
rust-lang/llvm-project/pull/25

LLVM/wasm: Restore defaults for stores per memop
rust-lang/llvm-project/pull/24

When encountering chained operators use heuristics to recover from bad turbofish
rust-lang/rust/pull/64909

Make visit projection iterative
rust-lang/rust/pull/65056

Make re-export collection deterministic
rust-lang/rust/pull/65043

Deduplicate closure type errors
rust-lang/rust/pull/64937

Suggest fix for type mismatch based on operator precendence
rust-lang/rust/pull/64933

syntax: improve parameter without type suggestions
rust-lang/rust/pull/64959

Polonius: use the fx hasher when interning
rust-lang/polonius/pull/131

extract expected return type for async fn generators
rust-lang/rust/pull/64999

async/await: improve not-send errors
rust-lang/rust/pull/64895

const-prop: Fix ICE when trying to eval polymorphic promoted MIR
rust-lang/rust/pull/65066

const-prop: Correctly handle locals that can't be propagated
rust-lang/rust/pull/64991

Still more ObligationForest improvements
rust-lang/rust/pull/64805

Avoid chain() in find_constraint_paths_between_regions()
rust-lang/rust/pull/64801

Optimize integral pattern matching
rust-lang/rust/pull/65089

proc_macro API: Expose macro_rules hygiene
rust-lang/rust/pull/64690

Deprecate #![plugin] & #[plugin_registrar]
rust-lang/rust/pull/64675

metadata: Some crate loading cleanup
rust-lang/rust/pull/65026

Do not ICE when dereferencing non-Copy raw pointer
rust-lang/rust/pull/65011

Fix zebra-striping in generic dataflow visualization
rust-lang/rust/pull/64974

Don't mark borrows of zero-sized arrays as indirectly mutable
rust-lang/rust/pull/64967

Deny specializing items not in the parent impl
rust-lang/rust/pull/64564

Add feature gate for raw_dylib
rust-lang/rust/pull/63948

Stabilize macros in some more positions
rust-lang/rust/pull/63931

syntax: Support modern attribute syntax in the meta matcher
rust-lang/rust/pull/63674

Use PlaceBuilder to avoid a lot of slice → vec → slice convertions
rust-lang/rust/pull/64922

use try_fold instead of try_for_each to reduce compile time
rust-lang/rust/pull/64885

Stabilize UdpSocket::peer_addr
rust-lang/rust/pull/64728

Stabilize Option::as_deref and Option::as_deref_mut
rust-lang/rust/pull/64708

Stabilize todo!(..) macro
rust-lang/rust/pull/61879

hashbrown: Add RustcVacantEntry::insert_entry
rust-lang/hashbrown/pull/118

BTreeSet intersection, is_subset & difference optimizations
rust-lang/rust/pull/64820

Implement Clone::clone_from for LinkedList
rust-lang/rust/pull/64975

Inline {min,max}_value even in debug builds
rust-lang/rust/pull/64941

cargo: Support for named profiles (RFC 2678)
rust-lang/cargo/pull/6989

cargo: Disable preserving mtimes on archives
rust-lang/cargo/pull/7465

rustup: Cleaned up error messages
rust-lang/rustup.rs/pull/2035

rustbuild: Make all alt builders produce parallel-enabled compilers
rust-lang/rust/pull/64722
News

Announcing the Inside Rust blog.
blog.rust-lang.org

Async Foundations update: Time for polish.
blog.rust-lang.org

Keeping Rust projects secure with cargo-audit 0.9: dependency trees, core advisories, unmaintained crates.
blog.rust-lang.org

Designing a COM library for Rust.
msrc-blog.microsoft.com

Tonic: gRPC has come to async/await.
luciofran.co

reqwest alpha with async/await released.
seanmonstar.com

Writing an OS in Rust - updates in September 2019.
os.phil-opp.com

Static Assertions 1.0 is released.
nikolaivazquez.com

Ownership and impl Trait.
tech.fpcomplete.com

Writing an HTTP server in Rust (part 1).
curiosityoverflow.xyz

Adventures in motion control: The communications system part 1.
adventures.michaelfbryan.com

Coding nRF52 with Rust and Apache Mynewt on Visual Studio Code.
medium.com/@ly.lee

This month in Rust GameDev 2 - September 2019.
rust-gamedev.github.io

The Embedded Working Group newsletter 19.
rust-embedded.github.io

Rust now has more than 100000 commits.
rust-lang/rust

[pdf] Leveraging Rust types for modular specification and verification.
pm.inf.ethz.ch
Crate of the week: algebraics

This week's crate is algebraics, a pure-Rust algebraic numbers library for infinite-precision computation.
Updates from core

Add support for const unsafe? extern fn
rust-lang/rust/pull/64906

Split non-CAS atomic support off into target_has_atomic_load_store
rust-lang/rust/pull/65214

deriving: Avoid dummy Span on an artificial type_ident path
rust-lang/rust/pull/65310

Print lifetimes with backticks
rust-lang/rust/pull/65292

Fix suggested bound addition diagnostic
rust-lang/rust/pull/65289

Note when a mutable trait object is needed
rust-lang/rust/pull/65077

Use structured suggestion for removal of as_str() call
rust-lang/rust/pull/65194

Fix const generic arguments not displaying in types mismatch diagnostic
rust-lang/rust/pull/65154

Improve message when attempting to instantiate tuple structs with private fields
rust-lang/rust/pull/65153

Suggest dereferencing boolean reference when used in if or while
rust-lang/rust/pull/65150

When suggesting assoc function with type params, include turbofish
rust-lang/rust/pull/65145

self-profiling: Add events for everything except trait selection
rust-lang/rust/pull/65208

Avoid SmallVec::collect
rust-lang/rust/pull/64949

Speed up TokenStream concatenation
rust-lang/rust/pull/65198

Implement Clone::clone_from for VecDeque
rust-lang/rust/pull/65069

Stabilize slice::repeat
rust-lang/rust/pull/64877

Stabilize mem::take
rust-lang/rust/pull/64716

Implement (HashMap) Entry::insert
rust-lang/rust/pull/64656

improve performance of signed saturating_mul
rust-lang/rust/pull/65312

dist: minimize the rust-std component
rust-lang/rust/pull/64823
News

Making the Tokio scheduler 10x faster.
tokio.rs

How to speed up the Rust compiler some more in 2019.
blog.mozilla.org

The node experiment - exploring async basics with Rust.
cfsamson.github.io

Debugging Rust code in CLion.
blog.jetbrains.com

My favorite rust function std::mem::drop.
blog.jabid.in

Vulnerability in sodiumoxide: generichash::Digest::eq always return true.
www.reddit.com

RISC-V OS using Rust: Communications.
osblog.stephenmarz.com

Migrating a crate from futures 0.1 to 0.3.
www.ncameron.org

Adventures in motion control: The communications system part 2.
adventures.michaelfbryan.com

Announcing Rustup 1.20.0.
blog.rust-lang.org

New VxWorks release supports Rust.
www.windriver.com

AWS’ sponsorship of the Rust Project.
aws.amazon.com
Crate of the week: Watt

This week, we don't have one, nor two, but three crates of the week! There's Watt, a fast WASM-based proc-macro runtime, Anyhow, yet another error handling crate and spotify-tui, a console user interface for Spotify.
Updates from core

Stabilize proc macros generating macro_rules items
rust-lang/rust/pull/64035

Return false from needs_drop for all zero-sized arrays
rust-lang/rust/pull/65389

Optimize LexicalResolve::expansion
rust-lang/rust/pull/65260

Remove custom PartialEq impls for LocalInternedString
rust-lang/rust/pull/65426

Optimize BitIter
rust-lang/rust/pull/65425

Optimize dropck
rust-lang/rust/pull/64595

More symbol cleanups
rust-lang/rust/pull/65545

Avoid unnecessary arena allocations in expand_pattern()
rust-lang/rust/pull/65463

Avoid unnecessary TokenTree to TokenStream conversions
rust-lang/rust/pull/65455

expand: Simplify expansion of derives
rust-lang/rust/pull/65252

Fix suggestion to constrain trait for method to be found
rust-lang/rust/pull/65242

syntax: add parser recovery for intersection- / and-patterns p1 @ p2
rust-lang/rust/pull/65410

Reducing spurious unused lifetime warnings
rust-lang/rust/pull/64603

Bring attention to suggestions when the only difference is capitalization
rust-lang/rust/pull/65398

Use structured suggestion for restricting bounds
rust-lang/rust/pull/65192

Fix zero-size uninitialized boxes
rust-lang/rust/pull/65174

Add check for overlapping ranges to unreachable patterns lint
rust-lang/rust/pull/64007

Use more fine grained locks for the dep graph
rust-lang/rust/pull/63756

Fix canonicalize_const_var leaking inference variables
rust-lang/rust/pull/65652

mir-opt: Improve SimplifyLocals pass so it can remove unused consts
rust-lang/rust/pull/65624

Improve error message for APIT with explicit generic arguments
rust-lang/rust/pull/65614

Remove unreachable unit tuple compare binop codegen
rust-lang/rust/pull/65605

Avoid ICE when include! is used by stdin crate
rust-lang/rust/pull/65603

Implement AsRef<[T]> for List<T>
rust-lang/rust/pull/65444

hashbrown: Remove most #[inline] annotations
rust-lang/hashbrown/pull/119

Always inline mem::{size_of, align_of} in debug builds
rust-lang/rust/pull/65016

Avoid realloc in CString::new
rust-lang/rust/pull/65551

BTreeSet symmetric_difference & union optimized
rust-lang/rust/pull/65226

cargo: Allow --all-features in root of virtual workspace
rust-lang/cargo/pull/7525

rustup install: add --profile flag to override profile
rust-lang/rustup.rs/pull/2075
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.