269721 Commits

Author SHA1 Message Date
1889f07f89 alnyan/yggdrasil: fsync()/truncate()/set_times() 2025-01-06 10:50:51 +02:00
82cfeff7e1 alnyan/yggdrasil: implement join_paths()/split_paths() 2025-01-06 10:13:30 +02:00
127b7e16a5 alnyan/yggdrasil: add rt functions for env directories 2025-01-05 14:45:38 +02:00
f753410498 alnyan/yggdrasil: use SystemTime::now() instead of struct syntax 2025-01-05 14:24:31 +02:00
e0acd83bdb alnyan/yggdrasil: use ABI functions for SystemTime 2025-01-05 12:25:38 +02:00
e81d391d35 alnyan/yggdrasil: implement getcwd() 2025-01-03 19:08:41 +02:00
8099ae1760 alnyan/yggdrasil: better fd inheritance in spawn 2025-01-03 15:28:51 +02:00
7e037c9d4e alnyan/yggdrasil: symlink creation 2025-01-02 20:06:03 +02:00
034343146e alnyan/yggdrasil: implement fs::copy() + OpenOptionsExt 2024-12-29 18:45:08 +02:00
9a21c79df2 alnyan/yggdrasil: implement rename() syscall 2024-12-29 15:32:52 +02:00
97aa48417d alnyan/yggdrasil: implement SystemTime + atime/ctime/mtime 2024-12-22 15:22:52 +02:00
7754945c27 alnyan/yggdrasil: sync with ABI updates 2024-12-07 12:57:26 +02:00
c4ac4dbf69 alnyan/yggdrasil: change wait_process ABI 2024-11-30 12:42:37 +02:00
5f835dd5f3 alnyan/yggdrasil: use yggdrasil-rt for threads 2024-11-20 17:56:18 +02:00
e3f86666c4 alnyan/yggdrasil: rely more on runtime for init 2024-11-19 15:20:35 +02:00
58c034e26f alnyan/yggdrasil: fix i686 target 2024-11-19 15:19:57 +02:00
07ec0db970 alnyan/yggdrasil: add flags to map_memory 2024-11-14 16:24:59 +02:00
e1a6fab885 alnyan/yggdrasil: prevent crash loop when handling signals 2024-11-06 20:06:29 +02:00
f076438d64 alnyan/yggdrasil: better pipes 2024-11-06 19:40:52 +02:00
de2085ff0a alnyan/yggdrasil: use helper macro for get_socket_option 2024-11-01 11:45:17 +02:00
338dad6aa8 alnyan/yggdrasil: remove some todos in networking 2024-11-01 01:21:47 +02:00
d6da94083e alnyan/yggdrasil: get rid of some todos 2024-11-01 00:27:12 +02:00
56469a9118 alnyan/yggdrasil: migrate code from 1.74.0 2024-10-31 23:23:31 +02:00
749af90810 alnyan/yggdrasil: add most of std::os::yggdrasil 2024-10-31 16:10:24 +02:00
7b378708ca alnyan/yggdrasil: fix link issues 2024-10-31 15:40:06 +02:00
86bcec56ed alnyan/yggdrasil: add Yggdrasil x86-64/aarch64 targets 2024-10-31 15:39:08 +02:00
Boxy
c28fd8f907 the unvacationer 2024-10-31 15:39:08 +02:00
Henry Jiang
429dcfaf58 fix libc call from i8 to u8 2024-10-31 15:39:08 +02:00
Nicholas Nethercote
897073c5ec Return label from write_node_label.
Instead of appending an empty label. Because it's conceptually simpler.
2024-10-31 15:39:08 +02:00
Nicholas Nethercote
690bf1b33d Simplify graphviz::Formatter.
`Formatter` currently has a `RefCell<Option<Results>>` field. This is so
the `Results` can be temporarily taken and put into a `ResultsCursor`
that is used by `BlockFormatter`, and then put back, which is messy.

This commit changes `Formatter` to have a `RefCell<ResultsCursor>` and
`BlockFormatter` to have a `&mut ResultsCursor`, which greatly
simplifies the code at the `Formatter`/`BlockFormatter` interaction
point in `Formatter::node_label`. It also means we construct a
`ResultsCursor` once per `Formatter`, instead of once per `node_label`
call.

The commit also:
- documents the reason for the `RefCell`;
- adds a `Formatter::body` method, replacing the `Formatter::body`
  field.
