about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2022-05-27Fix `x dist --stage 1 src/tools/rust-analyzer`Joshua Nelson-0/+3
Previously, this would break because the submodule wasn't checked out.
2022-05-26Auto merge of #97046 - conradludgate:faster-ascii-case-conv-path, r=thomccbors-5/+83
improve case conversion happy path Someone shared the source code for [Go's string case conversion](https://github.com/golang/go/blob/19156a54741d4f353c9e8e0860197ca95a6ee6ca/src/strings/strings.go#L558-L616). It features a hot path for ascii-only strings (although I assume for reasons specific to go, they've opted for a read safe hot loop). I've borrowed these ideas and also kept our existing code to provide a fast path + seamless utf-8 correct path fallback. (Naive) Benchmarks can be found here https://github.com/conradludgate/case-conv For the cases where non-ascii is found near the start, the performance of this algorithm does fall back to original speeds and has not had any measurable speed loss
2022-05-26improve case conversion happy pathConrad Ludgate-5/+83
2022-05-26Auto merge of #97168 - SparrowLii:accesses, r=cjgillotbors-44/+66
omit `record_accesses` function when collecting `MonoItem`s This PR fixes the FIXME in the impl of `record_accesses` function. [Edit] We can call `instantiation_mode` when push the `MonoItem` into `neighbors`. This avoids extra local variables `accesses: SmallVec<[_; 128]>`
2022-05-26Auto merge of #96742 - m-ou-se:bsd-no-ancillary, r=joshtriplettbors-173/+33
Disable unix::net::ancillary on BSD. See https://github.com/rust-lang/rust/issues/76915#issuecomment-1118954474
2022-05-26Auto merge of #97410 - jyn514:tool-std-features, r=Mark-Simulacrumbors-1/+6
Only allow `compiletest` to use `feature(test)`, not any other feature Using language features occasionally causes issues when using nightly to bootstrap, rather than beta. See #59264 for additional context.
2022-05-25Disable unix::net::ancillary on BSD.Mara Bos-173/+33
2022-05-26Auto merge of #97369 - tmiasko:codgen-ssa-atomic-ordering, r=michaelwoeristerbors-32/+15
rustc_codegen_ssa: cleanup `AtomicOrdering` * Remove unused `NotAtomic` ordering. * Rename `Monotonic` to `Relaxed` - a Rust specific name. * Derive copy and clone.
2022-05-26call `instantiation_mode` when pushing a new mono_itemSparrowLii-44/+66
2022-05-25Only allow `compiletest` to use `feature(test)`, not any other featureJoshua Nelson-1/+6
Using language features occasionally causes issues when using nightly to bootstrap, rather than beta. See #59264 for additional context.
2022-05-25Auto merge of #97409 - GuillaumeGomez:rollup-808v9ge, r=GuillaumeGomezbors-169/+150
Rollup of 4 pull requests Successful merges: - #97317 (Allow to click on setting text) - #97375 (Simplify implementation of `-Z gcc-ld`) - #97394 (Add more eslint rules) - #97407 (Update books) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-05-26Rollup merge of #97407 - ehuss:update-books, r=ehussGuillaume Gomez-0/+0
Update books ## reference 6 commits in 8e36971959ff238b5aa2575fbc7a2e09e1313e82..b74825d8f88b685e239ade00f00de68ba4cd63d4 2022-05-09 17:20:59 -0700 to 2022-05-20 14:30:30 -0700 - Inline assembly: Clarify references to quoted regs (rust-lang/reference#1191) - Add tile registers to inline-assembly documentation (rust-lang/reference#1220) - Upper bound on hashes in raw string literals (rust-lang/reference#1180) - Remove footnote on warning about lifetime shadowing labels. - Makes explanation for Spans in "Procedural Macros" clearer (rust-lang/reference#1219) - Update "Match Expressions" to remove 'cold' (rust-lang/reference#1216) ## book 18 commits in d9415b7cbfcb4b24062683f429bd0ff535396362..b4dd5f00b87190ad5ef42cbc2a88a783c6ae57ef 2022-05-09 09:10:44 -0400 to 2022-05-24 21:37:06 -0400 - Snapshot of appendices for nostarch - Update rust-analyzer URLs and make links less repetitive - Correct byte string literal type. Fixes rust-lang/book#2631. - Fix verb agreement. Fixes rust-lang/book#3176 - Propagate ch19 edits to src - Edits to chapter 19 from nostarch - Propagate ch18 edits to src - Edits to ch18 from nostarch - Propagate tech review edits to src ch5 - Responses to chapter 5 tech review - Ch5 after tech review - Merge branch 'ch7-edits' - fix: mdBook authors - Propagating ch17 edits to src - Edits from nostarch for ch17 - Fix rust-lang/book#3152 - Wrong character used - & is not valid inside image alt text - Merge branch 'ch20' ## rust-by-example 2 commits in e9f93cfcf410bc092c9107b8a41a82f144c761f2..2ed26865e8c29ef939dc913a97bd321cadd72a9a 2022-05-08 18:24:06 -0300 to 2022-05-18 17:23:47 -0300 - Rework cpuid asm example. (rust-lang/rust-by-example#1542) - chore: better description for eprint macro (rust-lang/rust-by-example#1541) ## rustc-dev-guide 11 commits in 0c02acdb6f48f03907a02ea8e537c3272b4fde9f..554c00e4805df7f7bffac7db408437d62d6dfb9a 2022-05-10 09:45:31 -0300 to 2022-05-24 17:15:35 -0700 - Cleanup rustdoc-internals - Fix some wording on the "Incremental Compilation In Detail" page - Exclude `tomlee.co` from link-checking (rust-lang/rustc-dev-guide#1356) - Add note about patching dependencies and warnings. (rust-lang/rustc-dev-guide#1354) - make sentence more simple (rust-lang/rustc-dev-guide#1353) - Update some links and docs (rust-lang/rustc-dev-guide#1340) - Replace a broken YouTube link (rust-lang/rustc-dev-guide#1295) - Edit the "Compiler Source Code" chapter (rust-lang/rustc-dev-guide#1307) - Add docs for logging of queries. (rust-lang/rustc-dev-guide#1350) - Fix configuration names for vscode/r-a (rust-lang/rustc-dev-guide#1352) - Update docs for deprecated attribute (rust-lang/rustc-dev-guide#1338)
2022-05-26Rollup merge of #97394 - GuillaumeGomez:more-eslint-rules, r=notriddleGuillaume Gomez-7/+14
Add more eslint rules This PR adds more eslint rules. Here are the explanations for each of them: * [space-infix-ops](https://eslint.org/docs/rules/space-infix-ops) * [space-before-function-paren](https://eslint.org/docs/rules/space-before-function-paren) * [space-before-blocks](https://eslint.org/docs/rules/space-before-blocks) * [comma-dangle](https://eslint.org/docs/rules/comma-dangle) * [comma-style](https://eslint.org/docs/rules/comma-style) * [max-len](https://eslint.org/docs/rules/max-len) * [eol-last](https://eslint.org/docs/rules/eol-last) r? `@notriddle`
2022-05-26Rollup merge of #97375 - petrochenkov:zgccld, r=bjorn3Guillaume Gomez-122/+71
Simplify implementation of `-Z gcc-ld` - The logic is now unified for all targets (wasm targets should also be supported now) - Additional "symlink" files like `ld64` are eliminated - lld-wrapper is used for propagating the correct lld flavor - Cleanup "unwrap or exit" logic in lld-wrapper cc https://github.com/rust-lang/rust/issues/97352 r? `@bjorn3`
2022-05-26Rollup merge of #97317 - GuillaumeGomez:gui-settings-text-click, r=jshaGuillaume Gomez-40/+65
Allow to click on setting text You can test it [here](https://rustdoc.crud.net/imperio/gui-settings-text-click/doc/foo/index.html). This PR allows to click on the text alongside the toggle to change it. r? `@jsha`
2022-05-25Simplify implementation of `-Z gcc-ld`Vadim Petrochenkov-122/+71
- The logic is now unified for all targets (wasm targets should also be supported now) - Additional "symlink" files like `ld64` are eliminated - lld-wrapper is used for propagating the correct lld flavor - Cleanup "unwrap or exit" logic in lld-wrapper
2022-05-25Auto merge of #97403 - arlosi:update-cargo, r=ehussbors-5/+5
Update cargo 10 commits in a4c1cd0eb6b18082a7e693f5a665548fe1534be4..39ad1039d9e3e1746177bf5d134af4c164f95528 2022-05-20 00:55:25 +0000 to 2022-05-25 00:50:02 +0000 * doc: discuss build script instruction order (rust-lang/cargo#10600) * Require http-registry URLs to end with a '/' (rust-lang/cargo#10698) * No printing executable names when running tests and benchmarks with json message format (rust-lang/cargo#10691) * Restore proper error for crate not in local reg (rust-lang/cargo#10683) * Update libcurl (rust-lang/cargo#10696) * Fixed small typos (rust-lang/cargo#10693) * fix bugs with `workspace` key and `update_toml` (rust-lang/cargo#10685) * Bump to 0.64.0, update changelog (rust-lang/cargo#10687) * List C compiler as a build dependency in README (rust-lang/cargo#10678) * Add unstable `rustc-check-cfg` build script output (rust-lang/cargo#10539) r? `@ehuss`
2022-05-25Update booksEric Huss-0/+0
2022-05-25Update cargoArlo Siemsen-5/+5
2022-05-25Auto merge of #97401 - Dylan-DPC:rollup-fh9e61o, r=Dylan-DPCbors-42/+164
Rollup of 5 pull requests Successful merges: - #97302 (Do writeback of Closure params before visiting the parent expression) - #97328 (rustc: Fix ICE in native library error reporting) - #97351 (Output correct type responsible for structural match violation) - #97398 (Add regression test for #82830) - #97400 (Fix a typo on Struct `Substructure`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-05-25Rollup merge of #97400 - JohnTitor:typo-fix-substructure, r=cjgillotDylan DPC-1/+1
Fix a typo on Struct `Substructure`
2022-05-25Rollup merge of #97398 - JohnTitor:issue-82830, r=compiler-errorsDylan DPC-0/+31
Add regression test for #82830 Closes #82830 r? `@compiler-errors`
2022-05-25Rollup merge of #97351 - ↵Dylan DPC-30/+73
b-naber:adt-const-params-structural-match-violation, r=michaelwoerister Output correct type responsible for structural match violation Previously we included the outermost type that caused a structural match violation in the error message and stated that that type must be annotated with `#[derive(Eq, PartialEq)]` even if it already had that annotation. This PR outputs the correct type in the error message. Fixes https://github.com/rust-lang/rust/issues/97278
2022-05-25Rollup merge of #97328 - petrochenkov:nativice, r=michaelwoeristerDylan DPC-4/+16
rustc: Fix ICE in native library error reporting Fixes https://github.com/rust-lang/rust/issues/97299
2022-05-25Rollup merge of #97302 - compiler-errors:writeback-ascending, r=cjgillotDylan DPC-7/+43
Do writeback of Closure params before visiting the parent expression This means that given the expression: ``` let x = |a: Vec<_>| {}; ``` We will visit the HIR node for `a` before `x`, and report the ambiguity on the former instead of the latter. This also moves writeback for struct field ids and const blocks before, but the ordering of this and walking the expr doesn't seem to matter.
2022-05-25Auto merge of #94954 - SimonSapin:null-thin3, r=yaahcbors-1/+59
Extend ptr::null and null_mut to all thin (including extern) types Fixes https://github.com/rust-lang/rust/issues/93959 This change was accepted in https://rust-lang.github.io/rfcs/2580-ptr-meta.html Note that this changes the signature of **stable** functions. The change should be backward-compatible, but it is **insta-stable** since it cannot (easily, at all?) be made available only through a `#![feature(…)]` opt-in. The RFC also proposed the same change for `NonNull::dangling`, which makes sense it terms of its signature but not in terms of its implementation. `dangling` uses `align_of()` as an address. But what `align_of()` should be for extern types or whether it should be allowed at all remains an open question. This commit depends on https://github.com/rust-lang/rust/pull/93977, which is not yet part of the bootstrap compiler. So `#[cfg]` is used to only apply the change in stage 1+. As far a I know bounds cannot be made conditional with `#[cfg]`, so the entire functions are duplicated. This is unfortunate but temporary. Since this duplication makes it less obvious in the diff, the new definitions differ in: * More permissive bounds (`Thin` instead of implied `Sized`) * Different implementation * Having `rustc_allow_const_fn_unstable(const_fn_trait_bound)` * Having `rustc_allow_const_fn_unstable(ptr_metadata)`
2022-05-25Fix a typo on Struct `Substructure`Yuki Okushi-1/+1
2022-05-25Add regression test for #82830Yuki Okushi-0/+31
2022-05-25Add new eslint rule "eol-last"Guillaume Gomez-0/+1
2022-05-25Add new eslint rule "max-len"Guillaume Gomez-0/+1
2022-05-25Add new eslint rule "comma-style"Guillaume Gomez-0/+1
2022-05-25Add new eslint rule "comma-dangle"Guillaume Gomez-0/+1
2022-05-25Add new eslint rule "space-before-blocks"Guillaume Gomez-0/+1
2022-05-25Add new eslint rule "space-before-function-paren"Guillaume Gomez-7/+8
2022-05-25Add eslint rule "space-infix-ops"Guillaume Gomez-0/+1
2022-05-25Auto merge of #97388 - Dylan-DPC:rollup-tfuc4tf, r=Dylan-DPCbors-113/+678
Rollup of 5 pull requests Successful merges: - #95953 (Modify MIR building to drop repeat expressions with length zero) - #96913 (RFC3239: Implement `cfg(target)` - Part 2) - #97233 ([RFC 2011] Library code) - #97370 (Minor improvement on else-no-if diagnostic) - #97384 (Fix metadata stats.) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-05-25Rollup merge of #97384 - nnethercote:fix-metadata-stats, r=bjorn3Dylan DPC-23/+69
Fix metadata stats. This commit: - Counts some things that weren't being counted previously, and adds an assertion that ensure everything is counted. - Reorders things so the `eprintln`s order matches the code order. - Adds percentages, and makes clear that the zero bytes count is orthogonal to the other measurements. Example of the new output: ``` 55463779 metadata bytes, of which 18054531 bytes (32.6%) are zero preamble: 30 bytes ( 0.0%) dep: 0 bytes ( 0.0%) lib feature: 17458 bytes ( 0.0%) lang item: 337 bytes ( 0.0%) diagnostic item: 1788 bytes ( 0.0%) native lib: 0 bytes ( 0.0%) foreign modules: 5113 bytes ( 0.0%) def-path table: 720180 bytes ( 1.3%) traits: 359 bytes ( 0.0%) impls: 64624 bytes ( 0.1%) incoherent_impls: 130 bytes ( 0.0%) mir: 16137354 bytes (29.1%) item: 23773099 bytes (42.9%) interpret_alloc_index: 599 bytes ( 0.0%) proc-macro-data: 0 bytes ( 0.0%) tables: 10081135 bytes (18.2%) debugger visualizers: 0 bytes ( 0.0%) exported symbols: 5666 bytes ( 0.0%) hygiene: 1539390 bytes ( 2.8%) def-path hashes: 2752564 bytes ( 5.0%) source_map: 363540 bytes ( 0.7%) final: 413 bytes ( 0.0%) ``` r? `@bjorn3`
2022-05-25Rollup merge of #97370 - compiler-errors:else-no-if-2, r=Dylan-DPCDylan DPC-18/+3
Minor improvement on else-no-if diagnostic Don't suggest wrapping in block since it's highly likely to be a missing `if` after `else`. Also rework message a bit (open to further suggestions). cc: https://github.com/rust-lang/rust/pull/97298#discussion_r880933431 r? `@estebank`
2022-05-25Rollup merge of #97233 - c410-f3r:assert-lib, r=scottmcmDylan DPC-0/+149
[RFC 2011] Library code CC https://github.com/rust-lang/rust/pull/96496 Based on https://github.com/dtolnay/case-studies/tree/master/autoref-specialization. Basically creates two traits with the same method name. One trait is generic over any `T` and the other is specialized to any `T: Printable`. The compiler will then call the corresponding trait method through auto reference. ```rust fn main() { let mut a = Capture::new(); let mut b = Capture::new(); (&Wrapper(&1i32)).try_capture(&mut a); // `try_capture` from `TryCapturePrintable` (&Wrapper(&vec![1i32])).try_capture(&mut b); // `try_capture` from `TryCaptureGeneric` assert_eq!(format!("{:?}", a), "1"); assert_eq!(format!("{:?}", b), "N/A"); } ``` r? `@scottmcm`
2022-05-25Rollup merge of #96913 - Urgau:rfc3239-part2, r=petrochenkovDylan DPC-67/+247
RFC3239: Implement `cfg(target)` - Part 2 This pull-request implements the compact `cfg(target(..))` part of [RFC 3239](https://github.com/rust-lang/rust/issues/96901). I recommend reviewing this PR on a per commit basics, because of some moving parts. cc `@GuillaumeGomez` r? `@petrochenkov`
2022-05-25Rollup merge of #95953 - JakobDegen:repeat-leak, r=oli-obkDylan DPC-5/+210
Modify MIR building to drop repeat expressions with length zero Closes #74836 . Previously, when a user wrote `[foo; 0]` we used to simply leak `foo`. The goal is to fix that. This PR changes MIR building to make `[foo; 0]` equivalent to `{ drop(foo); [] }` in all cases. Of course, this is a breaking change (see below). A crater run did not indicate any regressions though, and given that the previous behavior was almost definitely not what any user wanted, it seems unlikely that anyone was relying on this. Note that const generics are in general unaffected by this. Inserting the extra `drop` is only meaningful/necessary when `foo` is of a non-`Copy` type, and array repeat expressions with const generic repetition count must always be `Copy`. Besides the obvious change to behavior associated with the additional drop, there are three categories of examples where this also changes observable behavior. In all of these cases, the new behavior is consistent with what you would get by replacing `[foo; 0]` with `{ drop(foo); [] }`. As such, none of these give the user new powers to express more things. **No longer allowed in const (breaking)**: ```rust const _: [String; 0] = [String::new(); 0]; ``` This compiles on stable today. Because we now introduce the drop of `String`, this no longer compiles as `String` may not be dropped in a const context. **Reduced dataflow (non-breaking)**: ```rust let mut x: i32 = 0; let r = &x; let a = [r; 0]; x = 5; let _b = a; ``` Borrowck rejects this code on stable because it believes there is dataflow between `a` and `r`, and so the lifetime of `r` has to extend to the last statement. This change removes the dataflow and the above code is allowed to compile. **More const promotion (non-breaking)**: ```rust let _v: &'static [String; 0] = &[String::new(); 0]; ``` This does not compile today because `String` having drop glue keeps it from being const promoted (despite that drop glue never being executed). After this change, this is allowed to compile. ### Alternatives A previous attempt at this tried to reduce breakage by various tricks. This is still a possibility, but given that crater showed no regressions it seems unclear why we would want to introduce this complexity. Disallowing `[foo; 0]` completely is also an option, but obviously this is more of a breaking change. I do not know how often this is actually used though. r? `@oli-obk`
2022-05-25Auto merge of #97345 - lcnr:fast_reject, r=nnethercotebors-66/+252
add a deep fast_reject routine continues the work on #97136. r? `@nnethercote` Actually agree with you on the match structure :laughing: let's see how that impacted perf :sweat_smile:
2022-05-25rustc_codegen_ssa: derive copy and clone for various enumsTomasz Miąsko-19/+7
2022-05-25rustc_codegen_ssa: cleanup `AtomicOrdering`Tomasz Miąsko-14/+9
* Remove unused `NotAtomic` ordering. * Rename `Monotonic` to `Relaxed` - a Rust specific name.
2022-05-25Fix metadata stats.Nicholas Nethercote-23/+69
This commit: - Counts some things that weren't being counted previously, and adds an assertion that ensure everything is counted. - Reorders things so the `eprintln`s order matches the code order. - Adds percentages, and makes clear that the zero bytes count is orthogonal to the other measurements. Example of the new output: ``` 55463779 metadata bytes, of which 18054531 bytes (32.6%) are zero preamble: 30 bytes ( 0.0%) dep: 0 bytes ( 0.0%) lib feature: 17458 bytes ( 0.0%) lang item: 337 bytes ( 0.0%) diagnostic item: 1788 bytes ( 0.0%) native lib: 0 bytes ( 0.0%) foreign modules: 5113 bytes ( 0.0%) def-path table: 720180 bytes ( 1.3%) traits: 359 bytes ( 0.0%) impls: 64624 bytes ( 0.1%) incoherent_impls: 130 bytes ( 0.0%) mir: 16137354 bytes (29.1%) item: 23773099 bytes (42.9%) interpret_alloc_index: 599 bytes ( 0.0%) proc-macro-data: 0 bytes ( 0.0%) tables: 10081135 bytes (18.2%) debugger visualizers: 0 bytes ( 0.0%) exported symbols: 5666 bytes ( 0.0%) hygiene: 1539390 bytes ( 2.8%) def-path hashes: 2752564 bytes ( 5.0%) source_map: 363540 bytes ( 0.7%) final: 413 bytes ( 0.0%) ```
2022-05-25Auto merge of #97382 - Dylan-DPC:rollup-2t4ov4z, r=Dylan-DPCbors-180/+401
Rollup of 5 pull requests Successful merges: - #93604 (Make llvm-libunwind a per-target option) - #97026 (Change orderings of `Debug` for the Atomic types to `Relaxed`.) - #97105 (Add tests for lint on type dependent on consts) - #97323 (Introduce stricter checks for might_permit_raw_init under a debug flag ) - #97379 (Add aliases for `current_dir`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-05-25move fast reject test out of `SelectionContext::match_impl`.lcnr-11/+12
`match_impl` has two call sites. For one of them (within `rematch_impl`) the fast reject test isn't necessary, because any rejection would represent a compiler bug. This commit moves the fast reject test to the other `match_impl` call site, in `assemble_candidates_from_impls`. This lets us move the fast reject test outside the `probe` call in that function. This avoids the taking of useless snapshots when the fast reject test succeeds, which gives a performance win when compiling the `bitmaps` and `nalgebra` crates. Co-authored-by: name <n.nethercote@gmail.com>
2022-05-25add a deep fast_reject routinelcnr-55/+240
2022-05-25Rollup merge of #97379 - ear7h:master, r=thomccDylan DPC-0/+3
Add aliases for `current_dir` Aliases were added for the equivalent C/C++ APIs for POSIX and Windows. Also, I added one for `pwd` which users may be more familiar with, from the command line.
2022-05-25Rollup merge of #97323 - 5225225:strict_init_checks, r=oli-obkDylan DPC-26/+116
Introduce stricter checks for might_permit_raw_init under a debug flag This is intended to be a version of the strict checks tried out in #79296, but also checking number validity (under the assumption that `let _ = std::mem::uninitialized::<u32>()` is UB, which seems to be what https://github.com/rust-lang/unsafe-code-guidelines/issues/71 is leaning towards.)