Commit Graph

4942 Commits

Author SHA1 Message Date
bors 03c199af8e Auto merge of #116054 - matthiaskrgr:rollup-3pusno6, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #114379 (Command: also print removed env vars)
 - #116034 (add UI test for delimiter errors)
 - #116036 (tests/ui: Split large_moves.rs and move to lint/large_assignments)
 - #116038 (Fall back to _SC_NPROCESSORS_ONLN if sched_getaffinity returns an empty mask)
 - #116039 (Account for nested `impl Trait` in TAIT)
 - #116041 (Add note to `is_known_rigid`)
 - #116049 (give FutureIncompatibilityReason variants more explicit names)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-09-22 10:34:45 +00:00
Matthias Krüger faf13dd112 Rollup merge of #116038 - the8472:panic-on-sched_getaffinity-bug, r=cuviper
Fall back to _SC_NPROCESSORS_ONLN if sched_getaffinity returns an empty mask

Followup to #115946
A gentler fix for #115868, one that doesn't panic, [suggested on zulip](https://rust-lang.zulipchat.com/#narrow/stream/259402-t-libs.2Fmeetings/topic/Meeting.202023-09-19/near/391942927)

In that situation - on the buggy kernel versions - a zero-mask means no affinities have been set so `_SC_NPROCESSORS_ONLN` provides the right value.
2023-09-22 12:15:27 +02:00
Matthias Krüger 9887dfab2c Rollup merge of #114379 - RalfJung:command-removed-env-vars, r=m-ou-se
Command: also print removed env vars

There is no real shell syntax for unsetting an env var so easily, so we have to make one up. But we already do that for showing the 'program' name so I hope that's okay here, too. No strong opinion on what that should look like, I went with `unset(VAR_NAME)` for now.
2023-09-22 12:15:25 +02:00
bors 5a4e47ebed Auto merge of #114780 - RalfJung:io-safety, r=Amanieu
add more explicit I/O safety documentation

Fixes https://github.com/rust-lang/unsafe-code-guidelines/issues/434
Cc https://github.com/rust-lang/rust/issues/114167
Cc `@Manishearth` `@sunfishcode` `@joshtriplett`
2023-09-22 08:47:51 +00:00
bors f73d376fb6 Auto merge of #115230 - Vtewari2311:mod-hurd-latest, r=b-naber
added support for GNU/Hurd

adding support for i686-unknown-hurd-gnu
2023-09-21 19:24:01 +00:00
The 8472 31cfa4a956 Fall back to _SC_NPROCESSORS_ONLN if sched_getaffinity returns an empty mask 2023-09-21 20:05:24 +02:00
Samuel Thibault dcea7709f2 added support for GNU/Hurd 2023-09-21 17:31:25 +02:00
bors cbce15c617 Auto merge of #116013 - matthiaskrgr:rollup-mv5i4fd, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - #114394 (style-guide: Document formatting of `as` casts (mostly like a binary operator))
 - #115990 (Allow anyone to set llvm-fixed-upstream)
 - #116008 (Rename BoxMeUp to PanicPayload.)
 - #116011 (Update browser-ui-test version to 0.16.10)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-09-21 01:02:00 +00:00
Matthias Krüger 6bcae4c93e Rollup merge of #116008 - m-ou-se:boxmeup, r=oli-obk
Rename BoxMeUp to PanicPayload.

"BoxMeUp" is not very clear. Let's rename that to a description of what it actually represents: a panic payload.

This PR also renames the structs that implement this trait to have more descriptive names.

Part of https://github.com/rust-lang/rust/issues/116005

r? `@oli-obk`
2023-09-21 00:11:37 +02:00
bors 3223b0b5e8 Auto merge of #115542 - saethlin:fileencoder-is-bufwriter, r=WaffleLapkin
Simplify/Optimize FileEncoder

FileEncoder is basically a BufWriter except that it exposes access to the not-written-to-yet region of the buffer so that some users can write directly to the buffer. This strategy is awesome because it lets us avoid calling memcpy for small copies, but the previous strategy was based on the writer accessing a `&mut [MaybeUninit<u8>; N]` and returning a `&[u8]` which is an API which currently mandates the use of unsafe code, making that interface in general not that appealing.