2024-10-31 15:39:08 +02:00
Nicholas Nethercote
e7fe9d5a8f Rename BlockFormatter::results as BlockFormatter::cursor.
Because it's a `ResultsCursor`, not a `Results`. I find this easier to
read and understand.
2024-10-31 15:39:08 +02:00
许杰友 Jieyou Xu (Joe)
8a70c8acb8 compiletest: improve robustness of LLVM version handling 2024-10-31 15:39:08 +02:00
Guillaume Gomez
ddf6ac5d7e Add regression tests for #130681 2024-10-31 15:39:08 +02:00
Guillaume Gomez
62d50e8dae Remove usage of allow(unused) attribute on no_run doctests 2024-10-31 15:39:08 +02:00
Adrian Taylor
a2a66a468f Switch to comparing indices instead of names. 2024-10-31 15:39:08 +02:00
Adrian Taylor
ce65cae84e Reject generic self types.
The RFC for arbitrary self types v2 declares that we should reject
"generic" self types. This commit does so.

The definition of "generic" was unclear in the RFC, but has been
explored in
https://github.com/rust-lang/rust/issues/129147
and the conclusion is that "generic" means any `self` type which
is a type parameter defined on the method itself, or references
to such a type.

This approach was chosen because other definitions of "generic"
don't work. Specifically,
* we can't filter out generic type _arguments_, because that would
  filter out Rc<Self> and all the other types of smart pointer
  we want to support;
* we can't filter out all type params, because Self itself is a
  type param, and because existing Rust code depends on other
  type params declared on the type (as opposed to the method).

This PR decides to make a new error code for this case, instead of
reusing the existing E0307 error. This makes the code a
bit more complex, but it seems we have an opportunity to provide
specific diagnostics for this case so we should do so.

This PR filters out generic self types whether or not the
'arbitrary self types' feature is enabled. However, it's believed
that it can't have any effect on code which uses stable Rust, since
there are no stable traits which can be used to indicate a valid
generic receiver type, and thus it would have been impossible to
write code which could trigger this new error case.
It is however possible that this could break existing code which
uses either of the unstable `arbitrary_self_types` or
`receiver_trait` features. This breakage is intentional; as
we move arbitrary self types towards stabilization we don't want
to continue to support generic such types.

This PR adds lots of extra tests to arbitrary-self-from-method-substs.
Most of these are ways to trigger a "type mismatch" error which
9b82580c73/compiler/rustc_hir_typeck/src/method/confirm.rs (L519)
hopes can be minimized by filtering out generics in this way.
We remove a FIXME from confirm.rs suggesting that we make this change.
It's still possible to cause type mismatch errors, and a subsequent
PR may be able to improve diagnostics in this area, but it's harder
to cause these errors without contrived uses of the turbofish.

This is a part of the arbitrary self types v2 project,
https://github.com/rust-lang/rfcs/pull/3519
https://github.com/rust-lang/rust/issues/44874

r? @wesleywiser
2024-10-31 15:39:08 +02:00
bors
298c7462c3 Auto merge of #130860 - tmandry:fix-directives, r=jieyouxu
Fix directives for lint-non-snake-case-crate

This test fails on targets without unwinding or with `--target-rustcflags=-Cpanic=abort` because the proc macro was compiled as the target, not the host. Some targets were explicitly disabled to pass CI, but these directives are more general.

* `needs-dynamic-linking` is self explanatory
* `force-host` for proc macros
* `no-prefer-dynamic` is apparently also used for proc macros

Note that `needs-unwind` can also be useful for situations other than proc macros where unwinding is necessary.

r? `@jieyouxu`

try-job: test-various
2024-10-30 10:28:56 +00:00
bors
8b9f0f9c1c Auto merge of #132349 - matthiaskrgr:rollup-9g6s4p2, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #129394 (Don't lint `irrefutable_let_patterns` on leading patterns if `else if` let-chains)
 - #131856 (TypingMode: merge intercrate, reveal, and defining_opaque_types)
 - #132322 (powerpc64-ibm-aix: update maintainters)
 - #132327 (Point to Fuchsia team in platform support docs)
 - #132332 (Use `token_descr` more in error messages)
 - #132338 (Remove `Engine`)
 - #132340 (cg_llvm: Consistently use safe wrapper function `set_section`)
 - #132342 (cg_llvm: Clean up FFI calls for operand bundles)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-10-30 07:49:46 +00:00
Matthias Krüger
879c4d5ccc
Rollup merge of #132342 - Zalathar:operand-bundle, r=workingjubilee
cg_llvm: Clean up FFI calls for operand bundles

All of these FFI functions have equivalents in the stable LLVM-C API, though `LLVMBuildCallBr` requires a temporary polyfill on LLVM 18.

This PR also creates a clear split between `OperandBundleOwned` and `OperandBundle`, and updates the internals of the owner to be a little less terrifying.
2024-10-30 06:40:38 +01:00
Matthias Krüger
cf2cc010a3
Rollup merge of #132340 - Zalathar:set-section, r=compiler-errors
cg_llvm: Consistently use safe wrapper function `set_section`

