| Age | Commit message (Collapse) | Author | Lines |
|
|
|
Rollup of 8 pull requests
Successful merges:
- #91793 (socket ancillary data implementation for FreeBSD (from 13 and above).)
- #92284 (Change advance(_back)_by to return the remainder instead of the number of processed elements)
- #102472 (stop special-casing `'static` in evaluation)
- #108480 (Use Rayon's TLV directly)
- #109321 (Erase impl regions when checking for impossible to eagerly monomorphize items)
- #109470 (Correctly substitute GAT's type used in `normalize_param_env` in `check_type_bounds`)
- #109562 (Update ar_archive_writer to 0.1.3)
- #109629 (remove obsolete `givens` from regionck)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
Add a builtin `FnPtr` trait that is implemented for all function pointers
r? `@ghost`
Rebased version of https://github.com/rust-lang/rust/pull/99531 (plus adjustments mentioned in the PR).
If perf is happy with this version, I would like to land it, even if the diagnostics fix in 9df8e1befb5031a5bf9d8dfe25170620642d3c59 only works for `FnPtr` specifically, and does not generally improve blanket impls.
|
|
remove obsolete `givens` from regionck
Revives #107376. The only change is the last commit (https://github.com/rust-lang/rust/pull/109629/commits/2a3177a8bcc4c5a5285dc2908a0f1ce98e9a6377) which should fix the regression.
Fixes https://github.com/rust-lang/rust/issues/106567
r? `@lcnr`
|
|
Update ar_archive_writer to 0.1.3
This updates object to 0.30 and fixes a bug where the symbol table would be omitted for archives where there are object files yet none that export any symbol. This bug could lead to linker errors for crates like rustc_std_workspace_core which don't contain any code of their own but exist solely for their dependencies. This is likely the cause of the linker issues I was experiencing on Webassembly. It has been shown to cause issues on other platforms too.
cc rust-lang/ar_archive_writer#5
|
|
Correctly substitute GAT's type used in `normalize_param_env` in `check_type_bounds`
Given:
```rust
trait Foo {
type Assoc<T>: PartialEq<Self::Assoc<i32>>;
}
impl Foo for () {
type Assoc<T> = Wrapper<T>;
}
struct Wrapper<T>(T);
impl<T> PartialEq<Wrapper<i32>> for Wrapper<T> { }
```
We add an additional predicate in the `normalize_param_env` in `check_type_bounds` that is used to normalize the GAT's bounds to check them in the impl. Problematically, though, that predicate is constructed to be `for<^0> <() as Foo>::Assoc<^0> => Wrapper<T>`, instead of `for<^0> <() as Foo>::Assoc<^0> => Wrapper<^0>`.
That means `Self::Assoc<i32>` in the bounds that we're checking normalizes to `Wrapper<T>`, instead of `Wrapper<i32>`, and so the bound `Self::Assoc<T>: PartialEq<Self::Assoc<i32>>` normalizes to `Wrapper<T>: PartialEq<Wrapper<T>>`, which does not hold.
Fixes this by properly substituting the RHS of that normalizes predicate that we add to the `normalize_param_env`. That means the bound is properly normalized to `Wrapper<T>: PartialEq<Wrapper<i32>>`, which *does* hold.
---
The second commit in this PR just cleans up some substs stuff and some naming.
r? `@jackh726` cc #87900
|
|
Erase impl regions when checking for impossible to eagerly monomorphize items
We were inserting `ReErased` for method substs, but not for impl substs, leading to the call for `subst_and_check_impossible_predicates` being a bit weaker than it should be (since it ignores predicates that need substitution -- incl early-bound regions).
Fixes #109297
|
|
Use Rayon's TLV directly
This accesses Rayon's `TLV` thread local directly avoiding wrapper functions. This makes rustc work with https://github.com/rust-lang/rustc-rayon/pull/10.
r? `@cuviper`
|
|
stop special-casing `'static` in evaluation
fixes #102360
I have no idea whether this actually removed all places where `'static` matters. Without canonicalization it's very easy to accidentally rely on `'static` again. Blocked on changing the `order_dependent_trait_objects` future-compat lint to a hard error
r? `@nikomatsakis`
|
|
Change advance(_back)_by to return the remainder instead of the number of processed elements
When advance_by can't advance the iterator by the number of requested elements it now returns the amount by which it couldn't be advanced instead of the amount by which it did.
This simplifies adapters like chain, flatten or cycle because the remainder doesn't have to be calculated as the difference between requested steps and completed steps anymore.
Additionally switching from `Result<(), usize>` to `Result<(), NonZeroUsize>` reduces the size of the result and makes converting from/to a usize representing the number of remaining steps cheap.
|
|
socket ancillary data implementation for FreeBSD (from 13 and above).
introducing new build config as well.
|
|
Move const trait bounds checks to MIR constck
Fixes #109543. When checking paths in HIR typeck, we don't want to check for const predicates since all we want might just be a function pointer. Therefore we move this to MIR constck and check that bounds are met during MIR constck.
r? `@oli-obk`
|
|
|
|
Fixes #109543. When checking paths in HIR typeck, we don't want to check
for const predicates since all we want might just be a function pointer.
Therefore we move this to MIR constck and check that bounds are met
during MIR constck.
|
|
Rollup of 9 pull requests
Successful merges:
- #108548 (Clarify the 'use a constant in a pattern' error message)
- #109565 (Improve documentation for E0223)
- #109661 (Fix LVI test post LLVM 16 update)
- #109667 (Always set `RUSTC_BOOTSTRAP` with `x doc`)
- #109669 (Update books)
- #109678 (Don't shadow the `dep_node` var in `incremental_verify_ich_failed`)
- #109682 (Add `#[inline]` to CStr trait implementations)
- #109685 (Make doc comment a little bit more accurate)
- #109687 (Document the heuristics IsTerminal uses on Windows)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
joshtriplett:document-windows-isterminal-heuristics, r=BurntSushi
Document the heuristics IsTerminal uses on Windows
Suggested by `@BurntSushi.`
|
|
Make doc comment a little bit more accurate
It queries not LLVM in particular but the codegen backend *in general*. While cranelift does not provide target features, other codegen backends do.
Found while looking for [this answer](https://github.com/rust-lang/rust/issues/108680#issuecomment-1484324690).
|
|
Add `#[inline]` to CStr trait implementations
Fixes #109674
I noticed other usages of traits on `CStr` weren't being inlined, so also added hints to the other implementations
|
|
compiler-errors:dont-shadow-in-incremental_verify_ich_failed, r=Nilstrieb
Don't shadow the `dep_node` var in `incremental_verify_ich_failed`
It's better to debug print `DepNode` instead of `ErrorGuaranteed` one line below :^)
fixes #109676
|
|
Update books
## rust-lang/nomicon
1 commits in 1f3e4cd4fd88b5b5d45feb86a11b6d2f93e5a974..b5f7500fc40775096c2bbd204eae096612cf9047
2023-03-27 13:47:36 UTC to 2023-03-27 13:47:36 UTC
- Fix typo in 3.8 Subtyping and Variance (rust-lang/nomicon#395)
## rust-lang/reference
4 commits in 24c87f6663aed55b05d2cc286878f28f21918825..3c47807a3131b3c7cacb508f52632078d253cd0a
2023-03-26 18:42:43 UTC to 2023-03-14 18:28:23 UTC
- Relax ordering rules for `asm!` operands (rust-lang/reference#1323)
- Improve labeled blocks documentation (rust-lang/reference#1342)
- Inline assembly: Fix repeated and unordered items in guaranteed directives (rust-lang/reference#1341)
- Clarify that free constants are always evaluated at compile time (rust-lang/reference#1328)
## rust-lang/rust-by-example
7 commits in af0998b7473839ca75563ba3d3e7fd0160bef235..cfbfd648ce33926c3490f24de9a5b56cce404b88
2023-03-21 12:05:17 UTC to 2023-03-21 11:58:20 UTC
- Fix two typos in the asm chapter (rust-lang/rust-by-example#1692)
- Change `runtime` error to `compile time` error (rust-lang/rust-by-example#1690)
- Fix tests running on non-x86 platforms. (rust-lang/rust-by-example#1687)
- Remove trailing semicolon from macro expression (rust-lang/rust-by-example#1683)
- Explained why it should not work in Chapter 4.1 (rust-lang/rust-by-example#1682)
- Fix comment to mention the correct type of error (rust-lang/rust-by-example#1680)
- Improve the content for `read_lines` (rust-lang/rust-by-example#1679)
## rust-lang/rustc-dev-guide
9 commits in b1b6d693cd1461e53de4132c1b183ace31cd36e5..d08baa166b463537229eeb737c4ccadabd83cf78
2023-03-26 17:55:53 UTC to 2023-03-14 03:50:20 UTC
- Add locale_resources (rust-lang/rustc-dev-guide#1651)
- Don't require $GITHUB_TOKEN to build locally (rust-lang/rustc-dev-guide#1652)
- bootsrapping stages overview list (rust-lang/rustc-dev-guide#1555)
- Update labels overview (rust-lang/rustc-dev-guide#1639)
- first mention of type, and add a link (rust-lang/rustc-dev-guide#1643)
- Add SIP solution for macOS users (rust-lang/rustc-dev-guide#1636)
- Add chapter on fuzzing (rust-lang/rustc-dev-guide#1646)
- Fix "Crate disambiguator" in libs-and-metadata.md (rust-lang/rustc-dev-guide#1648)
- Update rustdoc-internals.md (rust-lang/rustc-dev-guide#1644)
|
|
Always set `RUSTC_BOOTSTRAP` with `x doc`
Fixes #100060
Note that there is still a warning - the `unused_allocation` lint does not fire in stage 0, but that's just a matter of waiting for #104363 to land in beta
|
|
fortanix:raoul/EDP-107-fix_lvi_mitigation_tests_llvm_16, r=cuviper
Fix LVI test post LLVM 16 update
#109474 updated LLVM to 16. This causes the LVI mitigation tests for the `x86_64-fortanix-unknown-sgx` platform to fail. This PR fixes those tests again.
cc: `@jethrogb`
|
|
Improve documentation for E0223
See discussion in https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/Inconsistency.20in.20prohibiting.20.60Type.3A.3AAssocType.60
|
|
Clarify the 'use a constant in a pattern' error message
```rs
use std::borrow::Cow;
const ERROR_CODE: Cow<'_, str> = Cow::Borrowed("23505");
fn main() {
let x = Cow::from("23505");
match x {
ERROR_CODE => {}
}
}
```
```
error: to use a constant of type `Cow` in a pattern, `Cow` must be annotated with `#[derive(PartialEq, Eq)]`
--> src/main.rs:9:9
|
9 | ERROR_CODE => {}
| ^^^^^^^^^^
error: could not compile `playground` due to previous error
```
It seems helpful to link to StructuralEq in this message. I was a little confused, because `Cow<'_, str>` implements PartialEq and Eq, but they're not derived, which I learned is necessary for structural equality and using constants in patterns (thanks to the Rust community Discord server)
For tests, should I update every occurrence of this message? I see tests where this is still a warning and I'm not sure if I should update those.
|
|
[rust-installer] Allow long link names in tar files
Without this, users trying to run `x.py dist` under a sufficiently long path run into problems when we build the resulting tarballs due to length limits in the original tar spec. The error looks like:
Finished release [optimized + debuginfo] target(s) in 0.34s
Copying stage0 std from stage0 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu / x86_64-unknown-linux-musl)
Building stage0 tool rust-installer (x86_64-unknown-linux-gnu)
Finished release [optimized] target(s) in 0.35s
Dist rust-std-1.67.1-x86_64-unknown-linux-musl
Error: failed to generate installer
Caused by:
0: failed to tar file '/home/AAAAAAAAAAAAAA/BBBBBB/CCCC/DDD/EEEEE/FFFFFFFFFFFF/GGGGGGGGGGGGGGGG/HHHHHHHHHH/IIIIIIIIIIIIIII/JJJJJ/KKKKKKK/src/build/tmp/tarball/rust-std/x86_64-unknown-linux-musl/rust-std-1.67.1-x86_64-unknown-linux-musl/rust-std-x86_64-unknown-linux-musl/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/libc.a'
1: provided value is too long when setting link name for
Build completed unsuccessfully in 0:00:03
The fix is to make use of the widely-supported GNU tar extensions which lift this restriction. Switching to [`tar::Builder::append_link`] takes care of that for us. See also alexcrichton/tar-rs#273.
[`tar::Builder::append_link`]: https://docs.rs/tar/0.4.38/tar/struct.Builder.html#method.append_link
|
|
|
|
|
|
|
|
Use llvm 16.0.0 instead of 16.0.0-rc4 for build-clang.sh
Ref: https://github.com/rust-lang/rust/pull/107224
This PR doesn't make any update on LLVM submodule used by Rust repo, but would be super keen to update it, if necessary (https://rustc-dev-guide.rust-lang.org/backend/updating-llvm.html). LLVM 16.0.0 has been [released](https://discourse.llvm.org/t/llvm-16-0-0-release/69326) on March 18, while Rust 1.70 will become stable on June 1.
- https://releases.llvm.org/16.0.0/docs/ReleaseNotes.html
|
|
It queries not LLVM in particular but the codegen backend *in general*.
While cranelift does not provide target features, other codegen backends do.
|
|
|
|
Don't skip all directories when tidy-checking
This fixes a regression from https://github.com/rust-lang/rust/pull/108772 which basically made it that tidy style checks only `README.md` and `COMPILER_TESTS.md`.
|
|
|
|
Rollup of 6 pull requests
Successful merges:
- #109330 (rustdoc: Fix ICE for intra-doc link on intermediate re-export)
- #109354 (Remove the `NodeId` of `ast::ExprKind::Async`)
- #109445 (Allow passing the --nocapture flag to compiletest)
- #109512 (bump `askama_derive` to 0.12.1)
- #109637 (Add missing needs-asm-support annotation to ui/simple_global_asm.rs)
- #109666 (Correct ASCII case comment)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
|
|
|
|
|
|
|
|
|
|
Correct ASCII case comment
Fixes #109508
|
|
Add missing needs-asm-support annotation to ui/simple_global_asm.rs
|
|
r=Mark-Simulacrum
bump `askama_derive` to 0.12.1
Which uses syn 2.0.
cc #109302
|
|
Allow passing the --nocapture flag to compiletest
closes #109407
|
|
Remove the `NodeId` of `ast::ExprKind::Async`
This is a followup to https://github.com/rust-lang/rust/pull/104833#pullrequestreview-1314537416.
In my original attempt, I was using `LoweringContext::expr`, which was not correct as it creates a fresh `DefId`.
It now uses the correct `DefId` for the wrapping `Expr`, and also makes forwarding `#[track_caller]` attributes more explicit.
|
|
GuillaumeGomez:intermediate-reexport-intra-doc-ice, r=petrochenkov
rustdoc: Fix ICE for intra-doc link on intermediate re-export
Fixes https://github.com/rust-lang/rust/issues/109282.
This PR is based on #109266 as it includes its commit to make this work.
`@petrochenkov:` It was exactly as you predicted, adding the `DefId` to the attributes fixed the error for intermediate re-exports as well. Thanks a lot!
r? `@petrochenkov`
|
|
|
|
introducing new build config as well.
|
|
|
|
|
|
|