pub ThisWeekInRust {} – Telegram
pub ThisWeekInRust {}
989 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: gfx-hal

This week's crate is gfx-hal, a hardware abstraction layer for gfx-rs. Thanks to Vikrant Chaudhary for the suggestion!
Updates from core

add miri to rustup
https://github.com/rust-lang/rustup.rs/pull/1606

fix undefined behavior
https://github.com/rust-lang/rust/pull/57511

resolve: mark extern crate items as used in more cases
https://github.com/rust-lang/rust/pull/57557

clarify resolve typo suggestion
https://github.com/rust-lang/rust/pull/57477

privacy: fix private-in-public check for existential types
https://github.com/rust-lang/rust/pull/57556

tweak output of type mismatch between "then" and else if arms
https://github.com/rust-lang/rust/pull/57381

use structured suggestion when casting a reference
https://github.com/rust-lang/rust/pull/57493

use structured suggestions for nonstandard style lints
https://github.com/rust-lang/rust/pull/57387

point at match discriminant on type error in match arm pattern
https://github.com/rust-lang/rust/pull/57366

const-stabilize const_int_ops + const_ip
https://github.com/rust-lang/rust/pull/57234

don't actually create a full MIR stack frame when not needed
https://github.com/rust-lang/rust/pull/57351

speed up item_bodies for large match statements involving regions
https://github.com/rust-lang/rust/pull/57494

change String to &'static str in ParseResult::Failure
https://github.com/rust-lang/rust/pull/57461

parallelize and optimize parts of HIR map creation
https://github.com/rust-lang/rust/pull/57232

stabilize cfg_target_vendor
https://github.com/rust-lang/rust/pull/57465

stabilize cfg_attr_multi
https://github.com/rust-lang/rust/pull/57332

stabilize core::convert::identity
https://github.com/rust-lang/rust/pull/57322

stabilize let bindings and destructuring in constants and const fn
https://github.com/rust-lang/rust/pull/57175

clean up and optimize OpenTask / read_index
https://github.com/rust-lang/rust/pull/57114

NLL: add union justifications to conflicting borrows
https://github.com/rust-lang/rust/pull/57102

fix and optimize query profiling
https://github.com/rust-lang/rust/pull/57095

make TokenStream less recursive
https://github.com/rust-lang/rust/pull/57004

replace LockCell with atomic types
https://github.com/rust-lang/rust/pull/56614

make more passes incremental
https://github.com/rust-lang/rust/pull/51487

librustc_mir: fix ICE with slice patterns
https://github.com/rust-lang/rust/pull/57538

don't unwrap unexpected tokens in format!
https://github.com/rust-lang/rust/pull/57522

stabilize uniform_paths
https://github.com/rust-lang/rust/pull/56759

stabilize irrefutable if-let and while-let patterns
https://github.com/rust-lang/rust/pull/57535

stabilize if_while_or_patterns
https://github.com/rust-lang/rust/pull/57532

std: render large exit codes as hex on Windows
https://github.com/rust-lang/rust/pull/57473

add #[must_use] to Iterator and Future
https://github.com/rust-lang/rust/pull/57549

std: force Instant::now() to be monotonic
https://github.com/rust-lang/rust/pull/56988

optimise floating point is_finite (2x) and is_infinite (1.6x)
https://github.com/rust-lang/rust/pull/57353

cargo --{example,bin,bench,test} with no argument now lists all available targets
https://github.com/rust-lang/cargo/pull/6505

rustup: fix utils::copy_file for symlink
https://github.com/rust-lang/rustup.rs/pull/1521

rustdoc: allow inlining of reexported crates and crate items
https://github.com/rust-lang/rust/pull/57508
Crate of the week: ropey

This week's crate is ropey, an editable text buffer data structure. Thanks to Vikrant Chaudhary for the suggestion!
Updates from core

rustc: Remove platform intrinsics crate
https://github.com/rust-lang/rust/pull/57416

implement new literal type Err
https://github.com/rust-lang/rust/pull/57651

Better lifetime error message
https://github.com/rust-lang/rust/pull/56479

