Commit Graph

210291 Commits

Author SHA1 Message Date
Matthias Krüger
1b41a38f52
Rollup merge of #104354 - lukas-code:blank-lines-2, r=JohnTitor
Remove leading newlines from `NonZero*` doc examples

Like https://github.com/rust-lang/rust/pull/103045, but for `NonZero*`.

`@rustbot` label A-docs
2022-11-15 01:40:42 +01:00
Matthias Krüger
98be657c7c
Rollup merge of #103842 - andrewpollack:add-fuchsia-test-script, r=tmandry
Adding Fuchsia compiler testing script, docs

Adding Fuchsia compiler testing script and related docs updates

r? `@tmandry`

cc. `@djkoloski`
2022-11-15 01:40:42 +01:00
bors
dedfb9c214 Auto merge of #104091 - BelovDV:issue-103044, r=petrochenkov
Wrap bundled static libraries into object files

Fixes #103044 (not sure, couldn't test locally)

Bundled static libraries should be wrapped into object files as it's done for metadata file.

r? `@petrochenkov`
2022-11-15 00:38:08 +00:00
Nixon Enraght-Moony
9214673331 Add test for #102154 2022-11-14 22:42:57 +00:00
Michael Howell
155a5535a6 rustdoc: remove no-op CSS .main-header { justify-content }
This rule was added in 152e888905 to push the
out-of-band content to the right while allowing it to line wrap when it got
too big. The idea was that the justification rule would fill the space
between the `<h1>` element and the `<div class="out-of-band">` element.

A later commit, 3cb03cb342, flattened the
in-band element into the `<h1>`, copying the `flex-grow` rule. This means
the `<h1>` element now grows to fill the space, so there's no need to
justify-content any more.

This commit also adds a test case for this.
2022-11-14 15:27:04 -07:00
The 8472
3d4a8482b9 x86_64 SSE2 fast-path for str.contains(&str) and short needles
Based on Wojciech Muła's "SIMD-friendly algorithms for substring searching"[0]

The two-way algorithm is Big-O efficient but it needs to preprocess the needle
to find a "criticla factorization" of it. This additional work is significant
for short needles. Additionally it mostly advances needle.len() bytes at a time.

The SIMD-based approach used here on the other hand can advance based on its
vector width, which can exceed the needle length. Except for pathological cases,
but due to being limited to small needles the worst case blowup is also small.

benchmarks taken on a Zen2:

```
16CGU, OLD:
test str::bench_contains_short_short                     ... bench:          27 ns/iter (+/- 1)
test str::bench_contains_short_long                      ... bench:         667 ns/iter (+/- 29)
test str::bench_contains_bad_naive                       ... bench:         131 ns/iter (+/- 2)
test str::bench_contains_bad_simd                        ... bench:         130 ns/iter (+/- 2)
test str::bench_contains_equal                           ... bench:         148 ns/iter (+/- 4)


16CGU, NEW:
test str::bench_contains_short_short                     ... bench:           8 ns/iter (+/- 0)
test str::bench_contains_short_long                      ... bench:         135 ns/iter (+/- 4)
test str::bench_contains_bad_naive                       ... bench:         130 ns/iter (+/- 2)
test str::bench_contains_bad_simd                        ... bench:         292 ns/iter (+/- 1)
test str::bench_contains_equal                           ... bench:           3 ns/iter (+/- 0)


1CGU, OLD:
test str::bench_contains_short_short                     ... bench:          30 ns/iter (+/- 0)
test str::bench_contains_short_long                      ... bench:         713 ns/iter (+/- 17)
test str::bench_contains_bad_naive                       ... bench:         131 ns/iter (+/- 3)
test str::bench_contains_bad_simd                        ... bench:         130 ns/iter (+/- 3)
test str::bench_contains_equal                           ... bench:         148 ns/iter (+/- 6)

1CGU, NEW:
test str::bench_contains_short_short                     ... bench:          10 ns/iter (+/- 0)
test str::bench_contains_short_long                      ... bench:         111 ns/iter (+/- 0)
test str::bench_contains_bad_naive                       ... bench:         135 ns/iter (+/- 3)
test str::bench_contains_bad_simd                        ... bench:         274 ns/iter (+/- 2)
test str::bench_contains_equal                           ... bench:           4 ns/iter (+/- 0)
```