So this PR cleans up the FileEncoder implementation and builds on that general idea of direct buffer access in order to prevent `memcpy` calls in a few key places when encoding the dep graph and rmeta tables. The interface used here is now 100% safe, but with the caveat that internally we need to avoid trusting the number of bytes that the provided function claims to have written.

The original primary objective of this PR was to clean up the FileEncoder implementation so that the fix for the following issues would be easy to implement. The fix for these issues is to correctly update self.buffered even when writes fail, which I think it's easy to verify manually is now done, because all the FileEncoder methods are small.

Fixes https://github.com/rust-lang/rust/issues/115298
Fixes https://github.com/rust-lang/rust/issues/114671
Fixes https://github.com/rust-lang/rust/issues/114045
Fixes https://github.com/rust-lang/rust/issues/108100
Fixes https://github.com/rust-lang/rust/issues/106787
2023-09-20 21:47:54 +00:00
Ben Kimock 6cee6b0bde PR feedback 2023-09-20 16:49:13 -04:00
Mara Bos 76d9b3689c Rename BoxMeUp to PanicPayload. 2023-09-20 19:24:52 +02:00
bors ed33e408c5 Auto merge of #115753 - tgross35:threadinfo-refactor, r=thomcc
Refactor `thread_info` to remove the `RefCell`

`thread_info` currently uses `RefCell`-based initialization. Refactor this to use `OnceCell` instead which is more performant and better suits the needs of one-time initialization.

This is nobody's bottleneck but OnceCell checks are a single `cmp` vs. `RefCell<Option>` needing runtime logic
2023-09-20 09:55:53 +00:00
bors 42f5828b01 Auto merge of #115627 - compiler-errors:icedump-no-std, r=m-ou-se
Don't modify libstd to dump rustc ICEs

Do a much simpler thing and just dump a `std::backtrace::Backtrace` to file.

r? `@estebank` `@oli-obk`

Fixes #115610
2023-09-19 16:56:25 +00:00
Guillaume Gomez 57f1f91a9c Rollup merge of #115946 - the8472:panic-on-sched_getaffinity-bug, r=Mark-Simulacrum
panic when encountering an illegal cpumask in thread::available_parallelism

Fixes #115868 by panicking instead of returning an invalid `NonZeroUsize`
2023-09-19 11:35:52 +02:00
Guillaume Gomez 6cfc6a8705 Rollup merge of #115839 - Dirreke:bump-libc, r=dtolnay
Bump libc to 0.2.148
2023-09-19 11:35:51 +02:00
bors ae9c330629 Auto merge of #104101 - betrusted-io:xous-libstd-initial, r=bjorn3
Add initial libstd support for Xous

This patchset adds some minimal support to the tier-3 target `riscv32imac-unknown-xous-elf`. The following features are supported:

* alloc
* thread creation and joining
* thread sleeping
* thread_local
* panic_abort
* mutex
* condvar
* stdout

Additionally, internal support for the various Xous primitives surrounding IPC have been added as part of the Xous FFI. These may be exposed as part of `std::os::xous::ffi` in the future, however for now they are not public.

This represents the minimum viable product. A future patchset will add support for networking and filesystem support.
2023-09-19 07:38:20 +00:00
The 8472 a6d87246f6 panic when encountering an illegal cpumask 2023-09-18 21:51:34 +02:00
Ralf Jung 7b7caae30e get rid of duplicate primitive_docs 2023-09-18 08:17:36 +02:00
Dylan DPC 6011fd4655 Rollup merge of #115477 - kellerkindt:stabilized_int_impl, r=dtolnay
Stabilize the `Saturating` type

Closes #87920
Closes #92354

Stabilization report https://github.com/rust-lang/rust/issues/87920#issuecomment-1652346124
FCP https://github.com/rust-lang/rust/issues/87920#issuecomment-1676438885
2023-09-17 11:23:24 +00:00
Dylan DPC 7cbe7fa6bf Rollup merge of #114965 - benschulz:mpsc-drop, r=dtolnay
Remove Drop impl of mpsc Receiver and (Sync)Sender

This change removes the empty `Drop` implementations for `mpsc::Receiver`, `mpsc::Sender` and `mpsc::SyncSender`. These implementations do not specify `#[may_dangle]`, so by removing them we make `mpsc` types play nice with drop check.

