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
Benchmarking gfx-portability versus MoltenVK and OpenGL with Dota2 on Mac

https://gfx-rs.github.io/2018/08/10/dota2-macos-performance.html
DX11 backend for gfx-rs - GSoC 2018 report

https://gfx-rs.github.io/2018/08/14/gsoc.html
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