[0] http://0x80.pl/articles/simd-strfind.html#sse-avx2
2022-11-14 23:03:16 +01:00
The 8472
467b299e53 update str.contains benchmarks 2022-11-14 23:03:16 +01:00
The 8472
4844e5162c black_box test strings in str.contains(str) benchmarks 2022-11-14 23:01:25 +01:00
León Orell Valerian Liehr
70ad2f5344
respect visibility & stability of inherent associated types 2022-11-14 22:50:18 +01:00
Michael Howell
bd84709298 rustdoc: add test case for font size in help popover 2022-11-14 14:46:53 -07:00
Michael Howell
8b346754ed rustdoc: remove no-op CSS .popover { font-size: 1rem }
This rule was added in cc4f804829 because the help popover inherited the
font-size from the help button "?" icon.

It doesn't inherit this any more, because it was moved from being nested
inside the link to sharing a wrapper DIV with it.
2022-11-14 14:46:53 -07:00
Michael Howell
7b00534952 rustdoc: fix corner case in search keyboard commands 2022-11-14 13:21:08 -07:00
Michael Goulet
540e12f7da Add regression test 2022-11-14 19:29:37 +00:00
Michael Goulet
5497317aa5 Do autoderef to match impl against rcvr 2022-11-14 19:29:37 +00:00
Michael Goulet
bf607dae3f Move logic into method 2022-11-14 19:29:37 +00:00
Michael Goulet
3f697b85f2 Drive-by: actual -> rcvr_ty 2022-11-14 19:29:36 +00:00
Nilstrieb
7e7c11cf56
Show a note where a macro failed to match
This shows a small note on what the macro matcher was currently
processing to aid with "no rules expected the token X" errors.
2022-11-14 19:59:15 +01:00
Matthias Krüger
c389097693
Rollup merge of #104378 - compiler-errors:chalk-up, r=jackh726
Bump chalk to v0.87

1. Removes `ReEmpty` from chalk
2. Adds support for the `std::marker::Tuple` trait
2022-11-14 19:26:19 +01:00
Matthias Krüger
dc869fcfb2
Rollup merge of #104364 - petrochenkov:docice2, r=GuillaumeGomez
rustdoc: Resolve doc links in external traits having local impls

For external impls it was done in https://github.com/rust-lang/rust/pull/103192 right away, but the local impl case was forgotten.

Fixes https://github.com/rust-lang/rust/issues/104145.
2022-11-14 19:26:19 +01:00
Matthias Krüger
050ece6765
Rollup merge of #104356 - RalfJung:interpret-check-mplace, r=oli-obk
interpret: make check_mplace public

This helps avoid code duplication in https://github.com/rust-lang/miri/pull/2661.
2022-11-14 19:26:18 +01:00
Matthias Krüger
aa29a8b4c7
Rollup merge of #104350 - SparkyPotato:fix-x-wrapper, r=jyn514
Fix x finding Python on Windows

`x` searches through the path for `{dir}/python{2|3}?`, but this fails on Windows because the appropriate path is `{dir}/python.exe`.

This PR adds the expected `.exe` extension on Windows while searching.
2022-11-14 19:26:18 +01:00
Matthias Krüger
5763fa74f0
Rollup merge of #104349 - rustaceanclub:master, r=oli-obk
fix some typos in comments
2022-11-14 19:26:18 +01:00
Matthias Krüger
43bb507d12
Rollup merge of #104332 - Elarcis:maybe_uninit_doc_fix, r=m-ou-se
Fixed some `_i32` notation in `maybe_uninit`’s doc

This PR just changed two lines in the documentation for `MaybeUninit`:

```rs
let val = 0x12345678i32;
```
was changed to:
```rs
let val = 0x12345678_i32;
```
in two doctests, making the values a tad easier to read.

It does not seem like there are other literals needing this change in the file.
2022-11-14 19:26:17 +01:00
Matthias Krüger
f8e5b1ce9e
Rollup merge of #104294 - compiler-errors:inline-ct-err-in-mir-build, r=davidtwco
Don't ICE with inline const errors during MIR build

Fixes #104277
2022-11-14 19:26:17 +01:00
Matthias Krüger
abda584a5a
Rollup merge of #104229 - compiler-errors:overlap-full-path, r=davidtwco
Don't print full paths in overlap errors

We don't print the full path in other diagnostics -- I don't think it particularly helps with the error message. I also delayed the printing until actually needing to render the error message.

r? diagnostics
2022-11-14 19:26:16 +01:00
Matthias Krüger
a86bdb4c50
Rollup merge of #104223 - fmease:recover-fn-ptr-with-generics, r=estebank
Recover from function pointer types with generic parameter list

Give a more helpful error when encountering function pointer types with a generic parameter list like `fn<'a>(&'a str) -> bool` or `fn<T>(T) -> T` and suggest moving lifetime parameters to a `for<>` parameter list.

I've added a bunch of extra code to properly handle (unlikely?) corner cases like `for<'a> fn<'b>()` (where there already exists a `for<>` parameter list) correctly suggesting `for<'a, 'b> fn()` (merging the lists). If you deem this useless, I can simplify the code by suggesting nothing at all in this case.

