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

Implement incremental "fat" LTO
https://github.com/rust-lang/rust/pull/58378

Enable comparing fat pointers
https://github.com/rust-lang/rust/pull/58301

impl iter() for dyn Error
https://github.com/rust-lang/rust/pull/58289

Improve the error messages for missing stability attributes
https://github.com/rust-lang/rust/pull/58276

Cut down on number formating code size
https://github.com/rust-lang/rust/pull/58272

Reduce the size of hir::Expr
https://github.com/rust-lang/rust/pull/58258

Make saturating_add and saturating_sub const functions
https://github.com/rust-lang/rust/pull/58246

Stabilize slice_sort_by_cached_key
https://github.com/rust-lang/rust/pull/58074

Stabilize str::escape_* methods with new return types
https://github.com/rust-lang/rust/pull/58051

Stabilize the time_checked_add feature
https://github.com/rust-lang/rust/pull/58034

Update the future/task API
https://github.com/rust-lang/rust/pull/57992

Speed up the fast path for assert_eq! and assert_ne!
https://github.com/rust-lang/rust/pull/57815

cargo: Stabilize Alternative Registries
https://github.com/rust-lang/cargo/pull/6654
Crate of the week: num-format

This week's crate is num-format, a crate to format numbers to international standards. Thanks to Vikrant for the suggestion!
Updates from core

Add an unstable option to build proc macros for both the host and the target
https://github.com/rust-lang/cargo/pull/6547

Avoid ICE when region sneaks into impl trait
https://github.com/rust-lang/rust/pull/58649

Add const generics to the HIR
https://github.com/rust-lang/rust/pull/58503

Improve parsing diagnostic for negative supertrait bounds
https://github.com/rust-lang/rust/pull/57364

Optimise vec![false; N] to zero-alloc
https://github.com/rust-lang/rust/pull/58628

Add expected/provided byte alignments to validation error message
https://github.com/rust-lang/rust/pull/58658

Remove LazyTokenStream
https://github.com/rust-lang/rust/pull/58476

Add better error message for partial move
https://github.com/rust-lang/rust/pull/58199

Suggest removing parentheses surrounding lifetimes
https://github.com/rust-lang/rust/pull/58198

Use normal mutable borrows in matches
https://github.com/rust-lang/rust/pull/57609

Monomorphize less code in fs::{read, write}
https://github.com/rust-lang/rust/pull/58530

Make overflowing and wrapping negation const
https://github.com/rust-lang/rust/pull/58044

Fix overlapping references in BTree
https://github.com/rust-lang/rust/pull/58431

Relax some Ord bounds on BinaryHeap
https://github.com/rust-lang/rust/pull/58421

Relax some Hash bounds on HashMap and HashSet
https://github.com/rust-lang/rust/pull/58370

Turn duration consts into associated consts
https://github.com/rust-lang/rust/pull/58595

RangeInclusive internal iteration performance improvement
https://github.com/rust-lang/rust/pull/58122

Override VecDeque::try_rfold, also update iterator
https://github.com/rust-lang/rust/pull/58064

Stabilize TryFrom and TryInto with a convert::Infallible empty enum
https://github.com/rust-lang/rust/pull/58302

Stabilize iter::successors and iter::from_fn
https://github.com/rust-lang/rust/pull/58576

Destabilize fixed-width const defined atomic integers
https://github.com/rust-lang/rust/pull/58616

Deprecate the unstable Vec::resize_default
https://github.com/rust-lang/rust/pull/57656

Modify doctest's auto-fn main() to allow Results
https://github.com/rust-lang/rust/pull/56470

crates.io: Stop logging the referer header
https://github.com/rust-lang/crates.io/pull/1636