about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2024-12-19add warning explaining the limitations of the native code modeRalf Jung-10/+88
2024-12-19Auto merge of #134492 - jhpratt:rollup-elpdwd9, r=jhprattbors-0/+0
Rollup of 8 pull requests Successful merges: - #132056 (Stabilize `#[diagnostic::do_not_recommend]`) - #133643 (-Znext-solver: modify candidate preference rules) - #134388 (Update books) - #134418 (Advent of `tests/ui` (misc cleanups and improvements) [3/N]) - #134473 (chore: fix some typos) - #134481 (Point at lint name instead of whole attr for gated lints) - #134484 (Add nnethercote to the `triagebot.toml` vacation list.) - #134490 (Fix typo in ptr/mod.rs) r? `@ghost` `@rustbot` modify labels: rollup
2024-12-19Speed up `Parser::expected_token_types`.Nicholas Nethercote-16/+17
The parser pushes a `TokenType` to `Parser::expected_token_types` on every call to the various `check`/`eat` methods, and clears it on every call to `bump`. Some of those `TokenType` values are full tokens that require cloning and dropping. This is a *lot* of work for something that is only used in error messages and it accounts for a significant fraction of parsing execution time. This commit overhauls `TokenType` so that `Parser::expected_token_types` can be implemented as a bitset. This requires changing `TokenType` to a C-style parameterless enum, and adding `TokenTypeSet` which uses a `u128` for the bits. (The new `TokenType` has 105 variants.) The new types `ExpTokenPair` and `ExpKeywordPair` are now arguments to the `check`/`eat` methods. This is for maximum speed. The elements in the pairs are always statically known; e.g. a `token::BinOp(token::Star)` is always paired with a `TokenType::Star`. So we now compute `TokenType`s in advance and pass them in to `check`/`eat` rather than the current approach of constructing them on insertion into `expected_token_types`. Values of these pair types can be produced by the new `exp!` macro, which is used at every `check`/`eat` call site. The macro is for convenience, allowing any pair to be generated from a single identifier. The ident/keyword filtering in `expected_one_of_not_found` is no longer necessary. It was there to account for some sloppiness in `TokenKind`/`TokenType` comparisons. The existing `TokenType` is moved to a new file `token_type.rs`, and all its new infrastructure is added to that file. There is more boilerplate code than I would like, but I can't see how to make it shorter.
2024-12-18Rollup merge of #134388 - rustbot:docs-update, r=ehussJacob Pratt-0/+0
Update books ## rust-lang/book 21 commits in 9900d976bbfecf4e8124da54351a9ad85ee3c7f3..ad2011d3bcad9f152d034faf7635c22506839d58 2024-12-16 16:11:34 UTC to 2024-12-05 19:19:24 UTC - Ch. 10: clarify note about compiler errors and `'static` (rust-lang/book#4164) - Introduce `let`-`else` statement (rust-lang/book#3702) - Fix misleading explanation of comma in `$(),*` (rust-lang/book#3800) - ch18-03: Matching Named Variables: mention `if let`/`while let` (rust-lang/book#3110) - Ch. 4: Rephrase/clarify paragraph on reference scope (rust-lang/book#3688) - Simplify note about functions in ch13-01-closures.md (rust-lang/book#3699) - fix: make the reason more understandable (rust-lang/book#4074) - Fixed grammatical error in the comment on line 22 (rust-lang/book#3180) - ch17-02: Monomorphization applies to generics in general (rust-lang/book#3367) - Ch. 21: Use `Vec::drain` to teach alternatives to `Option` (rust-lang/book#4159) - fix(typo): correct punctuation in ch15-06-reference-cycles.md (rust-lang/book#4155) - Ch. 20: show both `impl Fn` and `Box<dyn Fn>` (rust-lang/book#4152) - Add `use super::*;` to unit-test examples. (rust-lang/book#4151) - Remove emphasis on four-space indents (rust-lang/book#4150) - Fix `.git-blame-ignore-revs` file (rust-lang/book#4149) - Rust 2024: distinguish `unsafe fn` vs. `unsafe` blocks (rust-lang/book#4148) - Update README.md typo (rust-lang/book#4146) - Ch. 15.5: account for improved error message (rust-lang/book#4142) - Document use of rustfmt and dprint for formatting (rust-lang/book#4138) - tools: fix nostarch build reference to mdbook-trpl (rust-lang/book#4137) - Revise sentence to not refer to two subjects as it (rust-lang/book#4136) ## edition-guide 6 commits in 128669297c8a7fdf771042eaec18b8adfaeaf0cd..bc4ce51e1d4dacb9350a92e95f6159a42de2f8c6 2024-12-03 22:02:43 +0000 to 2024-12-18 05:34:59 +0000 - Add chapter for 2024 match ergonomics reservations (rust-lang/edition-guide#349) - Re-title "Additions to the prelude" (rust-lang/edition-guide#348) - Show tail expression temporary example that fails in 2024 (rust-lang/edition-guide#345) - Add more triagebot labeling support (rust-lang/edition-guide#346) - 2024: Assignment operator RHS indentation (rust-lang/edition-guide#341) - 2024: Add chapter on single-line `where` clauses (rust-lang/edition-guide#340) ## rust-lang/nomicon 1 commits in 0674321898cd454764ab69702819d39a919afd68..97e84a38c94bf9362b11284c20b2cb4adaa1e868 2024-12-10 02:41:27 UTC to 2024-12-10 02:41:27 UTC - races.md: data race -> race condition to violate memory safety (rust-lang/nomicon#470) ## reference 8 commits in ede56d1bbe132bac476b5029cd6d7508ca9572e9..9f41bc11342d46544ae0732caf14ec0bcaf27376 2024-12-03 22:26:55 +0000 to 2024-12-18 23:04:30 +0000 - `coverage` attribute (rust-lang/reference#1628) - Clarify that `extern crate foo as føø` is allowed (rust-lang/reference#1697) - Fix rule auto-linking on Windows (rust-lang/reference#1698) - Reflect rust#133422 & rust#133587 to inline assembly documentation (rust-lang/reference#1695) - Describe async closures (rust-lang/reference#1692) - Update closures for edition 2021 disjoint closure capturing (rust-lang/reference#1521) - Fix paragraphs with trailing `\1` (rust-lang/reference#1696) - Add triagebot autolabel (rust-lang/reference#1694) ## rust-lang/rust-by-example 1 commits in e1d1f2cdcee4d52b9a01ff7c448be4372a377b70..76406337f4131253443aea0ed7e7f451b464117c 2024-12-07 00:24:30 UTC to 2024-12-07 00:24:30 UTC - Fix #1900 (rust-lang/rust-by-example#1901) ## rust-lang/rustc-dev-guide 9 commits in b21d99b770f9aceb0810c843847c52f86f45d2ed..7f7ba48f04abc2ad25e52f30b5e2bffa286b019f 2024-12-16 07:12:01 UTC to 2024-12-05 05:01:46 UTC - Specify what a CGU is (rust-lang/rustc-dev-guide#2163) - functionality removed from codebase (part 2) (rust-lang/rustc-dev-guide#2160) - functionality removed from codebase (rust-lang/rustc-dev-guide#2159) - remove polymorphization (rust-lang/rustc-dev-guide#2158) - squashing: recommend --keep-base when squashing without a conflict (rust-lang/rustc-dev-guide#2157) - update section even more (rust-lang/rustc-dev-guide#2156) - extend closure constraints section (rust-lang/rustc-dev-guide#2155) - Remove `//@ compare-output-lines-by-subset` directive (rust-lang/rustc-dev-guide#2151) - Document `needs-target-has-atomic` directive (rust-lang/rustc-dev-guide#2154)
2024-12-19Auto merge of #133809 - mrkajetanp:ci-aarch64-dist, r=Kobzolbors-99/+129
ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
2024-12-18Update booksrustbot-0/+0
2024-12-18Bump Fuchsia toolchain for testingSteven Grady-4/+4
This updates the Fuchsia SDK used to test rust on Fuchsia to 26.20241211.7.1, and clang to the development version 20 from 388d7f144880dcd85ff31f06793304405a9f44b6.
2024-12-18Merge pull request #4072 from tiif/blockopOli Scherer-114/+391
Implement blocking unnamed_socket
2024-12-18Auto merge of #134443 - joshtriplett:use-field-init-shorthand, ↵bors-1/+1
r=lqd,tgross35,nnethercote Use field init shorthand where possible Field init shorthand allows writing initializers like `tcx: tcx` as `tcx`. The compiler already uses it extensively. Fix the last few places where it isn't yet used. EDIT: this PR also updates `rustfmt.toml` to set `use_field_init_shorthand = true`.
2024-12-18reduce compiler `Assemble` complexityonur-ozkan-30/+34
`compile::Assemble` is already complicated by its nature (as it handles core internals like recursive building logic, etc.) and also handles half of `LldWrapper` tool logic for no good reason since it should be done in the build step directly. This change moves it there to reduce complexity of `compile::Assemble` logic. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-12-19Implement blocking unnamed_sockettiif-114/+391
2024-12-18Auto merge of #134470 - jieyouxu:rollup-kld7kmk, r=jieyouxubors-111/+50
Rollup of 11 pull requests Successful merges: - #130786 ( mir-opt: a sub-BB of a cleanup BB must also be a cleanup BB in `EarlyOtherwiseBranch`) - #133926 (Fix const conditions for RPITITs) - #134161 (Overhaul token cursors) - #134253 (Overhaul keyword handling) - #134394 (Clarify the match ergonomics 2024 migration lint's output) - #134399 (Do not do if ! else, use unnegated cond and swap the branches instead) - #134420 (refactor: replace &PathBuf with &Path to enhance generality) - #134436 (tests/assembly/asm: Remove uses of rustc_attrs and lang_items features by using minicore) - #134444 (Fix `x build --stage 1 std` when using cg_cranelift as the default backend) - #134452 (fix(LazyCell): documentation of get[_mut] was wrong) - #134460 (Merge some patterns together) r? `@ghost` `@rustbot` modify labels: rollup
2024-12-18introduce `LateParamRegionKind`lcnr-1/+1
2024-12-18Rollup merge of #134444 - jyn514:cranelift-std, r=bjorn3许杰友 Jieyou Xu (Joe)-0/+5
Fix `x build --stage 1 std` when using cg_cranelift as the default backend Before, cg_cranelift would ICE when trying to lower f16 and f128. The library/ crates had all the infrastructure to omit using them, it just wasn't hooked up to bootstrap. r? `````@bjorn3`````
2024-12-18Rollup merge of #134420 - Integral-Tech:pathbuf-refactor, r=compiler-errors许杰友 Jieyou Xu (Joe)-15/+12
refactor: replace &PathBuf with &Path to enhance generality - According to [style.md](https://github.com/rust-lang/rust/blob/master/src/tools/rust-analyzer/docs/dev/style.md#useless-types): > More generally, always prefer types on the left ```rust // GOOD BAD &[T] &Vec<T> &str &String Option<&T> &Option<T> &Path &PathBuf ```
2024-12-18Rollup merge of #134253 - nnethercote:overhaul-keywords, r=petrochenkov许杰友 Jieyou Xu (Joe)-75/+12
Overhaul keyword handling The compiler's list of keywords has some problems. - It contains several items that aren't keywords. - The order isn't quite right in a couple of places. - Some of the names of predicates relating to keywords are confusing. - rustdoc and rustfmt have their own (incorrect) versions of the keyword list. - `AllKeywords` is unnecessarily complex. r? ```@jieyouxu```
2024-12-18Rollup merge of #134161 - nnethercote:overhaul-token-cursors, r=spastorino许杰友 Jieyou Xu (Joe)-21/+21
Overhaul token cursors Some nice cleanups here. r? `````@davidtwco`````
2024-12-18add more tests for SC access/fence consistencyRalf Jung-204/+355
2024-12-18Merge pull request #18715 from aibaars/ungram-asm-optionLukas Wirth-3/+1
Fix AsmOption rule in rust.ungram
2024-12-18fix: Consider both completion detail fields in to_protoLukas Wirth-1/+1
2024-12-18Fix AsmOption rule in rust.ungramArthur Baars-3/+1
2024-12-18Auto merge of #134428 - nikic:llvm-19.1.6, r=cuviperbors-0/+0
Update to LLVM 19.1.6 Fixes the wasm64 build failure reported at https://github.com/rust-lang/llvm-project/pull/180.
2024-12-18fix: Do not ask the client ro resolve for non existing label detailsLukas Wirth-2/+4
2024-12-18internal: Cleanup label structure of `CompletionItem`Lukas Wirth-1070/+1201
2024-12-18document the public ci dashboard (#2167)Marco Ieni-1/+18
2024-12-18ci: Organise shared helper scriptsKajetan Puchalski-199/+31
Move shared helper scripts used by Docker builds under docker/scripts.
2024-12-18Merge pull request #18711 from Veykril/push-kwurwxttmqwoLukas Wirth-2/+27
Taking a raw ref of a deref is always safe
2024-12-18ci: Move dist-aarch64-linux to an aarch64 runnerKajetan Puchalski-47/+245
Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on.
2024-12-18Taking a raw ref of a deref is always safeLukas Wirth-2/+27
2024-12-18make no-variant types a dedicated Variants variantRalf Jung-10/+11
2024-12-18Variants::Single: do not use invalid VariantIdx for uninhabited enumsRalf Jung-6/+7
2024-12-18Remove salsa from proc-macro server dep treeLukas Wirth-15/+88
2024-12-18Auto merge of #134425 - clubby789:cargo-update, r=jieyouxubors-78/+88
Pin `cc` and run `cargo update` `cc` tends to cause issues with automatic bumps so locking it to be bumped individually when necessary <details> <summary>compiler and tools dependencies</summary> ``` Updating allocator-api2 v0.2.20 -> v0.2.21 Updating annotate-snippets v0.11.4 -> v0.11.5 Updating anyhow v1.0.93 -> v1.0.94 Updating bstr v1.11.0 -> v1.11.1 Updating chrono v0.4.38 -> v0.4.39 Updating clap v4.5.21 -> v4.5.23 Updating clap_builder v4.5.21 -> v4.5.23 Updating clap_complete v4.5.38 -> v4.5.39 Updating clap_lex v0.7.3 -> v0.7.4 Updating colored v2.1.0 -> v2.2.0 Updating console v0.15.8 -> v0.15.10 Updating crossbeam-channel v0.5.13 -> v0.5.14 Updating crossbeam-deque v0.8.5 -> v0.8.6 Updating crossbeam-utils v0.8.20 -> v0.8.21 Updating encode_unicode v0.3.6 -> v1.0.0 Updating fastrand v2.2.0 -> v2.3.0 Updating home v0.5.9 -> v0.5.11 Updating js-sys v0.3.74 -> v0.3.76 Updating libc v0.2.167 -> v0.2.168 Updating miniz_oxide v0.8.0 -> v0.8.1 Updating pest v2.7.14 -> v2.7.15 Updating pest_derive v2.7.14 -> v2.7.15 Updating pest_generator v2.7.14 -> v2.7.15 Updating pest_meta v2.7.14 -> v2.7.15 Updating redox_syscall v0.5.7 -> v0.5.8 Updating rustc-stable-hash v0.1.0 -> v0.1.1 Updating rustix v0.38.41 -> v0.38.42 Updating self_cell v1.0.4 -> v1.1.0 Updating semver v1.0.23 -> v1.0.24 Updating serde v1.0.215 -> v1.0.216 Updating serde_derive v1.0.215 -> v1.0.216 Adding thiserror v2.0.7 Adding thiserror-impl v2.0.7 Updating time v0.3.36 -> v0.3.37 Updating time-macros v0.2.18 -> v0.2.19 Updating tokio v1.41.1 -> v1.42.0 Updating wasm-bindgen v0.2.97 -> v0.2.99 Updating wasm-bindgen-backend v0.2.97 -> v0.2.99 Updating wasm-bindgen-macro v0.2.97 -> v0.2.99 Updating wasm-bindgen-macro-support v0.2.97 -> v0.2.99 Updating wasm-bindgen-shared v0.2.97 -> v0.2.99 Updating wasm-encoder v0.221.0 -> v0.221.2 Updating wasmparser v0.221.0 -> v0.221.2 Updating wast v221.0.0 -> v221.0.2 Updating wat v1.221.0 -> v1.221.2 ``` </details> <details> <summary>library dependencies</summary> ``` Updating allocator-api2 v0.2.20 -> v0.2.21 Updating libc v0.2.167 -> v0.2.168 ``` </details> <details> <summary>rustbook dependencies</summary> ``` Updating anyhow v1.0.93 -> v1.0.94 Updating bstr v1.11.0 -> v1.11.1 Updating chrono v0.4.38 -> v0.4.39 Updating clap v4.5.21 -> v4.5.23 Updating clap_builder v4.5.21 -> v4.5.23 Updating clap_complete v4.5.38 -> v4.5.39 Updating clap_lex v0.7.3 -> v0.7.4 Updating fastrand v2.2.0 -> v2.3.0 Updating js-sys v0.3.74 -> v0.3.76 Updating libc v0.2.167 -> v0.2.168 Updating miniz_oxide v0.8.0 -> v0.8.1 Updating pest v2.7.14 -> v2.7.15 Updating pest_derive v2.7.14 -> v2.7.15 Updating pest_generator v2.7.14 -> v2.7.15 Updating pest_meta v2.7.14 -> v2.7.15 Updating pulldown-cmark-to-cmark v19.0.0 -> v19.0.1 Updating redox_syscall v0.5.7 -> v0.5.8 Updating rustix v0.38.41 -> v0.38.42 Updating semver v1.0.23 -> v1.0.24 Updating serde v1.0.215 -> v1.0.216 Updating serde_derive v1.0.215 -> v1.0.216 Adding thiserror v2.0.7 Adding thiserror-impl v2.0.7 Updating wasm-bindgen v0.2.97 -> v0.2.99 Updating wasm-bindgen-backend v0.2.97 -> v0.2.99 Updating wasm-bindgen-macro v0.2.97 -> v0.2.99 Updating wasm-bindgen-macro-support v0.2.97 -> v0.2.99 Updating wasm-bindgen-shared v0.2.97 -> v0.2.99 Removing windows-sys v0.52.0 ``` </details>
2024-12-18Only have one source of truth for keywords.Nicholas Nethercote-75/+12
`rustc_symbol` is the source of truth for keywords. rustdoc has its own implicit definition of keywords, via the `is_doc_keyword`. It (presumably) intends to include all keywords, but it omits `yeet`. rustfmt has its own explicit list of Rust keywords. It also (presumably) intends to include all keywords, but it omits `await`, `builtin`, `gen`, `macro_rules`, `raw`, `reuse`, `safe`, and `yeet`. Also, it does linear searches through this list, which is inefficient. This commit fixes all of the above problems by introducing a new predicate `is_any_keyword` in rustc and using it in rustdoc and rustfmt. It documents that it's not the right predicate in most cases.
2024-12-18Merge pull request #18708 from ChayimFriedman2/fix-tinyLukas Wirth-0/+19
fix: Fix pretty-printing of `@` patterns
2024-12-18Fix trivial typo of "query-fied"Chris Bloodsworth-3/+3
"Query-field" should be "Query-fied" - three instances.
2024-12-18typo, pauseTshepang Mbambo-1/+1
2024-12-18Fix some typosRyan Mehri-16/+16
2024-12-18Auto merge of #134450 - weihanglo:update-cargo, r=weihanglobors-0/+0
Update cargo 6 commits in 769f622e12db0001431d8ae36d1093fb8727c5d9..99dff6d77db779716dda9ca3b29c26addd02c1be 2024-12-14 04:27:35 +0000 to 2024-12-18 00:55:17 +0000 - fix(build-std): make Resolve align to what to build (rust-lang/cargo#14938) - test(build-std): Isolate output test to avoid spurious `[BLOCKING]` messages from concurrent runs (rust-lang/cargo#14943) - docs: fix wrong changelog PR link (rust-lang/cargo#14947) - docs(unstable): Correct stabilization version for MSRV-resolver (rust-lang/cargo#14945) - Update release information for home 0.5.11 (rust-lang/cargo#14939) - Limit release trigger to 0.* tags (rust-lang/cargo#14940)
2024-12-18Merge from rustcThe Miri Cronjob Bot-2632/+14399
2024-12-18Preparing for merge from rustcThe Miri Cronjob Bot-1/+1
2024-12-17Update cargoWeihang Lo-0/+0
2024-12-18Auto merge of #134439 - matthiaskrgr:rollup-grmmmx2, r=matthiaskrgrbors-7/+103
Rollup of 7 pull requests Successful merges: - #133265 (Add a range argument to vec.extract_if) - #133801 (Promote powerpc64le-unknown-linux-musl to tier 2 with host tools) - #134323 (coverage: Dismantle `map_data.rs` by moving its responsibilities elsewhere) - #134378 (An octuple of polonius fact generation cleanups) - #134408 (Regression test for RPIT inheriting lifetime from projection) - #134423 (bootstrap: use specific-purpose ui test path for `test_valid` self-test) - #134426 (Fix typo in uint_macros.rs) Failed merges: - #133103 (Pass FnAbi to find_mir_or_eval_fn) r? `@ghost` `@rustbot` modify labels: rollup
2024-12-17Fix `x build --stage 1 std` when using cg_cranelift as the default backendjyn-0/+5
Before, cg_cranelift would ICE when trying to lower f16 and f128. The library/ crates had all the infrastructure to omit using them, it just wasn't hooked up to bootstrap.
2024-12-18Rename `RefTokenTreeCursor`.Nicholas Nethercote-21/+21
Because `TokenStreamIter` is a much better name for a `TokenStream` iterator. Also rename the `TokenStream::trees` method as `TokenStream::iter`, and some local variables.
2024-12-18Simplify `RefTokenTreeCursor::look_ahead`.Nicholas Nethercote-3/+3
It's only ever used with a lookahead of 0, so this commit removes the lookahead and renames it `peek`.
2024-12-18Change the lookahead in `MacroParser::new`.Nicholas Nethercote-1/+1
As it happens, lookahead values of 0, 1, and 2 all work fine here, due to the structure of the code. (Values or 3 or greater cause test failures.) This commit changes the lookahead to zero because that will facilitate cleanups in subsequent commits.
2024-12-18Fix pretty-printing of `@` patternsChayim Refael Friedman-0/+19
It didn't print the `@`.
2024-12-17Use field init shorthand where possibleJosh Triplett-1/+1
Field init shorthand allows writing initializers like `tcx: tcx` as `tcx`. The compiler already uses it extensively. Fix the last few places where it isn't yet used.
2024-12-17Rollup merge of #134423 - jieyouxu:bootstrap-test-valid, r=onur-ozkanMatthias Krüger-1/+1
bootstrap: use specific-purpose ui test path for `test_valid` self-test I wanted to move some ui tests around in #134418, which broke `test_valid` since it was referencing two non-specific-purpose ui tests. This PR instead adds two dummy tests under `tests/ui/bootstrap/self-test/`, for that purpose specifically. r? bootstrap