I am quite open to suggestions regarding the wording of the diagnostic messages.

Fixes #103487.
``@rustbot`` label A-diagnostics
r? diagnostics
2022-11-14 19:26:16 +01:00
Matthias Krüger
8c77da87d7
Rollup merge of #102470 - est31:stabilize_const_char_convert, r=joshtriplett
Stabilize const char convert

Split out `const_char_from_u32_unchecked` from `const_char_convert` and stabilize the rest, i.e. stabilize the following functions:

```Rust
impl char {
    pub const fn from_u32(self, i: u32) -> Option<char>;
    pub const fn from_digit(self, num: u32, radix: u32) -> Option<char>;
    pub const fn to_digit(self, radix: u32) -> Option<u32>;
}

// Available through core::char and std::char
mod char {
    pub const fn from_u32(i: u32) -> Option<char>;
    pub const fn from_digit(num: u32, radix: u32) -> Option<char>;
}
```

And put the following under the `from_u32_unchecked` const stability gate as it needs `Option::unwrap` which isn't const-stable (yet):

```Rust
impl char {
    pub const unsafe fn from_u32_unchecked(i: u32) -> char;
}

// Available through core::char and std::char
mod char {
    pub const unsafe fn from_u32_unchecked(i: u32) -> char;
}
```

cc the tracking issue #89259 (which I'd like to keep open for `const_char_from_u32_unchecked`).
2022-11-14 19:26:15 +01:00
Matthias Krüger
9f3786b2b1
Rollup merge of #101967 - jmillikin:linux-abstract-socket-addr, r=joshtriplett
Move `unix_socket_abstract` feature API to `SocketAddrExt`.

The pre-stabilized API for abstract socket addresses exposes methods on `SocketAddr` that are only enabled for `cfg(any(target_os = "android", target_os = "linux"))`. Per discussion in <https://github.com/rust-lang/rust/issues/85410>, moving these methods to an OS-specific extension trait is required before stabilization can be considered.

