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
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
Crate of the week: shellfn

This week's crate is shellfn, a proc macro to easily and safely use shell noscripts in Rust. Thanks to Willi Kappler for the suggestion!