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

the Great Generics Generalisation: HIR Followup
https://github.com/rust-lang/rust/pull/51880

implement Unsized Rvalues
https://github.com/rust-lang/rust/pull/51131

add bare-metal aarch64 target
https://github.com/rust-lang/rust/pull/53233

debug_assert to ensure that from_raw_parts is only used properly aligned
https://github.com/rust-lang/rust/pull/52972

do not suggest conversion method that is already there
https://github.com/rust-lang/rust/pull/53406

export WASM table by default
https://github.com/rust-lang/rust/pull/53237

fix usage of wasm_target_feature
https://github.com/rust-lang/rust/pull/53321

syntax: enforce attribute grammar in the parser
https://github.com/rust-lang/rust/pull/53293

move SmallVector and ThinVec out of libsyntax
https://github.com/rust-lang/rust/pull/53085

resolve: crates only exist in the type namespace
https://github.com/rust-lang/rust/pull/53335

#[feature(uniform_paths)]: allow use x::y; to resolve through self::x, not just ::x
https://github.com/rust-lang/rust/pull/52923

Self in type definitions (RFC #2300)
https://github.com/rust-lang/rust/pull/53324

rustc_codegen_llvm: restore the closure env alloca hack for LLVM 5
https://github.com/rust-lang/rust/pull/53239

make LLVM emit assembly comments with -Z asm-comments
https://github.com/rust-lang/rust/pull/53290

unions are not always trivially dropable
https://github.com/rust-lang/rust/pull/53288

cause cycle err on inf trait normalization
https://github.com/rust-lang/rust/pull/53316

NLL: optimize reassignment immutable state
https://github.com/rust-lang/rust/pull/53258

speed up NLL with HybridIdxSetBuf
https://github.com/rust-lang/rust/pull/53383

TokenStream::extend (awesome speedups!)
https://github.com/rust-lang/rust/pull/53304

don't accept non-string literals for the format string in writeln
https://github.com/rust-lang/rust/pull/53256

add the identity function as core::convert::identity (RFC #2306)
https://github.com/rust-lang/rust/pull/47562

don't panic on std::env::vars() when env is null
https://github.com/rust-lang/rust/pull/53208

use target_pointer_width for BACKTRACE_ELF_SIZE
https://github.com/rust-lang/rust/pull/53377

non-naive implementation of VecDeque.append
https://github.com/rust-lang/rust/pull/52553

stabilize use_extern_macros
https://github.com/rust-lang/rust/pull/50911
Crate of the week: wasm-bindgen-futures

This week's crate is wasm-bindgen-futures, a crate to make ECMAScript promises and Rust futures interoperate. Thanks to Vikrant for the suggestion!
Updates from core

Stablize Iterator::find_map
https://github.com/rust-lang/rust/pull/53385

Stabilise raw_identifiers feature
https://github.com/rust-lang/rust/pull/53236

Stabilize 'attr_literals' feature
https://github.com/rust-lang/rust/pull/53044

Exhaustive integer matching
https://github.com/rust-lang/rust/pull/50912

Unify E0243, E0244, E0087, E0088, E0089, and E0090 into E0107
https://github.com/rust-lang/rust/pull/53584

Change Rc::inc_{weak,strong} to better hint optimization to LLVM
https://github.com/rust-lang/rust/pull/53080

add #[panic_handler]; deprecate #[panic_implementation]
https://github.com/rust-lang/rust/pull/53619

wasm: remove --strip-debug argument to LLD
https://github.com/rust-lang/rust/pull/53434

resolve: overhaul #![feature(uniform_paths)] error reporting
https://github.com/rust-lang/rust/pull/53427

visit all attributes for feature collection
https://github.com/rust-lang/rust/pull/53397

{to,from}_{ne,le,be}_bytes for unsigned integer types
https://github.com/rust-lang/rust/pull/53358

fix error for unsized packed struct field
https://github.com/rust-lang/rust/pull/53342

various changes to rustc_on_unimplemented
https://github.com/rust-lang/rust/pull/53295

implement Iterator::size_hint for Elaborator
https://github.com/rust-lang/rust/pull/52858

Fix unsoundness for VecDeque
https://github.com/rust-lang/rust/pull/53571

Use optimized SmallVec implementation
https://github.com/rust-lang/rust/pull/53384

Feature gate where clauses on associated type impls
https://github.com/rust-lang/rust/pull/53235

resolve suggestions should use crate:: when enabled
https://github.com/rust-lang/rust/pull/51456

Allow panicking with string literal messages inside constants
https://github.com/rust-lang/rust/pull/52011

Implement try block expressions
https://github.com/rust-lang/rust/pull/52602

Stabilize a few secondary macro features
https://github.com/rust-lang/rust/pull/53459

Merge IdxSet and IdxSetBuf
https://github.com/rust-lang/rust/pull/53520

syntax: Optimize some literal parsing
https://github.com/rust-lang/rust/pull/53521

Buffer LLVM's object output stream
https://github.com/rust-lang/rust/pull/53524

Fix NLL ICEs
https://github.com/rust-lang/rust/pull/53580

Rename TyVariants and variants
https://github.com/rust-lang/rust/pull/53581

Use SmallVec for SmallCStr
https://github.com/rust-lang/rust/pull/53644
News

Experimental async / await support for Tokio
https://tokio.rs/blog/2018-08-async-await/

Nightly Rust is switching to use LLD (LLVM's new built-in linker) as the default linker for ARM microcontrollers
https://rust-embedded.github.io/blog/2018-08-2x-psa-cortex-m-breakage/

CVE-2018-1000657: buffer overflow in VecDeque::reserve() in Rust 1.3 through 1.21 allows arbitrary code execution
https://www.reddit.com/r/rust/comments/9926jq/cve20181000657_buffer_overflow_in_vecdequereserve/

More on the RLS and a 1.0 release
https://www.ncameron.org/blog/more-on-the-rls-and-a-1-0-release/

Another look at the pinning API
https://boats.gitlab.io/blog/post/rethinking-pin/

Oxidizing sourmash: Python and FFI
https://blog.luizirber.org/2018/08/23/sourmash-rust/

Reading files quickly in Rust
https://boyter.org/posts/reading-files-quickly-in-rust/

Calling C# natively from Rust
https://medium.com/@chyyran/calling-c-natively-from-rust-1f92c506289d

Programming Servo: the makings of a task-queue
https://medium.com/programming-servo/programming-servo-the-makings-of-a-task-queue-b4138cd246ca

Programming Servo: The debug way
https://medium.com/coding-neutrino-blog/programming-servo-the-debug-way-5db01f09b7f4

Easy proc_macro_derives with synstructure
https://llogiq.github.io/2018/08/25/synstruct.html

Two kinds of invariants, proposing rules for unsafe code concerning uninitialized data
https://www.ralfj.de/blog/2018/08/22/two-kinds-of-invariants.html

Next Rust Fest to take place in Rome on 24 and 25 November
https://blog.rustfest.eu/next-stop-rome
Crate of the week: generational-arena

This week's crate is generational-arena, a safe arena allocator that allows deletion without suffering from the ABA problem by using generational indices. Thanks to Willi Kappler for the suggestion!
Updates from core

enable ThinLTO with incremental compilation
https://github.com/rust-lang/rust/pull/53673

build LLVM with ThinLTO enabled (2nd attempt)
https://github.com/rust-lang/rust/pull/53245

update LLVM submodule (mainly WASM improvements)
https://github.com/rust-lang/rust/pull/53611

ADD more Cortex-R targets
https://github.com/rust-lang/rust/pull/53679

change the default linker of the ARM Cortex-M targets to rust-lld
https://github.com/rust-lang/rust/pull/53648

begin preparation for Rust 2018
https://github.com/rust-lang/crates.io/pull/1467

fix promotion stability hole in old borrowck
https://github.com/rust-lang/rust/pull/53699

Miri engine cleanup
https://github.com/rust-lang/rust/pull/53671

Miri refactor: Final round
https://github.com/rust-lang/rust/pull/53779

use partial but correct vtable layout
https://github.com/rust-lang/rust/pull/53757

replace AccumulateVec by SmallVec
https://github.com/rust-lang/rust/pull/53659

HybridIdxSet tweaks
https://github.com/rust-lang/rust/pull/53656

NLL: experiment with inverting liveness
https://github.com/rust-lang/rust/pull/53314

fix NLL ICEs
https://github.com/rust-lang/rust/pull/53580

set rustfix auto-applicability for a few lints
https://github.com/rust-lang/rust/pull/53655

use FxHash{Map, Set} instead of the default Hash{Map, Set}
https://github.com/rust-lang/rust/pull/53472

various small diagnostic and code clean up
https://github.com/rust-lang/rust/pull/53842

save-analysis: record info for the types in where clauses
https://github.com/rust-lang/rust/pull/53838

fix u32 steps_between for 16-bit systems
https://github.com/rust-lang/rust/pull/53755

reduce number of syscalls in rand
https://github.com/rust-lang/rust/pull/53725

reoptimize VecDeque::append
https://github.com/rust-lang/rust/pull/53564

add more const int ops
https://github.com/rust-lang/rust/pull/53697

make std::intrinsics::transmute() const fn
https://github.com/rust-lang/rust/pull/53535

impl PartialEq for TryFromIntError
https://github.com/rust-lang/rust/pull/53476

add --allow-staged to cargo fix
https://github.com/rust-lang/cargo/pull/5943

add rust-gdbgui noscript
https://github.com/rust-lang/rust/pull/53774

set cfg(rustdoc) when rustdoc is running on a crate
https://github.com/rust-lang/rust/pull/53076

rustbuild: distribute libLLVM.so with rustc
https://github.com/rust-lang/rust/pull/53828
Crate of the week: cgroups

This week's crate is cgroups, a native Rust library for managing control groups under Linux. Thanks to yoshuawuyts for the suggestion!
Updates from core

introduce Custom Test Frameworks
https://github.com/rust-lang/rust/pull/53410

ThinLTO: don't keep files open after mmaping them
https://github.com/rust-lang/rust/pull/53962

rustc: prepare the atomics feature for wasm
https://github.com/rust-lang/rust/pull/53878

if- and while-let-chains, take 2 - edition changes
https://github.com/rust-lang/rust/pull/53854

resolve: relax shadowing restrictions on macro-expanded macros
https://github.com/rust-lang/rust/pull/53778

proc_macro::Group::span_open and span_close
https://github.com/rust-lang/rust/pull/53902

fix incorrect outer function type parameter message
https://github.com/rust-lang/rust/pull/53960

fix is_non_exhaustive confusion between structs and enums
https://github.com/rust-lang/rust/pull/53721

rewrite precompute_borrows_out_of_scope for fewer hash table lookups
https://github.com/rust-lang/rust/pull/53942

make loop detector only consider reachable memory
https://github.com/rust-lang/rust/pull/52626

miri engine: make sure we do not copy unsized data
https://github.com/rust-lang/rust/pull/53883

optimize miri checking of integer array/slices
https://github.com/rust-lang/rust/pull/53903

NLL: do not propagate closure requirements if we can prove them locally
https://github.com/rust-lang/rust/pull/53745

NLL: teach SCC about 'static
https://github.com/rust-lang/rust/pull/53327

implement Unpin for Box, Rc, and Arc
https://github.com/rust-lang/rust/pull/53874

add trim_start, trim_end etc.; deprecate trim_left, trim_right, etc. in future
https://github.com/rust-lang/rust/pull/52994

allow to check if sync::Once is already initialized
https://github.com/rust-lang/rust/pull/53027

stabilize #[panic_handler]
https://github.com/rust-lang/rust/pull/51366

rustdoc: show trait impl docs
https://github.com/rust-lang/rust/pull/51885

rustbuild: tweak LLVM distribution layout
https://github.com/rust-lang/rust/pull/53955
News

ripgrep 0.10.0 released (PCRE2 and multi-line support).
https://github.com/BurntSushi/ripgrep/releases/tag/0.10.0

rustfmt, compiled to wasm, in a webpage.
https://alexcrichton.github.io/rustfmt-wasm/

Rust faster – SIMD edition.
https://llogiq.github.io/2018/09/06/fast.html

2019 Strategy for rustc and the RLS.
https://internals.rust-lang.org/t/2019-strategy-for-rustc-and-the-rls/8361

Adventures in Rust: Futures and Tokio.
http://bryangilbert.com/post/code/rust/adventures-futures-tokio-rust/

From Rust to beyond, episode 4: The C galaxy. An end-to-end example, includes cbindgen and clang.
https://mnt.io/2018/09/11/from-rust-to-beyond-the-c-galaxy/

Parallelizing PNG, part 5: choosing Rust for mtpng.
https://brionv.com/log/2018/09/09/parallelizing-png-part-5-choosing-rust-for-mtpng/

Tower Web - Expanding the middleware stack.
https://medium.com/@carllerche/tower-web-expanding-the-middleware-stack-f9bf55bfa109

Beware the rust cache on Travis (or why you should use it with care).
https://levans.fr/rust_travis_cache.html

RustFest Rome CFP is open and supporter tickets available.
https://blog.rustfest.eu/this-week-in-rustfest-0-cfp-and-tickets

Videos from RustConf 2018.
https://www.youtube.com/playlist?list=PL85XCvVPmGQi3tivxDDF1hrT9qr5hdMBZ

Rust Embedded WG newsletter 11.
https://rust-embedded.github.io/blog/2018-09-09-newsletter-11/
Crate of the week: cargo-src

This week's crate is cargo-src, a Rust source browser with syntax highlighting, jump to def, smart search and much more. Thanks to mark-i-m for the suggestion!
Framework-agnostic routing library: rouste
Updates from core

temporarily prohibit proc macro attributes placed after derives
https://github.com/rust-lang/rust/pull/54277

add target thumbv7a-pc-windows-msvc
https://github.com/rust-lang/rust/pull/53621

PowerPC: fix the calling convention for i1 arguments on PPC32
https://github.com/rust-lang/llvm/pull/127

allow for opting out of ThinLTO and clean up LTO related cli flag handling
https://github.com/rust-lang/rust/pull/53950

resolve: allow only core, std, meta and --extern in Rust 2018 paths
https://github.com/rust-lang/rust/pull/54116

resolve: do not error on access to proc macros imported with #[macro_use]
https://github.com/rust-lang/rust/pull/53461

add inspection and setter methods to proc_macro::Diagnostic
https://github.com/rust-lang/rust/pull/52896

support anoscription for patterns in NLL
https://github.com/rust-lang/rust/pull/53873

allow named lifetimes in async functions
https://github.com/rust-lang/rust/pull/54000

suggest && and || instead of 'and' and 'or'
https://github.com/rust-lang/rust/pull/54181

use structured suggestion for "missing mut" label
https://github.com/rust-lang/rust/pull/54157

de-overlap the lifetimes of flow_inits and flow_{un,ever_}inits
https://github.com/rust-lang/rust/pull/54213

don't compute padding of braces unless they are unmatched
https://github.com/rust-lang/rust/pull/54092

don't suggest extra clone when converting cloned slice to Vec
https://github.com/rust-lang/rust/pull/54080

reexport CheckLintNameResult
https://github.com/rust-lang/rust/pull/54106

miri: keep around some information for dead allocations
https://github.com/rust-lang/rust/pull/54254

miri loop detector hashing
https://github.com/rust-lang/rust/pull/54076

fix some uses of pointer intrinsics with invalid pointers
https://github.com/rust-lang/rust/pull/53804

first step towards u128 instead of Const in PatternKind::Range
https://github.com/rust-lang/rust/pull/51159

stabilize outlives requirements
https://github.com/rust-lang/rust/pull/53793

stabilize #[used]
https://github.com/rust-lang/rust/pull/51363

stabilize slice_align_to
https://github.com/rust-lang/rust/pull/53754

implement tuple_struct_self_ctor (RFC #2302)
https://github.com/rust-lang/rust/pull/53751

implement map_or_else for Result<T, E>
https://github.com/rust-lang/rust/pull/53777

add a implementation of From for converting &'a Option<T> into Option<&'a T>
https://github.com/rust-lang/rust/pull/53218

cargo: add empty ctrlc handler on Windows
https://github.com/rust-lang/cargo/pull/6004
News

🎈🎉 Announcing Rust 1.29. 🎉🎈
https://blog.rust-lang.org/2018/09/13/Rust-1.29.html

Ripgrep is available as a package in Ubuntu 18.10.
https://github.com/BurntSushi/ripgrep/pull/1054

WebRender is now enabled by default in Firefox Nightly on Windows 10 with Nvidia GPUs.
https://groups.google.com/forum/#!topic/mozilla.dev.platform/x_sFbDgQJP0

RustConf 2018 closing keynote (blog post).
https://kyren.github.io/2018/09/14/rustconf-talk.html

Rising Tide: building a modular web framework in the open.
https://rust-lang-nursery.github.io/wg-net/2018/09/11/tide.html

You can’t “turn off the borrow checker” in Rust.
https://words.steveklabnik.com/you-can-t-turn-off-the-borrow-checker-in-rust

Measuring SmallVec footprint with Smallvectune.
https://llogiq.github.io/2018/09/13/smallvec.html

How we organize a complex Rust codebase.
https://blog.getseq.net/rust-at-datalust-how-we-organize-a-complex-rust-codebase/

Desktop apps with Rust (Electorn + WebAssembly).
https://speice.io/2018/09/isomorphic-apps.html

Postgres over TLS with the postgres crate, r2d2_postgres and openssl.
https://matthewkmayer.github.io/blag/public/post/postgres-tls/

The Networking WG newsletter 1.
https://internals.rust-lang.org/t/the-networking-working-group-newsletter-01/8391
Crate of the week: mtpng

This week's crate is mtpng, a parallelized PNG encoder. Thanks to Willi Kappler for the suggestion!