This PR makes four changes:
1. The internal module `std::os::net` contains logic for the unstable feature `tcp_quickack` (https://github.com/rust-lang/rust/issues/96256). I moved that code into `linux_ext/tcp.rs` and tried to adjust the module tree so it could accommodate a second unstable feature there.
2. Moves the public API out of `impl SocketAddr`, into `impl SocketAddrExt for SocketAddr` (the headline change).
3. The existing function names and docs for `unix_socket_abstract` refer to addresses as being created from abstract namespaces, but a more accurate description is that they create sockets in *the* abstract namespace. I adjusted the function signatures correspondingly and tried to update the docs to be clearer.
4. I also tweaked `from_abstract_name` so it takes an `AsRef<[u8]>` instead of `&[u8]`, allowing `b""` literals to be passed directly.

Issues:
1. The public module `std::os::linux::net` is marked as part of `tcp_quickack`. I couldn't figure out how to mark a module as being part of two unstable features, so I just left the existing attributes in place. My hope is that this will be fixed as a side-effect of stabilizing either feature.
2022-11-14 19:26:14 +01:00
Ayush Singh
55746a4479
Fix test/ui/issues/issue-30490.rs
Since the empty main is used for `not(unix)`, all the targets that will
use this empty main will also need `allow(unused_imports)`.

Originally part of https://github.com/rust-lang/rust/pull/100316

Signed-off-by: Ayush Singh <ayushsingh1325@gmail.com>
2022-11-14 23:52:41 +05:30
Ralf Jung
68af46c112 assert that we are (de)seiralizing ProvenanceMap correctly 2022-11-14 18:26:40 +01:00
Krasimir Georgiev
212ce1f10c [llvm-wrapper] adapt for LLVM API change 2022-11-14 14:59:32 +00:00
bjorn3
53852ee4eb Move most of unwind's build script to lib.rs
Only the android libunwind detection remains in the build script

* Reduces dependence on build scripts for building the standard library
* Reduces dependence on exact target names in favor of using semantic
  cfg(target_*) usage.
* Keeps almost all code related to linking of the unwinder in one file
2022-11-14 14:24:12 +00:00
Guillaume Gomez
e6baae576c Fix missing minification for static files 2022-11-14 15:17:13 +01:00
Jannis Christopher Köhl
24d2e903df Bless graphviz tests 2022-11-14 15:11:30 +01:00
Jannis Christopher Köhl
c27ddc9a7f Remove redundant graphviz escaping 2022-11-14 15:11:18 +01:00
koka
a9e4176bc8
Specify language of code comment to generate document 2022-11-14 22:55:50 +09:00
Ralf Jung
5fd561dea2 avoid memory leak in mpsc test 2022-11-14 13:38:53 +01:00
Oli Scherer
03b2598924 Manually implement Encodable for ProvenanceMap to avoid serializing an always-none option 2022-11-14 09:49:32 +00:00
Daniil Belov
e16c77847d Wrap bundlen static libraries into object files 2022-11-14 12:01:49 +03:00
bors
96ddd32c4b Auto merge of #104387 - Manishearth:rollup-9e551p5, r=Manishearth
Rollup of 9 pull requests

Successful merges:

 - #103709 (ci: Upgrade dist-x86_64-netbsd to NetBSD 9.0)
 - #103744 (Upgrade cc for working is_flag_supported on cross-compiles)
 - #104105 (llvm: dwo only emitted when object code emitted)
 - #104158 (Return .efi extension for EFI executable)
 - #104181 (Add a few known-bug tests)
 - #104266 (Regression test for coercion of mut-ref to dyn-star)
 - #104300 (Document `Path::parent` behavior around relative paths)
 - #104304 (Enable profiler in dist-s390x-linux)
 - #104362 (Add `delay_span_bug` to `AttrWrapper::take_for_recovery`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-11-14 06:30:18 +00:00
Nicholas Nethercote
111db7d3a8 Remove TraitDef::generics.
Because it's always empty.
2022-11-14 15:59:41 +11:00
Michael Goulet
b5b6467810 Add rustc_deny_explicit_impl 2022-11-14 03:23:41 +00:00
bors
f90a4ff26c Auto merge of #104188 - jyn514:download-config-only, r=Mark-Simulacrum
Make all download functions need only Config, not Builder

This also adds a new `mod download` instead of scattering the download code across `config.rs` and `native.rs`.

This is the simplest and also most bit-rotty part of https://github.com/rust-lang/rust/pull/102282. Opening it earlier so it's not mixed in with behavior changes and to avoid rebase hell.

cc https://github.com/rust-lang/rust/issues/94829 (which nows has the hackmd linked).

r? `@Mark-Simulacrum`
2022-11-14 03:15:03 +00:00
Nicholas Nethercote
96280b6a1d Remove addr_of argument from create_struct_pattern_fields.
Because it's always false.
2022-11-14 13:59:54 +11:00
Joshua Nelson
fb471de5a9 Make all download functions need only Config, not Builder
This also adds a new `mod download` instead of scattering the download code
across `config.rs` and `native.rs`.
2022-11-13 21:56:52 -05:00
Manish Goregaokar
4fdd944af4
Rollup merge of #104362 - WaffleLapkin:span_bug_won't_come_on_time_today, r=Aaron1011
Add `delay_span_bug` to `AttrWrapper::take_for_recovery`

`take_for_recovery` should only be used for recovery (when we should already have an error), so using `delay_span_bug` seems appropriate.

cc `@Aaron1011` (you've added the `FIXME` that this pr fixes)
2022-11-13 21:49:27 -05:00
Manish Goregaokar
7678cfdf18
Rollup merge of #104304 - uweigand:s390x-profiler, r=Mark-Simulacrum
Enable profiler in dist-s390x-linux

Build the profiler runtime to allow using -C profile-generate and -C instrument-coverage on s390x-linux.

I've verified in a local build that the runtime builds and the profiler is working fine on the platform.
2022-11-13 21:49:27 -05:00
Manish Goregaokar
c7004f934f
Rollup merge of #104300 - tbu-:pr_path_parent_caveats, r=Mark-Simulacrum
Document `Path::parent` behavior around relative paths

A relative path with just one component will return `Some("")` as its parent, which wasn't clear to me from the documentation.

The parent of `""` is `None`, which was missing from the documentation as well.
2022-11-13 21:49:27 -05:00
Manish Goregaokar
cc96cdd696
Rollup merge of #104266 - compiler-errors:issue-102430, r=Mark-Simulacrum
Regression test for coercion of mut-ref to dyn-star

Closes #102430
2022-11-13 21:49:26 -05:00
Manish Goregaokar
d76058d8b3
Rollup merge of #104181 - jackh726:known-bug-tests, r=Mark-Simulacrum
Add a few known-bug tests

The labels of these tests should be changed from `S-bug-has-mcve` to `S-bug-has-test` once this is merged.

cc:
#101518
#99492
#90950
#89196
#104034
#101350
#103705
#103899

I couldn't reproduce the failures in #101962 and #100772 (so either these have started passing, or I didn't repro properly), so leaving those out for now.

#102065 was a bit more complicated, since it uses `rustc_private` and I didn't want to mess with that.
2022-11-13 21:49:26 -05:00