Commit Graph

122 Commits

Author SHA1 Message Date
bors
e69f14b14c Auto merge of #114038 - Stargateur:108277, r=ChrisDenton
unix time module now return result

First try to fix #108277 without break anything.

if anyone who read this know tips to be able to check compilation for different target I could use some help. So far I installed many target with rustup but `./x check --all-targets` doesn't seem to use them.

TODO:

- [x] better error
- [ ] test, how ?

`@rustbot` label -S-waiting-on-author +S-waiting-on-review
2024-03-14 10:05:32 +00:00
Arthur Carcano
e78851813e Allow dead code in thread local dtor
The dead_code lint was previously eroneously missing this dead code.
Since this lint bug has been fixed, the unused field need
to be removed or marked as `#[allow(dead_code)]`.

Given the nature of this code, I don't feel confident removing the field
so it is only marked as allow(dead_code).
2024-03-12 10:59:41 +01:00
David Carlier
6a16638de6 std::rand: fix dragonflybsd after #121942. 2024-03-12 00:54:57 +00:00
bors
e919669d42 Auto merge of #122331 - jhpratt:rollup-cbl8xsy, r=jhpratt
Rollup of 9 pull requests

Successful merges:

 - #121148 (Add slice::try_range)
 - #121633 (Win10: Use `GetSystemTimePreciseAsFileTime` directly)
 - #121840 (Expose the Freeze trait again (unstably) and forbid implementing it manually)
 - #121907 (skip sanity check for non-host targets in `check` builds)
 - #122002 (std::threads: revisit stack address calculation on netbsd.)
 - #122108 (Add `target.*.runner` configuration for targets)
 - #122298 (RawVec::into_box: avoid unnecessary intermediate reference)
 - #122315 (Allow multiple `impl Into<{D,Subd}iagMessage>` parameters in a function.)
 - #122326 (Optimize `process_heap_alloc`)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-03-11 10:22:10 +00:00
Jacob Pratt
b3ac6fab3d Rollup merge of #122002 - devnexen:thread_stack_netbsd_fix, r=workingjubilee,riastradh
std::threads: revisit stack address calculation on netbsd.

like older linux glibc versions, we need to get the guard size
 and increasing the stack's bottom address accordingly.
2024-03-11 03:47:20 -04:00
bors
6639672554 Auto merge of #117156 - jmillikin:os-unix-socket-ext, r=Amanieu,dtolnay
Convert `Unix{Datagram,Stream}::{set_}passcred()` to per-OS traits

These methods are the pre-stabilized API for obtaining peer credentials from an `AF_UNIX` socket, part of the `unix_socket_ancillary_data` feature.

Their current behavior is to get/set one of the `SO_PASSCRED` (Linux), `LOCAL_CREDS_PERSISTENT` (FreeBSD), or `LOCAL_CREDS` (NetBSD) socket options. On other targets the `{set_}passcred()` methods do not exist.

There are two problems with this approach:

1. Having public methods only exist for certain targets isn't permitted in a stable `std` API.

2. These options have generally similar purposes, but they are non-POSIX and their details can differ in subtle and surprising ways (such as whether they continue to be set after the next call to `recvmsg()`).

Splitting into OS-specific extension traits is the preferred solution to both problems.
2024-03-11 07:46:01 +00:00
Matthias Krüger
f6d47dd1f1 Rollup merge of #121942 - devnexen:getrandom_for_dfbsd, r=joboet
std::rand: enable getrandom for dragonflybsd too.
2024-03-10 10:58:16 +01:00
David Carlier
ffdd97f791 further changes from feedback 2024-03-08 22:39:20 +00:00
Jubilee Young
9da004ea19 Dynamically size sigaltstk in std
On modern Linux with Intel AMX and 1KiB matrices,
Arm SVE with potentially 2KiB vectors,
and RISCV Vectors with up to 16KiB vectors,
we must handle dynamic signal stack sizes.

We can do so unconditionally by using getauxval,
but assuming it may return 0 as an answer,
thus falling back to the old constant if needed.
2024-03-06 10:11:39 -08:00
Antoine PLASKOWSKI
408c0ea216 unix time module now return result 2024-03-06 10:08:29 +01:00
David Carlier
7ff3bade73 std::threads: revisit stack address calculation on netbsd.
like older linux glibc versions, we need to get the guard size
 and increasing the stack's bottom address accordingly.
2024-03-04 22:31:28 +00:00
David Carlier
d416a22e8a std::rand: enable getrandom for dragonflybsd too. 2024-03-03 15:27:35 +00:00
Matthias Krüger
0f544f280a Rollup merge of #121666 - ChrisDenton:thread-name, r=cuviper
Use the OS thread name by default if `THREAD_INFO` has not been initialized

