Commit graph

13395 commits

Author SHA1 Message Date
Trevor Gross
b1b1dd17d3 Adjust licensing exceptions for WASM components
Recent versions of wasm-tools are now Apache-2.0 or MIT or Apache-2.0
with the LLVM exception, rather than strictly Apache-2.0 with the LLVM
exception. The only component with the exception has moved to a new
dependency `wasi-preview1-component-adapter-provider`.
2024-08-18 14:01:30 -05:00
Trevor Gross
f69e74e2f5 Update some dependency versions that allow better licensing
With the new resolver, a few dependencies get brought in twice with
different licenses. For example, all dependencies from `wasm-tools`
gained Apache-2.0 and MIT options, and with the v2 resolver we were
using one version from before and one version from after this change.
This made tidy's license check difficult.

Update some minimum versions to remove duplicate dependencies and smooth
out license checking.
2024-08-18 13:59:27 -05:00
bors
6de928dce9 Auto merge of #126450 - madsmtm:promote-mac-catalyst, r=Mark-Simulacrum
Promote Mac Catalyst targets to Tier 2, and ship with rustup

Promote the Mac Catalyst targets `x86_64-apple-ios-macabi` and `aarch64-apple-ios-macabi` to Tier 2, as per [the MCP](https://github.com/rust-lang/compiler-team/issues/761) (see that for motivation and details).

These targets are now also distributed with rustup, although without the sanitizer runtime, as that currently has trouble building, see https://github.com/rust-lang/rust/issues/129069.
2024-08-18 15:52:58 +00:00
bors
f04f6ca36d Auto merge of #129230 - RalfJung:miri-sync, r=RalfJung
Miri subtree update

r? `@ghost`
2024-08-18 13:05:32 +00:00
Ralf Jung
0708b289b7 fix build with bootstrap compiler 2024-08-18 13:36:11 +02:00
tiif
483120d6ce Add EPOLLER support 2024-08-18 18:18:07 +08:00
bors
93700208a8 Auto merge of #3818 - tiif:loseevents, r=RalfJung
epoll: iterate through output buffer then fetch an event from ready list

Fixes #3812
2024-08-18 09:45:00 +00:00
tiif
6702f158fd epoll: iterate through output buffer then fetch an event from ready list 2024-08-18 17:12:57 +08:00
bors
8f2768b507 Auto merge of #3825 - RalfJung:epoll-miri, r=RalfJung
epoll test_socketpair_read: explicitly check real and Miri behavior
2024-08-18 09:09:58 +00:00
Ralf Jung
e614d7d51b epoll test_socketpair_read: explicitly check real and Miri behavior 2024-08-18 10:49:56 +02:00
Ralf Jung
f918de8c4a make sure we read all arguments before returning early 2024-08-18 10:41:58 +02:00
tiif
8ae118dc0a Move the maxevents.try_into().unwrap() after value check 2024-08-18 13:36:56 +08:00
tiif
c0e799db1a Set EINVAL for epoll_wait maxevent value 0 2024-08-18 13:11:06 +08:00
bors
37d56daac6 Auto merge of #128771 - carbotaniuman:stabilize_unsafe_attr, r=nnethercote
Stabilize `unsafe_attributes`

# Stabilization report

## Summary

This is a tracking issue for the RFC 3325: unsafe attributes

We are stabilizing `#![feature(unsafe_attributes)]`,  which makes certain attributes considered 'unsafe', meaning that they must be surrounded by an `unsafe(...)`, as in `#[unsafe(no_mangle)]`.

RFC: rust-lang/rfcs#3325
Tracking issue: #123757

## What is stabilized

### Summary of stabilization

Certain attributes will now be designated as unsafe attributes, namely, `no_mangle`, `export_name`, and `link_section` (stable only), and these attributes will need to be called by surrounding them in `unsafe(...)` syntax. On editions prior to 2024, this is simply an edition lint, but it will become a hard error in 2024. This also works in `cfg_attr`, but `unsafe` is not allowed for any other attributes, including proc-macros ones.

```rust
#[unsafe(no_mangle)]
fn a() {}

#[cfg_attr(any(), unsafe(export_name = "c"))]
fn b() {}
```

For a table showing the attributes that were considered to be included in the list to require unsafe, and subsequent reasoning about why each such attribute was or was not included, see [this comment here](https://github.com/rust-lang/rust/pull/124214#issuecomment-2124753464)

## Tests

The relevant tests are in `tests/ui/rust-2024/unsafe-attributes` and `tests/ui/attributes/unsafe`.
2024-08-17 22:48:42 +00:00
tiif
56eee8e870 Apply test fix
- Fix epoll_ctl_del test
- Simplified epoll_ctl_mod test and add test_no_notification_for_unregister_flag
- Use assert_eq(0) for epoll_ctl
2024-08-18 01:19:07 +08:00
bors
6ac5bbbe02 Auto merge of #3823 - RalfJung:sync, r=RalfJung
simplify synchronization object creation logic
2024-08-17 15:42:23 +00:00
Ralf Jung
7c811203cd simplify synchronization object creation logic 2024-08-17 17:39:22 +02:00
Ralf Jung
bd4ef64a60 run TLS tests on Solarish 2024-08-17 16:44:05 +02:00
Ralf Jung
34e8245e4c tls_leak_main_thread_allowed: make test check target_thread_local 2024-08-17 16:41:53 +02:00
bors
0058752986 Auto merge of #3819 - RalfJung:epoll-test, r=RalfJung
epoll test: further clean up check_epoll_wait

Given that `check_epoll_wait` compared the length of the two slices, I don't think it was possible for it to ever return `false`. It's also strange to have some requirements checked inside the function and some checked by the caller, so let's just move it all inside the function.

Cc `@tiif` -- did I miss anything?
2024-08-17 10:24:29 +00:00
bors
a4222b97ca Auto merge of #3815 - RalfJung:pipe, r=RalfJung
implement pipe and pipe2

Fixes https://github.com/rust-lang/miri/issues/3746
2024-08-17 09:59:37 +00:00
Ralf Jung
465df5656f epoll test: further clean up check_epoll_wait 2024-08-17 11:47:29 +02:00
bors
db9a97fbb0 Auto merge of #3817 - rust-lang:rustup-2024-08-17, r=RalfJung
Automatic Rustup
2024-08-17 09:33:36 +00:00
Ralf Jung
02a11668a3 SocketPair -> AnonSocket, because a single FD is not a pair 2024-08-17 11:32:19 +02:00
Ralf Jung
5d59bdefb4 test cleanup 2024-08-17 11:32:18 +02:00
Ralf Jung
5402be8f99 socketpair: test behavior when one end got closed 2024-08-17 11:32:18 +02:00
Ralf Jung
99d742e9b0 implement pipe and pipe2 2024-08-17 11:32:17 +02:00
bors
78dfb8a108 Auto merge of #3814 - tiif:epollhup, r=RalfJung
Add epoll EPOLLHUP flag support

Related discussion in https://github.com/rust-lang/miri/issues/3811#issuecomment-2293854742.

This PR added support for ``EPOLLHUP`` flag.
2024-08-17 08:57:07 +00:00
Ralf Jung
cab81d3fa9
extend comments on HUP vs RDHUP 2024-08-17 10:36:46 +02:00
bors
94e57fcf54 Auto merge of #3807 - RalfJung:projects, r=oli-obk
add 'project' process guidlines for larger contributions

Fixes https://github.com/rust-lang/miri/issues/3443

I am honestly not entirely sure what the consensus from what issue was. I feel like the epoll PR worked reasonably well, and not having been closely involved I am not sure which process `@oli-obk` followed there. Compared to the first draft in #3443 I tried to make this less formal and framed more as guidelines than hard rules.
2024-08-17 08:30:56 +00:00
The Miri Cronjob Bot
dc0faecfcf Merge from rustc 2024-08-17 05:02:50 +00:00
The Miri Cronjob Bot
23b57e8994 Preparing for merge from rustc 2024-08-17 04:54:54 +00:00
tiif
f9a7d6ec6f Move epoll_ready_events.epollhup = true up 2024-08-17 12:02:23 +08:00
Weihang Lo
6c201561ac
Update cargo 2024-08-16 21:18:24 -04:00
bors
506052d49d Auto merge of #129162 - matthiaskrgr:rollup-r0oxdev, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #128990 (Re-enable more debuginfo tests on freebsd)
 - #129042 (Special-case alias ty during the delayed bug emission in `try_from_lit`)
 - #129086 (Stabilize `is_none_or`)
 - #129149 (Migrate `validate_json.py` script to rust in `run-make/rustdoc-map-file` test)
 - #129154 (Fix wrong source location for some incorrect macro definitions)
 - #129161 (Stabilize std:🧵:Builder::spawn_unchecked)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-08-16 20:19:00 +00:00
tiif
0951107881 Add epoll EPOLLHUP flag support 2024-08-17 02:08:31 +08:00
Matthias Krüger
7177a0eeef
Rollup merge of #129149 - GuillaumeGomez:migrate-python-script, r=jieyouxu
Migrate `validate_json.py` script to rust in `run-make/rustdoc-map-file` test

This PR fixes the FIXME I added for future-me who become present-me. :')

Since there are multiple `run-make` tests using python scripts, I suppose more of them will migrate to Rust, hence why I added the `jzon` public reexport to the `run-make-support` crate.

cc `@jieyouxu`
r? `@Kobzol`
2024-08-16 19:58:59 +02:00
Matthias Krüger
9d57e46f81
Rollup merge of #129086 - slanterns:is_none_or, r=dtolnay
Stabilize `is_none_or`

Closes: https://github.com/rust-lang/rust/issues/126383.

`@rustbot` label: +T-libs-api

r? libs-api
2024-08-16 19:58:58 +02:00
bors
83f1b38082 Auto merge of #3809 - RalfJung:fd-refcell, r=oli-obk
FD: remove big surrounding RefCell, simplify socketpair

A while ago, I added the big implicit RefCell for all file descriptions since it avoided interior mutability in `eventfd`. However, this requires us to hold the RefCell "lock" around the entire invocation of the `read`/`write` methods on an FD, which is not great. For instance, if an FD wants to update epoll notifications from inside its `read`/`write`, it is very crucial that the notification check does not end up accessing the FD itself. Such cycles, however, occur naturally:
- eventfd wants to update notifications for itself
- socketfd wants to update notifications on its "peer", which will in turn check *its* peer to see whether that buffer is empty -- and my peer's peer is myself.

This then also lets us simplify socketpair, which currently holds a weak reference to its peer *and* a weak reference to the peer's buffer -- that was previously needed precisely to avoid this issue.
2024-08-16 16:14:42 +00:00
bors
1a51dd9247 Auto merge of #3754 - Vanille-N:master, r=RalfJung
Make unused states of Reserved unrepresentable

In the [previous TB update](https://github.com/rust-lang/miri/pull/3742) we discovered that the existence of `Reserved + !ty_is_freeze + protected` is undesirable.

This has the side effect of making `Reserved { conflicted: true, ty_is_freeze: false }` unreachable.
As such it is desirable that this state would also be unrepresentable.

This PR eliminates the unused configuration by changing
```rs
enum PermissionPriv {
    Reserved { ty_is_freeze: bool, conflicted: bool },
    ...
}
```
into
```rs
enum PermissionPriv {
    ReservedFrz { conflicted: bool },
    ReservedIM,
    ...
}
```
but this is not the only solution and `Reserved(Activable | Conflicted | InteriorMut)` could be discussed.
In addition to making the unreachable state not representable anymore, this change has the nice side effect of enabling `foreign_read` to no longer depend explicitly on the `protected` flag.

Currently waiting for
- `@JoJoDeveloping` to confirm that this is the same representation of `Reserved` as what is being implemented in simuliris,
- `@RalfJung` to approve that this does not introduce too much overhead in the trusted codebase.
2024-08-16 15:48:55 +00:00
Ralf Jung
883e4773b3 explain the behavior on closed peers 2024-08-16 17:44:01 +02:00
Ralf Jung
9184eb54ea more epoll test cleanup 2024-08-16 16:58:49 +02:00
Ralf Jung
edd1efb136 comment and test regarding notifications on writes that dont change readiness 2024-08-16 16:55:57 +02:00
Ralf Jung
b4ab820e5e epoll test cleanup 2024-08-16 16:55:56 +02:00
Guillaume Gomez
6b1637c477 Reexport serde_json crate from run-make-support to give it access to run-make tests 2024-08-16 16:32:07 +02:00
Guillaume Gomez
a2a4f2bcb5 Migrate validate_json.py script to rust in run-make/rustdoc-map-file test 2024-08-16 16:32:06 +02:00
Ralf Jung
34aec7c206 make ecx.check_and_update_readiness a truly private helper function 2024-08-16 16:18:59 +02:00
Ralf Jung
82c39ffda7 buf_has_writer is not needed any more 2024-08-16 16:18:59 +02:00
Ralf Jung
17cfbc6fa3 FD: remove big surrounding RefCell, simplify socketpair 2024-08-16 16:18:59 +02:00
Oneirical
3c68b113c0 rewrite reproducible-build to rmake 2024-08-16 10:10:24 -04:00