Add span for malformed doc comment
https://github.com/rust-lang/rust/pull/57784

Add "dereference boxed value" suggestion
https://github.com/rust-lang/rust/pull/57783

Suggest correct cast for struct fields with shorthand syntax
https://github.com/rust-lang/rust/pull/57769

Continue parsing after parent type args and suggest using angle brackets
https://github.com/rust-lang/rust/pull/57768

Remove delay_span_bug from qualify_min_const_fn
https://github.com/rust-lang/rust/pull/57736

Use structured suggestion to surround struct literal with parenthesis
https://github.com/rust-lang/rust/pull/57725

Point at cause for expectation in return type type error
https://github.com/rust-lang/rust/pull/57723

Fix suggestions given mulitple bad lifetimes
https://github.com/rust-lang/rust/pull/57720

better error message for bad manifest with cargo install
https://github.com/rust-lang/cargo/pull/6560

add applicability to remaining suggestions
https://github.com/rust-lang/rust/pull/57699

use a faster early exit during region expansion
https://github.com/rust-lang/rust/pull/57697

Tweak expand_node
https://github.com/rust-lang/rust/pull/57719

simplify TokenStream some more
https://github.com/rust-lang/rust/pull/57486

redo hir::Stmt
https://github.com/rust-lang/rust/pull/57689

high priority resolutions for associated variants
https://github.com/rust-lang/rust/pull/57501

provide suggestion for invalid boolean cast
https://github.com/rust-lang/rust/pull/57481

two HIR tweaks
https://github.com/rust-lang/rust/pull/57658

librustc_metadata: pass a default value when unwrapping a span
https://github.com/rust-lang/rust/pull/57650

privacy: account for associated existential types
https://github.com/rust-lang/rust/pull/57649

use structured macro and path resolve suggestions
https://github.com/rust-lang/rust/pull/57635

unaccept extern_in_paths
https://github.com/rust-lang/rust/pull/57572

querify entry_fn
https://github.com/rust-lang/rust/pull/57573

querify local plugin_registrar_fn and proc_macro_decls_static
https://github.com/rust-lang/rust/pull/57570

modify some parser diagnostics to continue evaluating beyond the parser
https://github.com/rust-lang/rust/pull/57540

Fix poor worst case performance of set intersection
https://github.com/rust-lang/rust/pull/57043

add core::iter::once_with()
https://github.com/rust-lang/rust/pull/57579

Add is_sorted to Iterator and [T]
https://github.com/rust-lang/rust/pull/55045

add a debug_assert to Vec::set_len
https://github.com/rust-lang/rust/pull/57589

enhance Pin impl applicability for PartialEq and PartialOrd
https://github.com/rust-lang/rust/pull/57685

Change bounds on TryFrom blanket impl to use Into instead of From
https://github.com/rust-lang/rust/pull/56796

stabilize FileExt::read_exact_at/write_all_at
https://github.com/rust-lang/rust/pull/57625

rustdoc: Add option to persist doc test executables
https://github.com/rust-lang/rust/pull/56189

crates.io: Reject publishing of crates that depend on an alternative registry
https://github.com/rust-lang/crates.io/pull/1589
Crate of the week: rust-analyzer

This week's crate is rust-analyzer, an experimental Rust compiler frontend for IDEs. Thanks to llogiq for the suggestion!
Updates from core

enable RISC-V atomic compare and swap
https://github.com/rust-lang/rust/pull/57925

recover from parse errors in literal struct fields and incorrect float literals
https://github.com/rust-lang/rust/pull/57779

merge visitors in AST validation
https://github.com/rust-lang/rust/pull/57730

resolve: Fix span arithmetics in the import conflict error
https://github.com/rust-lang/rust/pull/57908

fix race condition when emitting stored diagnostics
https://github.com/rust-lang/rust/pull/57066

don't ICE when logging unusual types
https://github.com/rust-lang/rust/pull/57865

combine all builtin early lints
https://github.com/rust-lang/rust/pull/57726

add suggestion for moving type declaration before associated type bindings in generic arguments
https://github.com/rust-lang/rust/pull/57886