Currently if `THREAD_INFO` hasn't been initialized then the name will be set to `None`.  This PR changes it to use the OS thread name by default. This mostly affects foreign threads at the moment but we could expand this to make more use of the OS thread name in the future.

Note: I've only implemented `Thread::get_name` for windows, linux and macos (and macos adjacent) targets. The rest just return `None`.
2024-03-02 16:53:14 +01:00
bors
6f435eb0eb Auto merge of #114016 - krtab:delete_sys_memchr, r=workingjubilee
Delete architecture-specific memchr code in std::sys

Currently all architecture-specific memchr code is only used in `std::io`. Most of the actual `memchr` capacity exposed to the user through the slice API is instead implemented in `core::slice::memchr`.

Hence this commit deletes `memchr` from `std::sys[_common]` and replace calls to it by calls to `core::slice::memchr` functions. This deletes `(r)memchr` from the list of symbols linked to libc.

The interest of putting architecture specific code back in core is linked to the discussion to be had in #113654
2024-03-01 00:45:47 +00:00
Guillaume Gomez
2492f93222 Rollup merge of #121691 - janstarke:handle-missing-creation-time-as-unsupported, r=cuviper
handle unavailable creation time as `io::ErrorKind::Unsupported`
2024-02-28 16:04:53 +01:00
Jan Starke
7e10a5c724 handle unavailable creation time as io::ErrorKind::Unsupported 2024-02-27 17:45:20 +01:00
bors
8790c3cc7c Auto merge of #119636 - devnexen:linux_tcp_defer_accept, r=m-ou-se
os::net: expanding TcpStreamExt for Linux with `tcp_deferaccept`.

allows for socket to process only when there is data to process, the option sets a number of seconds until the data is ready.
2024-02-27 16:00:39 +00:00
Chris Denton
7c41af290f Use the OS thread name by default for the current thread 2024-02-27 11:28:10 -03:00
Elliot Roberts
3a6af84fca change std::process to drop supplementary groups based on CAP_SETGID 2024-02-26 23:11:28 +03:00
Pavel Grigorenko
ff187a92d8 library: use addr_of! 2024-02-24 16:02:17 +03:00
Florian Bartels
4f66783240 Make timespec capping public to crate::sys
It is used in:

- `library/std/src/sys/locks/condvar/pthread.rs`
- `library/std/src/sys/pal/unix/thread_parking/pthread.rs`
2024-02-23 11:43:27 +01:00
David Carlier
85bf4439e6 os::net: expanding TcpStreamExt for Linux with tcp_deferaccept.
allows for socket to process only when there is data to process,
the option sets a number of seconds until the data is ready.
2024-02-21 20:59:15 +00:00
Ralf Jung
b58f647d54 rename ptr::invalid -> ptr::without_provenance
also introduce ptr::dangling matching NonNull::dangling
2024-02-21 20:15:52 +01:00
Arthur Carcano
88ac7ace56 Delete architecture-specific memchr code in std::sys
Currently all architecture-specific memchr code is only used in
`std::io`. Most of the actual `memchr` capacity exposed to the user
through the slice API is instead implemented in core::slice::memchr.

Hence this commit deletes memchr from std::sys[_common] and replace
calls to it by calls to core::slice::memchr functions. This deletes
(r)memchr from the list of symbols linked to libc.
2024-02-20 22:27:39 +01:00
bors
ccb1415eac Auto merge of #121177 - joboet:move_pal_locks, r=ChrisDenton
Move locks to `sys`

Part of #117276.

r? `@ChrisDenton`
2024-02-19 18:04:28 +00:00
David Thomas
dbb15fb45d Dyn erase at call site 2024-02-18 17:58:52 +00:00
bors
405b22f1a3 Auto merge of #120741 - a1phyr:safe_buffer_advance, r=m-ou-se
Make `io::BorrowedCursor::advance` safe

This also keeps the old `advance` method under `advance_unchecked` name.

This makes pattern like `std::io::default_read_buf` safe to write.
2024-02-17 00:23:15 +00:00
joboet
491d1a7664 std: move locks to sys on UNIX and other futex platforms 2024-02-16 12:10:49 +01:00
bors
1be468815c Auto merge of #120486 - reitermarkus:use-generic-nonzero, r=dtolnay
Use generic `NonZero` internally.

Tracking issue: https://github.com/rust-lang/rust/issues/120257
2024-02-16 07:46:31 +00:00
Guillaume Gomez
bf323ba3ac Rollup merge of #120672 - devnexen:update_thread_stack_guardpages_fbsd, r=m-ou-se
std::thread update freebsd stack guard handling.