This was previously attempted in [#105243](https://github.com/rust-lang/rust/pull/105243#issuecomment-1337188646) but then [abandoned due to a test failure](https://github.com/rust-lang/rust/pull/105243#issuecomment-1337227970). I've aligned the test with those for `Mutex` and `RwLock`.
2023-09-17 11:23:23 +00:00
bors d7229c479c Auto merge of #113753 - dvdsk:master, r=dtolnay
Add implementation for thread::sleep_until

- Feature gate is `thread::sleep_until`
- Tracking issue is: #113752
- APC: https://github.com/rust-lang/libs-team/issues/237
2023-09-17 00:02:45 +00:00
Matthias Krüger edfe8b4434 Rollup merge of #115329 - xzmeng:fix-std-doc, r=dtolnay
fix std::primitive doc: homogenous -> homogeneous

replace "homogenous" with the more commonly used "homogeneous".
2023-09-16 23:20:39 +02:00
Matthias Krüger cf9ce96a5b Rollup merge of #115247 - the8472:life-before-main, r=dtolnay
Document std limitations before/after main

Solves #110708
2023-09-16 23:20:39 +02:00
dirreke b8044774ff Bump libc to 0.2.148 2023-09-14 16:56:49 +08:00
Nikolay Arhipov 41ee874fa9 Disabled socketpair for Vita 2023-09-13 16:41:38 +03:00
Trevor Gross 207b6091d4 Refactor thread_info to remove the RefCell
`thread_info` currently uses `RefCell`-based initialization. Refactor
this to use `OnceCell` instead which is more performant and better suits
the needs of one-time initialization.
2023-09-11 14:11:37 -04:00
bors 9d311f9e2d Auto merge of #114967 - japaric:ja-gh114966, r=Mark-Simulacrum
QNX: pass a truncated thread name to the OS

The maximum length the thread name can have is `_NTO_THREAD_NAME_MAX`

fixes #114966
2023-09-10 23:55:38 +00:00
bors 559421e8e3 Auto merge of #114590 - ijackson:stdio-stdio-2, r=dtolnay
Allow redirecting subprocess stdout to our stderr etc. (redux)

This is the code from #88561, tidied up, including review suggestions, and with the for-testing-only CI commit removed.  FCP for the API completed in #88561.

I have made a new MR to facilitate review.  The discussion there is very cluttered and the branch is full of changes (in many cases as a result of changes to other Rust stdlib APIs since then).  Assuming this MR is approvedl we should close that one.

### Reviewer doing a de novo review

Just code review these four commits..  FCP discussion starts here: https://github.com/rust-lang/rust/pull/88561#issuecomment-1640527595

Portability tests: you can see that this branch works on Windows too by looking at the CI results in #88561, which has the same code changes as this branch but with an additional "DO NOT MERGE" commit to make the Windows tests run.

### Reviewer doing an incremental review from some version of #88561

Review the new commits since your last review.  I haven't force pushed the branch there.

git diff the two branches (eg `git diff 176886197d6..0842b69c219`).  You'll see that the only difference is in gitlab CI files.  You can also see that *this* MR doesn't touch those files.
2023-09-09 19:56:51 +00:00
Ian Jackson 436fe01895 std::process (unsupported): Implement From<io::Stdout> etc. for imp::Stdio
This implementation is wrong.  Like the impl for From<File>, it is
forced to panic because process::Stdio in unsupported/process.rs
doesn't have a suitable variant.

The root cause of the problem is that process::Stdio in
unsupported/process.rs has any information in it at all.

I'm pretty sure that it should just be a unit struct.  However,
making that build on all platforms is going to be a lot of work,
iterating through CI and/or wrestling Docker.

I don't think this extra panic is making things significantly worse.
For now I have added some TODOs.
2023-09-09 11:24:53 +01:00
Michael Goulet 8ad2379407 Don't modify libstd to dump rustc ICEs 2023-09-07 04:16:06 +00:00
Ralf Jung 98c94ec72f fix typo
Co-authored-by: Marcin S. <marcin@realemail.net>
2023-09-06 17:58:21 +02:00
bors 24bece8420 Auto merge of #115453 - ibraheemdev:patch-16, r=joshtriplett
Stabilize `io_error_other` feature

Per the FCP for https://github.com/rust-lang/rust/issues/91946.
2023-09-06 08:00:25 +00:00
bors ce798a52c3 Auto merge of #115493 - Ayush1325:raw-os-error, r=workingjubilee
Move RawOsError defination to sys

This was originally a part of https://github.com/rust-lang/rust/pull/105861, but I feel it should be its own PR since the raw os error is still unstable.
2023-09-04 08:04:00 +00:00
Matthias Krüger 487fe2e5ad Rollup merge of #115512 - Fulgen301:startupinfow, r=ChrisDenton
Command::spawn: Fix STARTUPINFOW.cb being initialized with the address of size_of

Fixes #115511.
2023-09-03 21:38:43 +02:00
Matthias Krüger 33e2e71502 Rollup merge of #115489 - saethlin:is-interrupted, r=thomcc
Use std::io::Error::is_interrupted everywhere

In https://github.com/rust-lang/rust/pull/115228 I introduced this helper and started using it, this PR uses it to replace all applicable uses of `std::io::Error::kind`. The justification is the same; for whatever reason LLVM totally flops optimizing `Error::kind` so it's nice to use it less.

FYI ``@mkroening`` I swear the hermit changes look good, but I was so sure about the previous PR.
2023-09-03 21:38:43 +02:00
Fulgen301 a8b0e44e86 Command::spawn: Fix STARTUPINFOW.cb being initialized with the address of size_of 2023-09-03 17:04:42 +02:00
Ben Kimock 642251b71f Use std::io::Error::is_interrupted everywhere 2023-09-03 09:21:10 -04:00
Ayush Singh 56df6b8189 Move RawOsError defination to sys
Signed-off-by: Ayush Singh <ayushdevel1325@gmail.com>
2023-09-03 12:35:03 +05:30
Michael Watzko ad54426945 Stabilize the Saturating type (saturating_int_impl, gh-87920)
Also stabilizes saturating_int_assign_impl, gh-92354.

And also make pub fns const where the underlying saturating_*
fns became const in the meantime since the Saturating type was
created.
2023-09-03 01:22:46 +02:00
Matthias Krüger 43e15613d1 Rollup merge of #115443 - epage:os_str, r=cuviper
feat(std): Stabilize 'os_str_bytes' feature

Closes #111544
2023-09-02 07:48:22 +02:00
Matthias Krüger b44bf0d117 Rollup merge of #115427 - solid-rs:patch/kmc-solid/is-interrupted, r=cuviper
kmc-solid: Fix `is_interrupted`

Follow-up to #115228. Fixes a build error in [`*-kmc-solid_*`](https://doc.rust-lang.org/nightly/rustc/platform-support/kmc-solid.html) Tier 3 targets.

```
error[E0603]: function `is_interrupted` is private
  --> library\std\src\sys\solid\mod.rs:77:12
   |
77 |     error::is_interrupted(code)
   |            ^^^^^^^^^^^^^^ private function
   |
note: the function `is_interrupted` is defined here
  --> library\std\src\sys\solid\error.rs:35:1
   |
35 | fn is_interrupted(er: abi::ER) -> bool {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```
2023-09-02 07:48:22 +02:00
Ed Page 30292bb68e fix(std): Rename os_str_bytes to encoded_bytes 2023-09-01 19:33:16 -05:00
Ibraheem Ahmed 7abfc57ea1 stabilize io_error_other feature 2023-09-01 16:04:41 -04:00
Ed Page 9aee1de612 feat(std): Stabilize 'os_str_bytes' feature
Closes #111544
2023-09-01 11:13:45 -05:00
bors dc348dbd90 Auto merge of #114448 - SteveLauC:std_fs_read_doc, r=Mark-Simulacrum
docs: improve std::fs::read doc

#### What does this PR do

1. Rephrase a confusing sentence in the document of `std::fs::read()`

-----

Closes #114432

cc `@Dexus0` `@saethlin`
2023-09-01 05:25:44 +00:00
Tomoaki Kawada eb627ea339 kmc-solid: Refactor is_interrupted to avoid integer overflow 2023-09-01 11:55:48 +09:00
Steve Lau 0e270b1a97 docs: improve std::fs::read doc 2023-09-01 10:54:37 +08:00
Tomoaki Kawada dc37959ce8 kmc-solid: Directly delegate to net::is_interrupted in std::sys::solid::is_interrupted 2023-09-01 11:53:15 +09:00
Ralf Jung 1290cd432d further expand on Arc and Box analogy 2023-08-29 21:08:46 +02:00