add suggestion for incorrect field syntax
https://github.com/rust-lang/rust/pull/57863

suggest removing leading left angle brackets
https://github.com/rust-lang/rust/pull/57852

add error for trailing angle brackets
https://github.com/rust-lang/rust/pull/57817

print visible name for types as well as modules
https://github.com/rust-lang/rust/pull/57802

use structured suggestion instead of notes
https://github.com/rust-lang/rust/pull/57795

explain type mismatch cause pointing to return type when it is impl Trait
https://github.com/rust-lang/rust/pull/57793

when using value after move, point at span of local
https://github.com/rust-lang/rust/pull/57294

conditionally skip two passes if their related attributes were not found
https://github.com/rust-lang/rust/pull/57691

fix evaluating trivial drop glue in constants
https://github.com/rust-lang/rust/pull/57734

const_eval: predetermine the layout of all locals when pushing a stack frame
https://github.com/rust-lang/rust/pull/57677

fix memory leak in P::filter_map
https://github.com/rust-lang/rust/pull/57667

get rid of the fake stack frame for reading from constants
https://github.com/rust-lang/rust/pull/57606

add intrinsic to create an integer bitmask from a vector mask
https://github.com/rust-lang/rust/pull/57269

un-deprecate mem::zeroed
https://github.com/rust-lang/rust/pull/57825

make MutexGuard's Debug implementation more useful
https://github.com/rust-lang/rust/pull/57703

make str indexing generic on SliceIndex
https://github.com/rust-lang/rust/pull/57604

small perf improvement for fmt
https://github.com/rust-lang/rust/pull/57537

add signed num::NonZeroI* types
https://github.com/rust-lang/rust/pull/57475

std: stabilize fixed-width integer atomics
https://github.com/rust-lang/rust/pull/57425

use pinning for generators to make trait safe
https://github.com/rust-lang/rust/pull/55704

implement optimize(size) and optimize(speed) attributes
https://github.com/rust-lang/rust/pull/55641

cargo: make incremental compilation the default for all profiles
https://github.com/rust-lang/cargo/pull/6564

rustdoc: fix ICE from loading proc-macro stubs
https://github.com/rust-lang/rust/pull/57846
News

Writing an OS in Rust: Advanced paging.
https://os.phil-opp.com/advanced-paging/

Embedding WebAssembly in your Rust application.
https://medium.com/wasmer/executing-webassembly-in-your-rust-application-d5cd32e8ce46

Lock-free Rust: Crossbeam in 2019.
https://stjepang.github.io/2019/01/29/lock-free-rust-crossbeam-in-2019.html

Performance of Rust's match vs. lookup tables.
https://kevinlynagh.com/notes/match-vs-lookup/

Librnoscript's GObject boilerplate is in Rust now.
https://people.gnome.org/~federico/blog/librnoscript-gobject-in-rust.html

Enjoy a slice of QUIC, and Rust. Quiche is an implementation of the QUIC transport protocol, by Cloudflare.
https://blog.cloudflare.com/enjoy-a-slice-of-quic-and-rust/

Exporting Serde types to TypeScript.
http://timryan.org/2019/01/22/exporting-serde-types-to-typenoscript.html
Crate of the week: typetag

This week's crate is typetag, a small crate to allow for serde trait objects. Thanks to Christopher Durham for the suggestion!
Updates from core

HirIdification: add key HirId methods
https://github.com/rust-lang/rust/pull/58090

don't panic when accessing enum variant ctor using Self in match
https://github.com/rust-lang/rust/pull/58007

use LLVM intrinsics for saturating add/sub
https://github.com/rust-lang/rust/pull/58003

add MOVBE x86 CPU feature
https://github.com/rust-lang/rust/pull/57999

NVPTX target specification
https://github.com/rust-lang/rust/pull/57937

fix bug in integer range matching
https://github.com/rust-lang/rust/pull/57978

unused variable suggestions apply on all patterns
https://github.com/rust-lang/rust/pull/57899

add information to higher-ranked lifetimes conflicts error messages
https://github.com/rust-lang/rust/pull/57901

