nora

@Noratrieb

Joined on Oct 6, 2022

  • Feature Name: none Start Date: (fill me in with today's date, YYYY-MM-DD) RFC PR: rust-lang/rfcs#0000 Rust Issue: rust-lang/rust#0000 Demote target i686-pc-windows-gnu from Tier 1 to Tier 2 (with host tools) to better reflect its current maintenance and usage status. Motivation Background Rust has supported Windows ever since before 1.0, with two different flavors of Windows targets: MSVC-based and GNU-based.
     Like  Bookmark
  • A rustc tool links against a rustc with #![feature(rustc_private)]. The way this is implemented is that the compiling rustc has libdir = $sysroot/lib/rustlib/$target/lib in the crate search path, and will pick up rustc there. In dist, the compiler crates will only end up there when the rustc-dev component is installed, as it contains all the compiler rlibs. In dist, this is super simple. rustc has its own (or its friend when cross-compiling) rlibs in $libdir and will just pick them up from there when you do extern crate rustc_driver. Bootstrap is harder. The problem here is stage 1. When a tool links against a librustc, it is critical that the ABI of the tool and the librustc match. This is the case for stage2/dist compiling a tool against itself, as the ABI stage2 was compiled with is the same ABI as the one stage2 compiles. So stage2 can link tools against itself just fine.
     Like  Bookmark
  • as is very complicated and do a lot of different things. See https://doc.rust-lang.org/stable/reference/expressions/operator-expr.html#type-cast-expressions. This doc goes through the ways in which as casts are implemented from source (where they all look the same) to codegen (where they are all resolved). The motivation is finding the proper way to fix https://github.com/rust-lang/rust/pull/113262, possibly revealing ways in which casts could be improved and made less confusing. as casts are parsed into the AST, where they are of course still represented as a simple ExprKind::Cast. HIR is the same, as as is dependent on the types. Typeck The first interesting interaction is typeck. Typeck is responsible for ensuring that all casts are well-formed. This happens in the cast module: https://github.com/rust-lang/rust/blob/e4cd1610067501fa4d347eba7b18f77137dbbf48/compiler/rustc_hir_typeck/src/cast.rs#L3.
     Like  Bookmark
  • remove_duplicate_unreachable_blocks FxIndexSet<BasicBlock> regex Full Opt 5790 counts ( 1) 4906 (84.7%, 84.7%): 0 ( 2) 737 (12.7%, 97.5%): 1 ( 3) 43 ( 0.7%, 98.2%): 4 ( 4) 40 ( 0.7%, 98.9%): 2 ( 5) 21 ( 0.4%, 99.3%): 3 ( 6) 15 ( 0.3%, 99.5%): 5
     Like  Bookmark
  • auto_traits ... complicated, but will probably never be stabilized. box_patterns We currently have them because they are convenient. I don't think they are intended for stabilization and are expected to be subsumed by general deref patterns. box_syntax All usage has been removed from the compiler and standard library. #[rustc_box] Box::new() is the new equivalent. We should throw it out!
     Like  Bookmark
  • Just a simple typo macro_rules! uwu { (a a a a) => {}; } uwu!(a a b a); Addressed by https://github.com/rust-lang/rust/pull/103439 Implicit token groupings breaking things
     Like  Bookmark
  • struct X(Option<()>, Option<()>); let x: Option<Result<X, ()>>; match x { Some(Ok(a)) if let Some(b) = a.0 && let Some(b) = a.1 => "many somes", Some(Err(a)) => "some", None => "none" } let tmp_x = x;
     Like  Bookmark