Commit graph

10586 commits

Author SHA1 Message Date
Benoît du Garreau 351c154cb4 Add vectored positioned I/O on Unix 2023-02-27 10:10:13 +01:00
Matthias Krüger 9c27fc7d34
Rollup merge of #108484 - Nilstrieb:˂DiagnosticItem˂FromFn˃ as From˂˂LangItemFromFn˃˃˃꞉꞉from, r=cjgillot
Remove `from` lang item

It was probably a leftover from the old `?` desugaring but anyways, it's unused now except for clippy, which can just use a diagnostics item.
2023-02-26 12:05:01 +01:00
Matthias Krüger be23b326dc
Rollup merge of #108475 - Sp00ph:fix_shrink_to, r=thomcc
Fix `VecDeque::shrink_to` and add tests.

Fixes #108453.

Also adds both a specific test with the code from #108453 and an exhaustive test that checks all possible head positions, lengths and target capacities for deques with capacity 16.

cc `@trinity-1686a` `@scottmcm`
2023-02-26 12:05:00 +01:00
Matthias Krüger 3d2319f1d6
Rollup merge of #108299 - scottmcm:literal-bits, r=Nilstrieb
Require `literal`s for some `(u)int_impl!` parameters

The point of these is to be seen *lexically* in the docs, so they should always be passed as the correct literal, not as an expression.

(Otherwise we could just compute `Min`/`Max` from `BITS`, for example.)

r? Nilstrieb
2023-02-26 12:04:57 +01:00
Nilstrieb 312020ef6a Remove from_fn lang item
It was probably a leftover from the old `?` desugaring but anyways, it's
unused now except for clippy, which can just use a diagnostics item.
2023-02-26 09:15:54 +00:00
Markus Everling 4a4f43e4e9 Disambiguate comments 2023-02-26 03:13:56 +01:00
Markus Everling 9e22516877 Fix VecDeque::shrink_to and add tests.
This adds both a test specific to #108453 as well as an exhaustive test
that goes through all possible combinations of head index, length and target capacity
for a deque with capacity 16.
2023-02-26 03:13:44 +01:00
Matthias Krüger 4ab1c74b77
Rollup merge of #108432 - klensy:test-deps, r=Mark-Simulacrum
test: drop unused deps

Looks unused. Anyway, tests should catch any breakage.
2023-02-26 00:46:26 +01:00
Matthias Krüger fa10a21bd2
Rollup merge of #107890 - obeis:mapping-to-unit, r=cjgillot
Lint against `Iterator::map` receiving a callable that returns `()`

Close #106991
2023-02-26 00:46:25 +01:00
bors 34e6673a04 Auto merge of #107405 - hermitcore:bsd, r=bjorn3
add support of RustyHermit's BSD socket layer

RustyHermit is a tier 3 platform and publishes a new kernel interface. The new version supports a common BSD socket layer. By supporting this interface, the implementation of `std` can be harmonized to other operating systems. In `sys_common/mod.rs` we remove only a special case for RustyHermit. All changes are done in the RustyHermit specific directories.

To realize this socket layer, the handling of file descriptors is also harmonized to other operating systems.
2023-02-25 19:43:00 +00:00
bors 31448badfd Auto merge of #108450 - matthiaskrgr:rollup-rqvfgu3, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #108354 (Update `fuchsia-test-runner.py` and docs)
 - #108404 (support `x fmt` for sub and outside of rust directories)
 - #108407 (docs: use intra-doc links for `Vec::get(_mut)`)
 - #108410 (rustdoc: avoid including `<li>` tags in item table short desc)
 - #108412 (Fix GUI test navigation bug)
 - #108433 (Wrap missing provider message correctly)
 - #108434 (Migrate `rustc_hir_analysis` to session diagnostic [Part One])

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-02-25 16:48:04 +00:00
Matthias Krüger 7c562ee5a6
Rollup merge of #108407 - notriddle:notriddle/vec-get-mut, r=thomcc
docs: use intra-doc links for `Vec::get(_mut)`

Now that #63351 is fixed, there's no reason not to.

CC #75672
2023-02-25 11:31:33 +01:00
bors 26c98689f2 Auto merge of #108233 - ChrisDenton:move-std-tests, r=thomcc
Move some std tests from `tests/ui-fulldeps` into `library/std`