rustc: use multiple threads by default
https://github.com/rust-lang/rust/pull/57948

misc performance tweaks
https://github.com/rust-lang/rust/pull/57916

simplify ConstValue::ScalarPair
https://github.com/rust-lang/rust/pull/57442

mark str::trim* functions as #[must_use]
https://github.com/rust-lang/rust/pull/57106

override VecDeque's Iter::try_fold
https://github.com/rust-lang/rust/pull/57974

introduce into_raw_non_null on Rc and Arc
https://github.com/rust-lang/rust/pull/57934

implement Weak::{strong_count, weak_count}
https://github.com/rust-lang/rust/pull/56696

rename iter::unfold to iter::from_fn and remove explicit state
https://github.com/rust-lang/rust/pull/58062

stabilize std::error::Error::type_id
https://github.com/rust-lang/rust/pull/58048

stabilize split_ascii_whitespace
https://github.com/rust-lang/rust/pull/58047

cargo: fix overlapping progress with stdout
https://github.com/rust-lang/cargo/pull/6618

cargo: improve progress bar flickering
https://github.com/rust-lang/cargo/pull/6615
Crate of the week: log-derive

This week's crate is log-derive, a procedural macro to log function outputs. Thanks to elichai2 for the suggestion!
Updates from core

Initial addition of the Embedded Rust Book.
https://github.com/rust-lang/rust/pull/56291

Add const generics to the AST.
https://github.com/rust-lang/rust/pull/58191

Error on duplicate matcher bindings.
https://github.com/rust-lang/rust/pull/57617

libc: RFC 2235 - Implement PartialEq,Eq,Hash,Debug for all types.
https://github.com/rust-lang/libc/pull/1217

Lower constant patterns with ascribed types.
https://github.com/rust-lang/rust/pull/58161

Make intern_lazy_const actually intern its argument.
https://github.com/rust-lang/rust/pull/58207

Avoid committing to autoderef in object method probing.
https://github.com/rust-lang/rust/pull/57885

Add #[must_use] to core::task::Poll.
https://github.com/rust-lang/rust/pull/58145

Add #[must_use] message to Fn* traits.
https://github.com/rust-lang/rust/pull/58262

Avoid some bounds checks in binary_heap::{PeekMut,Hole}.
https://github.com/rust-lang/rust/pull/58123

Make -Zdump-mir dump shims.
https://github.com/rust-lang/rust/pull/58103

Cargo: Bail when trying to run "test --doc --no-run".
https://github.com/rust-lang/cargo/pull/6628

Improve error message and docs for non-UTF-8 bytes in stdio on Windows.
https://github.com/rust-lang/rust/pull/58136

Move privacy checking later in the pipeline and make some passes run in parallel.
https://github.com/rust-lang/rust/pull/58010

Overhaul syntax::fold::Folder.
https://github.com/rust-lang/rust/pull/58061

Factor out error reporting from smart_resolve_path_fragment fn.
https://github.com/rust-lang/rust/pull/58065

Do not ICE in codegen when using a extern_type static.
https://github.com/rust-lang/rust/pull/58192

hir: add more HirId methods.
https://github.com/rust-lang/rust/pull/58139

Implement more detailed self profiling.
https://github.com/rust-lang/rust/pull/58085

Add a forever unstable opt-out of const qualification checks.
https://github.com/rust-lang/rust/pull/56123

Initial implementation of rustfixable unused_imports lint.
https://github.com/rust-lang/rust/pull/56645

Add a query type which is always marked as red if it runs.
https://github.com/rust-lang/rust/pull/57770

Don't try to clean predicates involving ReErased.
https://github.com/rust-lang/rust/pull/57851

Deduplicate mismatched delimiter errors.
https://github.com/rust-lang/rust/pull/57944

Add suggestion for duplicated import.
https://github.com/rust-lang/rust/pull/57973

Allow #[repr(align(x))] on enums.
https://github.com/rust-lang/rust/pull/57998
Crate of the week: sysinfo

This week's crate is sysinfo, a system handler to get information and interact with processes. Thanks to GuillaumeGomez for the suggestion!