up to now, it had been assumed the stack guard setting default is not touched in the field but some user might just want to disable it or increase it. checking it once at runtime should be enough.
2024-02-15 14:33:00 +01:00
Markus Reiter
a90cc05233 Replace NonZero::<_>::new with NonZero::new. 2024-02-15 08:09:42 +01:00
Markus Reiter
746a58d435 Use generic NonZero internally. 2024-02-15 08:09:42 +01:00
Oli Scherer
1c7a9996f0 Rollup merge of #118738 - devnexen:netbsd10_update, r=cuviper
Netbsd10 update
2024-02-14 11:53:38 +01:00
bors
b17491c8f6 Auto merge of #110211 - joboet:queue_lock, r=Amanieu
Replace pthread `RwLock` with custom implementation

This is one of the last items in #93740. I'm doing `RwLock` first because it is more self-contained and has less tradeoffs to make. The motivation is explained in the documentation, but in short: the pthread rwlock is slow and buggy and `std` can do much better. I considered implementing a parking lot, as was discussed in the tracking issue, but settled for the queue-based version because writing self-balancing binary trees is not fun in Rust...

This is a rather complex change, so I have added quite a bit of documentation to help explain it. Please point out any part that could be explained better.

~~The read performance is really good, I'm getting 4x the throughput of the pthread version and about the same performance as usync/parking_lot on an Apple M1 Max in the usync benchmark suite, but the write performance still falls way behind what usync and parking_lot achieve. I tried using a separate queue lock like what usync uses, but that didn't help. I'll try to investigate further in the future, but I wanted to get some eyes on this first.~~ [Resolved](https://github.com/rust-lang/rust/pull/110211#issuecomment-1513682336)

r? `@m-ou-se`
CC `@kprotty`
2024-02-12 09:45:22 +00:00
joboet
04282db5b3 add doc-comment to unlock_queue 2024-02-11 13:59:00 +01:00
David Carlier
114b0c799d std: enabling new netbsd (10) calls.
Introducing a new config for this purpose as NetBSD 9 or 8 will be still around
for a good while. For now, we re finally enabling sys::unix::rand::getrandom.
2024-02-11 08:48:02 +00:00
bors
d44e3b95cb Auto merge of #120852 - matthiaskrgr:rollup-01pr8gj, r=matthiaskrgr
Rollup of 11 pull requests

Successful merges:

 - #120351 (Implement SystemTime for UEFI)
 - #120354 (improve normalization of `Pointee::Metadata`)
 - #120776 (Move path implementations into `sys`)
 - #120790 (better error message on download CI LLVM failure)
 - #120806 (Clippy subtree update)
 - #120815 (Improve `Option::inspect` docs)
 - #120822 (Emit more specific diagnostics when enums fail to cast with `as`)
 - #120827 (Print image input file and checksum in CI only)
 - #120836 (hide impls if trait bound is proven from env)
 - #120844 (Build DebugInfo for async closures)
 - #120851 (Remove duplicate release note)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-02-09 21:06:12 +00:00
David Carlier
6686ca08a2 std::thread update freebsd stack guard handling.
up to now, it had been assumed the stack guard setting default is not
touched in the field but some user might just want to disable it or
increase it. checking it once at runtime should be enough.
2024-02-09 20:10:47 +00:00
Matthias Krüger
434f080895 Rollup merge of #120776 - joboet:move_pal_path, r=ChrisDenton
Move path implementations into `sys`

Part of #117276.

r? `@ChrisDenton`
2024-02-09 19:21:16 +01:00
bors
f4cfd87202 Auto merge of #120676 - Mark-Simulacrum:bootstrap-bump, r=clubby789
Bump bootstrap compiler to just-built 1.77 beta

https://forge.rust-lang.org/release/process.html#master-bootstrap-update-t-2-day-tuesday
2024-02-09 18:09:02 +00:00
joboet
ff44ae7428 address review comments 2024-02-09 18:01:25 +01:00
joboet
3fa5a40737 be more explicit about why adding backlinks eagerly makes sense 2024-02-09 16:53:36 +01:00
joboet
69f55de5ac format using latest rustfmt 2024-02-09 14:58:38 +01:00
joboet
1fd9f7898e inline some single-use functions, add documentation 2024-02-09 14:58:38 +01:00
joboet
16aae04f68 queue_rwlock: use a separate QUEUE_LOCKED bit to synchronize waiter queue updates 2024-02-09 14:58:38 +01:00
joboet
8db64b5e2d use exponential backoff in lock_contended 2024-02-09 14:58:38 +01:00
joboet
61ce691522 immediately register writer node if threads are queued 2024-02-09 14:58:38 +01:00
joboet
709ccf98b8 avoid unnecessary Thread handle allocation 2024-02-09 14:58:37 +01:00
joboet
280cbc5dae use braces to make operator precedence less ambiguous 2024-02-09 14:58:37 +01:00
joboet
2e652e59f6 adjust code documentation 2024-02-09 14:58:37 +01:00