This allows them to be tested normally along with other `./x test std` tests. Moving `rename_directory` is simple enough but `create_dir_all_bare` needed to be an std integration test.

Additionally, some tests that I couldn't move atm have instead been placed in an `std` subdirectory. These tests include ones that do fun things with processes or that intentionally abort the test process.

r? libs
2023-02-25 10:26:57 +00:00
bors 6ffabf3c8f Auto merge of #107638 - zhangyunhao116:pdqsort-rand, r=cuviper
Optimize break patterns

Use `wyrand` instead of calling `XORSHIFT` 2 times in break patterns for the 64-bit platform. The new PRNG is 2x faster than the previous one.

Bench result(via https://gist.github.com/zhangyunhao116/11ef41a150f5c23bb47d86255fbeba89):
```
old                     time:   [1.3258 ns 1.3262 ns 1.3266 ns]
                        change: [+0.5901% +0.6731% +0.7791%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 13 outliers among 100 measurements (13.00%)
  7 (7.00%) high mild
  6 (6.00%) high severe

new                     time:   [657.65 ps 657.89 ps 658.18 ps]
                        change: [-1.6910% -1.6110% -1.5256%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 6 outliers among 100 measurements (6.00%)
  2 (2.00%) high mild
  4 (4.00%) high severe
```
2023-02-25 03:01:40 +00:00
klensy c3749ddf4c test: drop unused deps 2023-02-24 20:45:00 +03:00
Stefan Lankes af8ee641a8 avoid the usage of libc during the creation of documentation 2023-02-24 15:30:14 +01:00
Stefan Lankes 90162a78a9 remove code duplications 2023-02-24 15:30:14 +01:00
Stefan Lankes b5fb4f3d9b move IO traits to std/src/os/hermit
By moving the IO traits, the RustyHermit support is harmonized to
of other operating systems.
2023-02-24 15:30:14 +01:00
Stefan Lankes 7143379a52 add support of RustyHermit's BSD socket layer
RustHermit publishs a new kernel interface and supports
a common BSD socket layer. By supporting this interface,
the implementation can be harmonized to other operating systems.

To realize this socket layer, the handling of file descriptors
is also harmonized to other operating systems.
2023-02-24 15:30:14 +01:00
Dylan DPC 353827a044
Rollup merge of #108391 - sunfishcode:sunfishcode/is-terminal-file-length, r=ChrisDenton
Fix `is_terminal`'s handling of long paths on Windows.

As reported in sunfishcode/is-terminal#18, there are situations where `GetFileInformationByHandleEx` can write a file name length that is longer than the provided buffer. To avoid deferencing memory past the end of the buffer, use a bounds-checked function to form a slice to the buffer and handle the out-of-bounds case.

This ports the fix from sunfishcode/is-terminal#19 to std's `is_terminal` implementation.
2023-02-24 12:02:45 +05:30
Dylan DPC f94c3c9da1
Rollup merge of #108370 - fbq:time-doc-fix, r=thomcc
std: time: Avoid to use "was created" in elapsed() description

".. since this instant was created" is inaccurate and misleading, consider the following case:
```rust
	let i1 = Instant::now(); // i1 is created at T1
	let i2 = i1 + Duration::from_nanos(0); // i2 is "created" at T2
	i2.elapsed(); // at T3
```
Per the current description, `elapsed()` at T3 should return T3 - T2?

To avoid the inaccuracy, removes the "was created" in the description of {Instant,SystemTime}::elapsed().
And since these types represent times, it's OK to use prepostions with them, e.g. "since this instant".
2023-02-24 12:02:42 +05:30
Dylan DPC b3657f92d1
Rollup merge of #106918 - dtolnay:heapretain, r=the8472
Rebuild BinaryHeap on unwind from retain

This closes the hole identified in https://github.com/rust-lang/rust/issues/71503#issuecomment-1383251315 which had made it possible for the caller to end up with a heap in invalid state. As of #105851, heaps in invalid state are not supposed to exist.
2023-02-24 12:02:41 +05:30
Dylan DPC 8c135eecac
Rollup merge of #106541 - fee1-dead-contrib:no-const-check-no, r=thomcc
implement const iterator using `rustc_do_not_const_check`

Previous experiment: #102225.

Explanation: rather than making all default methods work under `const` all at once, this uses `rustc_do_not_const_check` as a workaround to "trick" the compiler to not run any checks on those other default methods. Any const implementations are only required to implement the `next` method. Any actual calls to the trait methods other than `next` will either error in compile time (at CTFE runs), or run the methods correctly if they do not have any non-const operations. This is extremely easy to maintain, remove, or improve.
2023-02-24 12:02:40 +05:30
Michael Howell a402cb0f9b docs: use intra-doc links for Vec::get(_mut)
Now that #63351 is fixed, there's no reason not to.
2023-02-23 12:26:14 -07:00
Dan Gohman c0c1925774 Fix is_terminal's handling of long paths on Windows.
As reported in sunfishcode/is-terminal#18, there are situations where
`GetFileInformationByHandleEx` can write a file name length that is
longer than the provided buffer. To avoid deferencing memory past the
end of the buffer, use a bounds-checked function to form a slice to
the buffer and handle the out-of-bounds case.

This ports the fix from sunfishcode/is-terminal#19 to std's `is_terminal`
implementation.
2023-02-23 06:29:11 -08:00
Obei Sideg a914f37409 Add lint against Iterator::map receiving a callable that returns () 2023-02-23 13:57:06 +03:00
Scott McMurray 5c7ae251b1 Require literals for some (u)int_impl! parameters
The point of these is to be seen lexically in the docs, so they should always be passed as the correct literal, not as an expression.

(Otherwise we could just compute `Min`/`Max` from `BITS`, for example.)
2023-02-22 23:26:22 -08:00
Matthias Krüger c4a4bce695
Rollup merge of #108218 - ChrisDenton:cmd-escape, r=cuviper
Windows: Quote more batch file arguments

Make sure to always quote batch file arguments that contain command prompt special characters.

Additionally add `/d` command line parameter to disable any autorun scripts that may change the way variable expansion works. This makes it more consistent across systems and may help avoid surprises.

## Background Info

[`CreateProcess`](https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw) with the `lpApplicationName` set can only be used to run `.exe` files and not script files such as `.bat`. However, for historical reasons, we do have special handling so that `.bat` files will be correctly run with `cmd.exe` as the application.

In Windows, command line arguments are passed as a single string (not an array). Applications can parse this string however they like but most follow the standard MSVC C/C++ convention. But `cmd.exe` uses different argument parsing rules to other Windows programs (because it emulates old DOS).  This PR aims to help smooth over some of the differences.

r? libs
2023-02-23 06:18:06 +01:00
Boqun Feng b54a5fdca0 std: time: Avoid to use "was created" in elapsed() description
".. since this instant was created" is inaccurate and misleading,
consider the following case:

	let i1 = Instant::now(); // i1 is created at T1
	let i2 = i1 + Duration::from_nanos(0); // i2 is "created" at T2
	i2.elapsed(); // at T3

Per the current description, `elapsed()` at T3 should return T3 - T2?

Therefore removes the "was created" in the description of
{Instant,SystemTime}::elapsed(). And since these types represent times,
it's OK to use prepostions with them, e.g. "since this instant".
2023-02-22 14:40:43 -08:00
Matthias Krüger 0982eab839
Rollup merge of #107736 - tgross35:atomic-as-ptr, r=m-ou-se
Rename atomic 'as_mut_ptr' to 'as_ptr' to match Cell (ref #66893)

Originally discussed in https://github.com/rust-lang/rust/issues/66893#issuecomment-1419198623

~~This uses #107706 as a base to avoid a merge conflict once that gets rolled up (so disregard const changes in the diff until it does)~~ all merged & rebased

`@rustbot` label +T-libs-api
r? m-ou-se
2023-02-22 20:05:57 +01:00
zhangyunhao e107ca0f0b Optimize break patterns 2023-02-22 16:02:35 +00:00
Chris Denton 0b7c867ec5
Quote more batch file arguments
Make sure to quote batch file arguments that contain command prompt special characters.

Additionally add `/d` command line parameter to disable any commands that may change the way variable expansion works.
2023-02-22 04:27:35 +00:00
Chris Denton 0f221cc034
Exclude SGX from create_dir_all_bare test
And emscripten too.
2023-02-21 18:33:20 +00:00
Chris Denton 9b18b4440a
Make create_dir_all_bare an std integration test
Moving `create_dir_all` out of `ui-fulldeps` is complicated by the fact it sets the current directory. This means it can't be a unit test. Instead, move it to its own integration test.
2023-02-21 18:33:19 +00:00
Chris Denton f7a132f428
Move rename_directory from ui-fulldeps to std
std has had a `TempDir` implementation for a long time now.
2023-02-21 18:33:19 +00:00
Tomasz Miąsko 7867aa8aee Remove unused FileDesc::get_cloexec 2023-02-21 18:52:25 +01:00
Dylan DPC 7dcf7fe737
Rollup merge of #108272 - MrNossiom:master, r=thomcc
docs: wrong naming convention in struct keyword doc

Noticed that the naming convention mentioned is not the right one.

As far as I know, PacalCase is the naming convention used for structs names. PacalCase is not the same as camelCase
2023-02-21 14:20:00 +05:30
Dylan DPC e781a6ff3b
Rollup merge of #108105 - majaha:patch-1, r=cuviper
Explain the default panic hook better

This changes the documentation of `std::panic::set_hook` and `take_hook` to explain how the default panic hook works. In particular the fact that `take_hook` registers the default hook, rather than no hook at all, was missing from the docs.

I also reworded a few things for clarity.
2023-02-21 14:19:59 +05:30
Matt Harding ec9a4ce19e Explain the default panic hook better
This changes the documentation of `std::panic::set_hook` and `take_hook` to better explain how the default panic hook works. In particular the fact that `take_hook` registers the default hook, rather than no hook at all, was missing from the docs.
2023-02-20 23:37:19 +00:00
Milo Moisson 18f5f0c473
use UpperCamelCase 2023-02-20 23:44:21 +01:00
Matthias Krüger 4f532dacfc
Rollup merge of #108279 - Nilstrieb:int, r=scottmcm
Use named arguments for `{,u}int_impls` macro

This makes it way easier to understand.

r? `@scottmcm`
2023-02-20 22:12:20 +01:00
Nilstrieb eb5d82bc9c Use named arguments for int_impl macro
This makes it easier to understand.
2023-02-20 18:18:49 +00:00
Nilstrieb d3b46bb74e Use named arguments for uint_impl macro
This makes it easier to understand.
2023-02-20 18:10:51 +00:00
Milo Moisson 76ac2705a5
docs: wrong naming convention in struct keyword doc 2023-02-20 16:40:46 +01:00
Matthias Krüger fde38f1174
Rollup merge of #108124 - kornelski:cstr_c_char, r=thomcc
Document that CStr::as_ptr returns a type alias

Rustdoc resolves type aliases too eagerly #15823 which makes the [std re-export](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#method.as_ptr) of `CStr::as_ptr` show `i8` instead of `c_char`. To work around this I've added info about `c_char` in the method's description.

BTW, I've also added a comment to what-not-to-do example in case someone copypasted it without reading the surrounding text.
2023-02-20 14:32:54 +01:00
Tomasz Miąsko b118569268 Use custom implementation of read_buf in Read for &'a FileDesc
This allows to skip an unnecessary buffer initialization.
2023-02-19 13:06:38 +01:00
Dylan DPC 0257e288f5
Rollup merge of #108130 - tshepang:just-one-example, r=workingjubilee
"Basic usage" is redundant for there is just one example
2023-02-19 13:03:42 +05:30
Dylan DPC e802713941
Rollup merge of #106933 - schuelermine:fix/doc/102451, r=Amanieu
Update documentation of select_nth_unstable and select_nth_unstable_by to state O(n^2) complexity

See #102451
2023-02-19 13:03:40 +05:30
Dylan DPC 47ec320ce6
Rollup merge of #104659 - tshepang:reflow, r=workingjubilee
reflow the stack size story
2023-02-19 13:03:39 +05:30
bors 4507fdaaa2 Auto merge of #106241 - Sp00ph:vec_deque_iter_methods, r=the8472
Implement more methods for `vec_deque::IntoIter`

This implements a couple `Iterator` methods on `vec_deque::IntoIter` (`(try_)fold`, `(try_)rfold` `advance_(back_)by`, `next_chunk`, `count` and `last`) to allow these to be more efficient than their default implementations, also allowing many other `Iterator` methods that use these under the hood to take advantage of these manual implementations. `vec::IntoIter` has similar implementations for many of these methods. This PR does not yet implement `TrustedRandomAccess` and friends, as I'm not very familiar with the required safety guarantees.

r? `@the8472` (since you also took over my last PR)
2023-02-18 20:12:35 +00:00