about summary refs log tree commit diff
path: root/src/doc
AgeCommit message (Collapse)AuthorLines
2024-03-22add chapter to summarylcnr-0/+1
2024-03-22explain rigid aliaseslcnr-1/+3
2024-03-22Update src/solve/significant-changes.mdlcnr-1/+1
Co-authored-by: Oli Scherer <github35764891676564198441@oli-obk.de>
2024-03-22Update src/solve/significant-changes.mdlcnr-1/+1
Co-authored-by: Oli Scherer <github35764891676564198441@oli-obk.de>
2024-03-22is this sensible? idklcnr-38/+77
2024-03-22explore significant changes with the new solverlcnr-0/+109
2024-03-22canonicalization is out of datelcnr-1/+0
2024-03-22Rollup merge of #121619 - RossSmyth:pfix_match, r=petrochenkovMatthias Krüger-0/+22
Experimental feature postfix match This has a basic experimental implementation for the RFC postfix match (rust-lang/rfcs#3295, #121618). [Liaison is](https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/Postfix.20Match.20Liaison/near/423301844) ```@scottmcm``` with the lang team's [experimental feature gate process](https://github.com/rust-lang/lang-team/blob/master/src/how_to/experiment.md). This feature has had an RFC for a while, and there has been discussion on it for a while. It would probably be valuable to see it out in the field rather than continue discussing it. This feature also allows to see how popular postfix expressions like this are for the postfix macros RFC, as those will take more time to implement. It is entirely implemented in the parser, so it should be relatively easy to remove if needed. This PR is split in to 5 commits to ease review. 1. The implementation of the feature & gating. 2. Add a MatchKind field, fix uses, fix pretty. 3. Basic rustfmt impl, as rustfmt crashes upon seeing this syntax without a fix. 4. Add new MatchSource to HIR for Clippy & other HIR consumers
2024-03-22Fix broken link in chapter '1. How to build and run the compiler'Christopher B. Speir-1/+1
The 'read this chapter' link under the 'What is x.py?' section returned a Document not found (404) error.
2024-03-20Add bare metal riscv32 target.Roy Buitenhuis-1/+6
2024-03-19Only split by-ref/by-move futures for async closuresMichael Goulet-1/+1
2024-03-19Added note about LLVM 18 requirementAdam Gastineau-1/+1
2024-03-19typoTshepang Mbambo-1/+1
2024-03-19Fixed incorrectly named sim target in platform-support.mdAdam Gastineau-1/+1
2024-03-18Support for visionOSAdam Gastineau-0/+55
2024-03-18Rollup merge of #122700 - esp-rs:remove-old-files, r=workingjubileeMatthias Krüger-10/+6
Remove redundant files, rename base riscv32 file Fixes a mistake I made in https://github.com/rust-lang/rust/pull/117874.
2024-03-18Remove redundant files, rename base risc32 fileScott Mabin-10/+6
2024-03-18Reflect rustc_codegen_cranelift moveSeo Sanghyeon-1/+1
2024-03-18Fix heading anchors in doc pages.Eric Huss-0/+22
2024-03-17Mark UEFI std support as WIPAyush Singh-3/+4
Signed-off-by: Ayush Singh <ayushdevel1325@gmail.com>
2024-03-16Remove Windows support noteChris Denton-6/+4
2024-03-16Auto merge of #121926 - tgross35:f16-f128-step3-feature-gate, ↵bors-0/+18
r=compiler-errors,petrochenkov `f16` and `f128` step 3: compiler support & feature gate Continuation of https://github.com/rust-lang/rust/pull/121841, another portion of https://github.com/rust-lang/rust/pull/114607 This PR exposes the new types to the world and adds a feature gate. Marking this as a draft because I need some feedback on where I did the feature gate check. It also does not yet catch type via suffixed literals (so the feature gate test will fail, probably some others too because I haven't belssed). If there is a better place to check all types after resolution, I can do that. If not, I figure maybe I can add a second gate location in AST when it checks numeric suffixes. Unfortunately I still don't think there is much testing to be done for correctness (codegen tests or parsed value checks) until we have basic library support. I think that will be the next step. Tracking issue: https://github.com/rust-lang/rust/issues/116909 r? `@compiler-errors` cc `@Nilstrieb` `@rustbot` label +F-f16_and_f128
2024-03-15doc: add --test-builder/--test-builder-wrapperTravis Finkenauer-0/+29
2024-03-15Document `adt_const_params` feature in Unstable BookAurora-0/+35
2024-03-14Rollup merge of #122322 - Zalathar:branch, r=oli-obkMatthias Krüger-2/+2
coverage: Initial support for branch coverage instrumentation (This is a review-ready version of the changes that were drafted in #118305.) This PR adds support for branch coverage instrumentation, gated behind the unstable flag value `-Zcoverage-options=branch`. (Coverage instrumentation must also be enabled with `-Cinstrument-coverage`.) During THIR-to-MIR lowering (MIR building), if branch coverage is enabled, we collect additional information about branch conditions and their corresponding then/else blocks. We inject special marker statements into those blocks, so that the `InstrumentCoverage` MIR pass can reliably identify them even after the initially-built MIR has been simplified and renumbered. The rest of the changes are mostly just plumbing needed to gather up the information that was collected during MIR building, and include it in the coverage metadata that we embed in the final binary. Note that `llvm-cov show` doesn't print branch coverage information in its source views by default; that needs to be explicitly enabled with `--show-branches=count` or similar. --- The current implementation doesn't have any support for instrumenting `if let` or let-chains. I think it's still useful without that, and adding it would be non-trivial, so I'm happy to leave that for future work.
2024-03-14Add feature gates for `f16` and `f128`Trevor Gross-0/+18
Includes related tests and documentation pages. Michael Goulet: Don't issue feature error in resolver for f16/f128 unless finalize Co-authored-by: Michael Goulet <michael@errs.io>
2024-03-14Rollup merge of #122490 - Amanieu:ohos-tier2-instructions, r=GuillaumeGomezMatthias Krüger-24/+27
Update build instructions for OpenHarmony The platform page now recommends using rustup since the target is now tier 2.
2024-03-14Rollup merge of #122368 - pavedroad:master, r=oli-obkMatthias Krüger-1/+1
chore: remove repetitive words
2024-03-14Update build instructions for OpenHarmonyAmanieu d'Antras-24/+27
The platform page now recommends using rustup since the target is now tier 2.
2024-03-14Rollup merge of #119676 - notriddle:notriddle/rustdoc-search-hof, ↵Matthias Krüger-19/+35
r=GuillaumeGomez rustdoc-search: search types by higher-order functions This feature extends rustdoc with syntax and search index information for searching function pointers and closures (Higher-Order Functions, or HOF). Part of https://github.com/rust-lang/rust/issues/60485 This PR adds two syntaxes: a high-level one for finding any kind of HOF, and a direct implementation of the parenthesized path syntax that Rust itself uses. ## Preview pages | Query | Results | |-------|---------| | [`option<T>, (fnonce (T) -> bool) -> option<T>`][optionfilter] | `Option::filter` | | [`option<T>, (T -> bool) -> option<T>`][optionfilter2] | `Option::filter` | Updated chapter of the book: https://notriddle.com/rustdoc-html-demo-9/search-hof/rustdoc/read-documentation/search.html [optionfilter]: https://notriddle.com/rustdoc-html-demo-9/search-hof/std/vec/struct.Vec.html?search=option<T>%2C+(fnonce+(T)+->+bool)+->+option<T>&filter-crate=std [optionfilter2]: https://notriddle.com/rustdoc-html-demo-9/search-hof/std/vec/struct.Vec.html?search=option<T>%2C+(T+->+bool)+->+option<T>&filter-crate=std ## Motivation When type-based search was first landed, it was directly [described as incomplete][a comment]. [a comment]: https://github.com/rust-lang/rust/pull/23289#issuecomment-79437386 Filling out the missing functionality is going to mean adding support for more of Rust's [type expression] syntax, such as references, raw pointers, function pointers, and closures. This PR adds function pointers and closures. [type expression]: https://doc.rust-lang.org/reference/types.html#type-expressions There's been demand for something "like Hoogle, but for Rust" expressed a few times [1](https://www.reddit.com/r/rust/comments/y8sbid/is_there_a_website_like_haskells_hoogle_for_rust/) [2](https://users.rust-lang.org/t/rust-equivalent-of-haskells-hoogle/102280) [3](https://internals.rust-lang.org/t/std-library-inclusion-policy/6852/2) [4](https://discord.com/channels/442252698964721669/448238009733742612/1109502307495858216). Some of them just don't realize what functionality already exists ([`Duration -> u64`](https://doc.rust-lang.org/nightly/std/?search=duration%20-%3E%20u64) already works), but a lot of them specifically want to search for higher-order functions like option combinators. ## Guide-level explanation (from the Rustdoc book) To search for a function that accepts a function as a parameter, like `Iterator::all`, wrap the nested signature in parenthesis, as in [`Iterator<T>, (T -> bool) -> bool`][iterator-all]. You can also search for a specific closure trait, such as `Iterator<T>, (FnMut(T) -> bool) -> bool`, but you need to know which one you want. [iterator-all]: https://notriddle.com/rustdoc-html-demo-9/search-hof/std/vec/struct.Vec.html?search=Iterator<T>%2C+(T+->+bool)+->+bool&filter-crate=std ## Reference-level description (also from the Rustdoc book) ### Primitives with Special Syntax <table> <thead> <tr> <th>Shorthand</th> <th>Explicit names</th> </tr> </thead> <tbody> <tr><td colspan="2">Before this PR</td></tr> <tr> <td><code>[]</code></td> <td><code>primitive:slice</code> and/or <code>primitive:array</code></td> </tr> <tr> <td><code>[T]</code></td> <td><code>primitive:slice&lt;T&gt;</code> and/or <code>primitive:array&lt;T&gt;</code></td> </tr> <tr> <td><code>!</code></td> <td><code>primitive:never</code></td> </tr> <tr> <td><code>()</code></td> <td><code>primitive:unit</code> and/or <code>primitive:tuple</code></td> </tr> <tr> <td><code>(T)</code></td> <td><code>T</code></td> </tr> <tr> <td><code>(T,)</code></td> <td><code>primitive:tuple&lt;T&gt;</code></td> </tr> <tr><td colspan="2">After this PR</td></tr> <tr> <td><code>(T, U -> V, W)</code></td> <td><code>fn(T, U) -> (V, W)</code>, Fn, FnMut, and FnOnce</td> </tr> </tbody> </table> The `->` operator has lower precedence than comma. If it's not wrapped in brackets, it delimits the return value for the function being searched for. To search for functions that take functions as parameters, use parenthesis. ### Search query grammar ```ebnf ident = *(ALPHA / DIGIT / "_") path = ident *(DOUBLE-COLON ident) [BANG] slice-like = OPEN-SQUARE-BRACKET [ nonempty-arg-list ] CLOSE-SQUARE-BRACKET tuple-like = OPEN-PAREN [ nonempty-arg-list ] CLOSE-PAREN arg = [type-filter *WS COLON *WS] (path [generics] / slice-like / tuple-like) type-sep = COMMA/WS *(COMMA/WS) nonempty-arg-list = *(type-sep) arg *(type-sep arg) *(type-sep) [ return-args ] generic-arg-list = *(type-sep) arg [ EQUAL arg ] *(type-sep arg [ EQUAL arg ]) *(type-sep) normal-generics = OPEN-ANGLE-BRACKET [ generic-arg-list ] *(type-sep) CLOSE-ANGLE-BRACKET fn-like-generics = OPEN-PAREN [ nonempty-arg-list ] CLOSE-PAREN [ RETURN-ARROW arg ] generics = normal-generics / fn-like-generics return-args = RETURN-ARROW *(type-sep) nonempty-arg-list exact-search = [type-filter *WS COLON] [ RETURN-ARROW ] *WS QUOTE ident QUOTE [ generics ] type-search = [ nonempty-arg-list ] query = *WS (exact-search / type-search) *WS ; unchanged parts of the grammar, like the full list of type filters, are omitted ``` ## Future direction ### The remaining type expression grammar As described in https://github.com/rust-lang/rust/pull/118194, this is another step in the type expression grammar: BareFunction, and the function-like mode of TypePath, are now supported. * RawPointerType and ReferenceType actually are a priority. * ImplTraitType and TraitObjectType (and ImplTraitTypeOneBound and TraitObjectTypeOneBound) aren't as much of a priority, since they desugar pretty easily. ### Search subtyping and traits This is the other major factor that makes it less useful than it should be. * `iterator<result<t>> -> result<t>` doesn't find `Result::from_iter`. You have to search [`intoiterator<result<t>> -> result<t>`](https://notriddle.com/rustdoc-html-demo-9/search-hof/std/vec/struct.Vec.html?search=intoiterator%3Cresult%3Ct%3E%3E%20-%3E%20result%3Ct%3E&filter-crate=std). Nobody's going to search for IntoIterator unless they basically already know about it and don't need the search engine anyway. * Iterator combinators are usually structs that happen to implement Iterator, like `std::iter::Map`. To solve these cases, it needs to look at trait implementations, knowing that Iterator is a "subtype of" IntoIterator, and Map is a "subtype of" Iterator, so `iterator -> result` is a subtype of `intoiterator -> result` and `iterator<t>, (t -> u) -> iterator<u>` is a subtype of [`iterator<t>, (t -> u) -> map<t -> u>`](https://notriddle.com/rustdoc-html-demo-9/search-hof/std/vec/struct.Vec.html?search=iterator%3Ct%3E%2C%20(t%20-%3E%20u)%20-%3E%20map%3Ct%20-%3E%20u%3E&filter-crate=std).
2024-03-14coverage: `-Zcoverage-options=branch` is no longer a placeholderZalathar-2/+2
2024-03-13Update rustdoc-internals.md (#1911)Tbkhi-123/+149
* Update rustdoc-internals.md Minor updates to syntax and some clarifications. * updates * Update rustdoc-internals.md
2024-03-13Update test-implementation.md (#1937)Tbkhi-29/+34
* Update test-implementation.md * Update test-implementation.md
2024-03-13Extract Bootstrap into its own section (#1939)许杰友 Jieyou Xu (Joe)-16/+79
* Extract Bootstrap into its own section Add brief explanation for `Step` and `Builder::ensure` as core Bootstrap internal concepts. * Drop common commands page (use `x --help` instead) * Add `make` as an alternative entry point * Add src/bootstrap/README.md link
2024-03-13Rollup merge of #122226 - Zalathar:zcoverage-options, r=nnethercoteMatthias Krüger-8/+15
coverage: Remove or migrate all unstable values of `-Cinstrument-coverage` (This PR was substantially overhauled from its original version, which migrated all of the existing unstable values intact.) This PR takes the three nightly-only values that are currently accepted by `-Cinstrument-coverage`, completely removes two of them (`except-unused-functions` and `except-unused-generics`), and migrates the third (`branch`) over to a newly-introduced unstable flag `-Zcoverage-options`. I have a few motivations for wanting to do this: - It's unclear whether anyone actually uses the `except-unused-*` values, so this serves as an opportunity to either remove them, or prompt existing users to object to their removal. - After #117199, the stable values of `-Cinstrument-coverage` treat it as a boolean-valued flag, so having nightly-only extra values feels out-of-place. - Nightly-only values also require extra ad-hoc code to make sure they aren't accidentally exposed to stable users. - The new system allows multiple different settings to be toggled independently, which isn't possible in the current single-value system. - The new system makes it easier to introduce new behaviour behind an unstable toggle, and then gather nightly-user feedback before possibly making it the default behaviour for all users. - The new system also gives us a convenient place to put relatively-narrow options that won't ever be the default, but that nightly users might still want access to. - It's likely that we will eventually want to give stable users more fine-grained control over coverage instrumentation. The new flag serves as a prototype of what that stable UI might eventually look like. The `branch` option is a placeholder that currently does nothing. It will be used by #122322 to opt into branch coverage instrumentation. --- I see `-Zcoverage-options` as something that will exist more-or-less indefinitely, though individual sub-options might come and go as appropriate. I think there will always be some demand for nightly-only toggles, so I don't see `-Zcoverage-options` itself ever being stable, though we might eventually stabilize something similar to it.
2024-03-13typosTshepang Mbambo-4/+4
Also - use proper case for rust-analyzer - reformat a bit, for sembr
2024-03-13coverage: Add `-Zcoverage-options` for fine control of coverageZalathar-0/+16
This new nightly-only flag can be used to toggle fine-grained flags that control the details of coverage instrumentation. Currently the only supported flag value is `branch` (or `no-branch`), which is a placeholder for upcoming support for branch coverage. Other flag values can be added in the future, to prototype proposed new behaviour, or to enable special non-default behaviour.
2024-03-13coverage: Remove all unstable values of `-Cinstrument-coverage`Zalathar-9/+0
2024-03-12sess: stabilize relro-levelDavid Wood-0/+20
Signed-off-by: David Wood <david@davidtw.co>
2024-03-12chore: remove repetitive wordspavedroad-1/+1
Signed-off-by: pavedroad <qcqs@outlook.com> chore: remove repetitive words Signed-off-by: pavedroad <qcqs@outlook.com>
2024-03-12Auto merge of #122170 - alexcrichton:rename-wasi-threads, r=petrochenkovbors-20/+24
Rename `wasm32-wasi-preview1-threads` to `wasm32-wasip1-threads` This commit renames the current `wasm32-wasi-preview1-threads` target to `wasm32-wasip1-threads`. The need for this rename is a bit unfortunate as the previous name was chosen in an attempt to be future-compatible with other WASI targets. Originally this target was proposed to be `wasm32-wasi-threads`, and that's what was originally implemented in wasi-sdk as well. After discussion though and with the plans for the upcoming component-model target (now named `wasm32-wasip2`) the "preview1" naming was chosen for the threads-based target. The WASI subgroup later decided that it was time to drop the "preview" terminology and recommends "pX" instead, hence previous PRs to add `wasm32-wasip2` and rename `wasm32-wasi` to `wasm32-wasip1`. So, with all that history, the "proper name" for this target is different than its current name, so one way or another a rename is required. This PR proposes renaming this target cold-turkey, unlike `wasm32-wasi` which is having a long transition period to change its name. The threads-based target is predicted to see only a fraction of the traffic of `wasm32-wasi` due to the unstable nature of the WASI threads proposal itself. While I was here I updated the in-tree documentation in the target spec file itself as most of the documentation was copied from the original WASI target and wasn't as applicable to this target. Also, as an aside, I can at least try to apologize for all the naming confusion here, but this is hopefully the last WASI-related rename.
2024-03-12Rollup merge of #122339 - rustbot:docs-update, r=ehussMatthias Krüger-0/+0
Update books ## rust-lang/reference 3 commits in 3417f866932cb1c09c6be0f31d2a02ee01b4b95d..5afb503a4c1ea3c84370f8f4c08a1cddd1cdf6ad 2024-03-06 21:29:54 UTC to 2024-02-28 04:06:45 UTC - Input format (rust-lang/reference#1459) - Lexer: say that lifetime-like tokens can't be immediately followed by ' (rust-lang/reference#1479) - Patterns and enums (rust-lang/reference#1460) ## rust-lang/rust-by-example 2 commits in 57f1e708f5d5850562bc385aaf610e6af14d6ec8..e093099709456e6fd74fecd2505fdf49a2471c10 2024-03-08 23:30:57 UTC to 2024-02-26 21:10:20 UTC - While-Let Unable to compile code example on page (rust-lang/rust-by-example#1819) - Update new_types.md wording (rust-lang/rust-by-example#1823) ## rust-lang/rustc-dev-guide 14 commits in 7b0ef5b0bea5e3ce3b9764aa5754a60e2cc05c52..8a5d647f19b08998612146b1cb2ca47083db63e0 2024-03-11 10:37:18 UTC to 2024-02-29 09:46:28 UTC - update rustc-driver-interacting-with-the-ast.md (rust-lang/rustc-dev-guide#1930) - Update rustc-driver-getting-diagnostics.md (rust-lang/rustc-dev-guide#1931) - Document that test names cannot contain dots (rust-lang/rustc-dev-guide#1927) - Update overview.md (rust-lang/rustc-dev-guide#1898) - actually need to fix two occurances (rust-lang/rustc-dev-guide#1925) - fix broken links (rust-lang/rustc-dev-guide#1924) - next-solver: document caching (rust-lang/rustc-dev-guide#1923) - Add compiletest docs for FileCheck prefixes and `//@ filecheck-flags:` (rust-lang/rustc-dev-guide#1914) - Use different type in an example (rust-lang/rustc-dev-guide#1908) - Update run-make test description (rust-lang/rustc-dev-guide#1920) - Add some more details on feature gating (rust-lang/rustc-dev-guide#1891) - make shell.nix better (rust-lang/rustc-dev-guide#1858) - opaque types in new solver (rust-lang/rustc-dev-guide#1918) - add implied bounds doc (rust-lang/rustc-dev-guide#1915)
2024-03-11rustdoc-search: add search query syntax `Fn(T) -> U`Michael Howell-16/+30
This is implemented, in addition to the ML-style one, because Rust does it. If we don't, we'll never hear the end of it. This commit also refactors some duplicate parts of the parser into a dedicated function.
2024-03-11rustdoc-search: parse and search with ML-style HOFMichael Howell-3/+5
Option::map, for example, looks like this: option<t>, (t -> u) -> option<u> This syntax searches all of the HOFs in Rust: traits Fn, FnOnce, and FnMut, and bare fn primitives.
2024-03-12More updates for recent diagnostics changes.Nicholas Nethercote-62/+60
A sequel to #1883, this covers diagnostic naming changes from rust-lang/rust/pull/121489, rust-lang/rust/pull/121780, and rust-lang/rust/pull/122132.
2024-03-11Update bibliography.md (#1912)Tbkhi-18/+19
Minor additions and resorting.
2024-03-11Update Windows platform supportChris Denton-6/+4
2024-03-11Update booksrustbot-0/+0
2024-03-11Rename `wasm32-wasi-preview1-threads` to `wasm32-wasip1-threads`Alex Crichton-20/+24
This commit renames the current `wasm32-wasi-preview1-threads` target to `wasm32-wasip1-threads`. The need for this rename is a bit unfortunate as the previous name was chosen in an attempt to be future-compatible with other WASI targets. Originally this target was proposed to be `wasm32-wasi-threads`, and that's what was originally implemented in wasi-sdk as well. After discussion though and with the plans for the upcoming component-model target (now named `wasm32-wasip2`) the "preview1" naming was chosen for the threads-based target. The WASI subgroup later decided that it was time to drop the "preview" terminology and recommends "pX" instead, hence previous PRs to add `wasm32-wasip2` and rename `wasm32-wasi` to `wasm32-wasip1`. So, with all that history, the "proper name" for this target is different than its current name, so one way or another a rename is required. This PR proposes renaming this target cold-turkey, unlike `wasm32-wasi` which is having a long transition period to change its name. The threads-based target is predicted to see only a fraction of the traffic of `wasm32-wasi` due to the unstable nature of the WASI threads proposal itself. While I was here I updated the in-tree documentation in the target spec file itself as most of the documentation was copied from the original WASI target and wasn't as applicable to this target. Also, as an aside, I can at least try to apologize for all the naming confusion here, but this is hopefully the last WASI-related rename.
2024-03-11update rustc-driver-interacting-with-the-ast.md (#1930)Tbkhi-2/+6
* adding links * Update src/rustc-driver-interacting-with-the-ast.md Co-authored-by: Tshepang Mbambo <tshepang@gmail.com> * redo links and formatting * Update rustc-driver-interacting-with-the-ast.md --------- Co-authored-by: Tshepang Mbambo <tshepang@gmail.com>