Follow-up to #131962 and https://github.com/rust-lang/rust/pull/132260#discussion_r1821626260.

To avoid too much scope creep, I've deliberately kept the changes to `LLVMRustGetSliceFromObjectDataByName` as minimal as possible.
2024-10-30 06:40:37 +01:00
Matthias Krüger
2055237e8f
Rollup merge of #132338 - nnethercote:rm-Engine, r=nnethercote
Remove `Engine`

It's just unnecessary plumbing. Removing it results in less code, and simpler code.

r? ``@cjgillot``
2024-10-30 06:40:37 +01:00
Matthias Krüger
2480e3bbc5
Rollup merge of #132332 - nnethercote:use-token_descr-more, r=estebank
Use `token_descr` more in error messages

This is the first two commits from #124141, put into their own PR to get things rolling. Commit messages have the details.

r? ``@estebank``
cc ``@petrochenkov``
2024-10-30 06:40:36 +01:00
Matthias Krüger
af33bc3ec0
Rollup merge of #132327 - djkoloski:redirect_fuchsia_maintainers, r=compiler-errors
Point to Fuchsia team in platform support docs

This consolidates our docs into a single source of truth for the current Fuchsia maintainers.

r? ```@tmandry```
2024-10-30 06:40:36 +01:00
Matthias Krüger
864837b084
Rollup merge of #132322 - daltenty:daltenty/update-aix-maintainters, r=workingjubilee
powerpc64-ibm-aix: update maintainters

Chaofan (`@ecnelises)` and Kai (`@bzEq)` will be passing over maintainership for the target over to David Tenty (`@daltenty)` and Chris Cambly (`@gilamn5tr)`
2024-10-30 06:40:35 +01:00
Matthias Krüger
305508f969
Rollup merge of #131856 - lcnr:typing-mode, r=compiler-errors
TypingMode: merge intercrate, reveal, and defining_opaque_types

This adds `TypingMode` and uses it in most places. We do not yet remove `Reveal` from `param_env`s. This and other future work as tracked in #132279 and via `FIXME`s.

Fetching the `TypingMode` of the `InferCtxt` asserts that the `TypingMode` agrees with `ParamEnv::reveal` to make sure we don't introduce any subtle bugs here. This will be unnecessary once `ParamEnv::reveal` no longer exists.

As the `TypingMode` is now a part of the query input, I've merged the coherence and non-coherence caches for the new solver. I've also enabled the local `infcx` cache during coherence by clearing the cache when forking it with a different `TypingMode`.

#### `TypingMode::from_param_env`

I am using this even in cases where I know that the `param_env` will always be `Reveal::UserFacing`. This is to make it easier to correctly refactor this code in the future, any time we use `Reveal::UserFacing` in a body while not defining its opaque types is incorrect and should use a `TypingMode` which only reveals opaques defined by that body instead, cc #124598

r? ``@compiler-errors``
2024-10-30 06:40:34 +01:00
Matthias Krüger
87d348b333
Rollup merge of #129394 - Jarcho:irrefutable_let_patterns, r=Nadrieril
Don't lint `irrefutable_let_patterns` on leading patterns if `else if` let-chains

fixes #128661

Is there any preference where the test goes? There looks to be several places it could fit.
2024-10-30 06:40:34 +01:00
Zalathar
c3071590ab Clean up FFI calls for operand bundles 2024-10-30 13:26:24 +11:00
bors
16422dbd89 Auto merge of #132238 - Urgau:midpoint-i64-hackers-impl, r=joboet
Use Hacker's Delight impl in `i64::midpoint` instead of wide `i128` impl

This PR switches `i64::midpoint` and (`isize::midpoint` where `isize == i64`) to using our Hacker's Delight impl instead of wide `i128` implementation.

As LLVM seems to be outperformed by the complexity of signed 128-bits number compared to our Hacker's Delight implementation.[^1]

It doesn't seems like it's an improvement for the other sizes[^2], so we let them with the wide implementation.

[^1]: https://rust.godbolt.org/z/ravE75EYj
[^2]: https://rust.godbolt.org/z/fzr171zKh

r? libs
2024-10-30 02:26:18 +00:00
Zalathar
65ff2a6ad7 Consistently use safe wrapper function set_section 2024-10-30 11:38:20 +11:00
Tyler Mandry
d942113fdb Fix directives for lint-non-snake-case-crate
This test fails on targets without unwinding because the proc macro was
compiled as the target, not the host. Some targets were explicitly
disabled to pass CI, but these directives are more general.

Fixes Fuchsia tests.
2024-10-29 16:40:06 -07:00