Josh Stone
a4bf8557b2
Rollup merge of #59372 - euclio:rename-trim, r=rkruppe
...
add rustfix-able suggestions to trim_{left,right} deprecations
Fixes #53802 (technically already fixed by #58002 , but that issue is about these methods).
2019-03-27 18:15:28 -07:00
Josh Stone
ad5bbf01c0
Rollup merge of #59284 - RalfJung:maybe-uninit, r=sfackler
...
adjust MaybeUninit API to discussions
uninitialized -> uninit
into_initialized -> assume_init
read_initialized -> read
set -> write
2019-03-27 18:15:27 -07:00
Josh Stone
c70cdc0ed4
Rollup merge of #59283 - SimonSapin:branchless-ascii-case, r=joshtriplett
...
Make ASCII case conversions more than 4× faster
Reformatted output of `./x.py bench src/libcore --test-args ascii` below. The `libcore` benchmark calls `[u8]::make_ascii_lowercase`. `lookup` has code (effectively) identical to that before this PR, and ~~`branchless`~~ `mask_shifted_bool_match_range` after this PR.
~~See [code comments](ce933f77c8 (diff-01076f91a26400b2db49663d787c2576R3796)
) in `u8::to_ascii_uppercase` in `src/libcore/num/mod.rs` for an explanation of the branchless algorithm.~~
**Update:** the algorithm was simplified while keeping the performance. See `branchless` v.s. `mask_shifted_bool_match_range` benchmarks.
Credits to @raphlinus for the idea in https://twitter.com/raphlinus/status/1107654782544736261 , which extends this algorithm to “fake SIMD” on `u32` to convert four bytes at a time. The `fake_simd_u32` benchmarks implements this with [`let (before, aligned, after) = bytes.align_to_mut::<u32>()`](https://doc.rust-lang.org/std/primitive.slice.html#method.align_to_mut ). Note however that this is buggy when addition carries/overflows into the next byte (which does not happen if the input is known to be ASCII).
This could be fixed (to optimize `[u8]::make_ascii_lowercase` and `[u8]::make_ascii_uppercase` in `src/libcore/slice/mod.rs`) either with some more bitwise trickery that I didn’t quite figure out, or by using “real” SIMD intrinsics for byte-wise addition. I did not pursue this however because the current (incorrect) fake SIMD algorithm is only marginally faster than the one-byte-at-a-time branchless algorithm. This is because LLVM auto-vectorizes the latter, as can be seen on https://rust.godbolt.org/z/anKtbR .
Benchmark results on Linux x64 with Intel i7-7700K: (updated from https://github.com/rust-lang/rust/pull/59283#issuecomment-474146863 )
```rust
6830 bytes string:
alloc_only ... bench: 112 ns/iter (+/- 0) = 62410 MB/s
black_box_read_each_byte ... bench: 1,733 ns/iter (+/- 8) = 4033 MB/s
lookup_table ... bench: 1,766 ns/iter (+/- 11) = 3958 MB/s
branch_and_subtract ... bench: 417 ns/iter (+/- 1) = 16762 MB/s
branch_and_mask ... bench: 401 ns/iter (+/- 1) = 17431 MB/s
branchless ... bench: 365 ns/iter (+/- 0) = 19150 MB/s
libcore ... bench: 367 ns/iter (+/- 1) = 19046 MB/s
fake_simd_u32 ... bench: 361 ns/iter (+/- 2) = 19362 MB/s
fake_simd_u64 ... bench: 361 ns/iter (+/- 1) = 19362 MB/s
mask_mult_bool_branchy_lookup_table ... bench: 6,309 ns/iter (+/- 19) = 1107 MB/s
mask_mult_bool_lookup_table ... bench: 4,183 ns/iter (+/- 29) = 1671 MB/s
mask_mult_bool_match_range ... bench: 339 ns/iter (+/- 0) = 20619 MB/s
mask_shifted_bool_match_range ... bench: 339 ns/iter (+/- 1) = 20619 MB/s
32 bytes string:
alloc_only ... bench: 15 ns/iter (+/- 0) = 2133 MB/s
black_box_read_each_byte ... bench: 29 ns/iter (+/- 0) = 1103 MB/s
lookup_table ... bench: 24 ns/iter (+/- 4) = 1333 MB/s
branch_and_subtract ... bench: 16 ns/iter (+/- 0) = 2000 MB/s
branch_and_mask ... bench: 16 ns/iter (+/- 0) = 2000 MB/s
branchless ... bench: 16 ns/iter (+/- 0) = 2000 MB/s
libcore ... bench: 15 ns/iter (+/- 0) = 2133 MB/s
fake_simd_u32 ... bench: 17 ns/iter (+/- 0) = 1882 MB/s
fake_simd_u64 ... bench: 16 ns/iter (+/- 0) = 2000 MB/s
mask_mult_bool_branchy_lookup_table ... bench: 42 ns/iter (+/- 0) = 761 MB/s
mask_mult_bool_lookup_table ... bench: 35 ns/iter (+/- 0) = 914 MB/s
mask_mult_bool_match_range ... bench: 16 ns/iter (+/- 0) = 2000 MB/s
mask_shifted_bool_match_range ... bench: 16 ns/iter (+/- 0) = 2000 MB/s
7 bytes string:
alloc_only ... bench: 14 ns/iter (+/- 0) = 500 MB/s
black_box_read_each_byte ... bench: 22 ns/iter (+/- 0) = 318 MB/s
lookup_table ... bench: 16 ns/iter (+/- 0) = 437 MB/s
branch_and_subtract ... bench: 16 ns/iter (+/- 0) = 437 MB/s
branch_and_mask ... bench: 16 ns/iter (+/- 0) = 437 MB/s
branchless ... bench: 19 ns/iter (+/- 0) = 368 MB/s
libcore ... bench: 20 ns/iter (+/- 0) = 350 MB/s
fake_simd_u32 ... bench: 18 ns/iter (+/- 0) = 388 MB/s
fake_simd_u64 ... bench: 21 ns/iter (+/- 0) = 333 MB/s
mask_mult_bool_branchy_lookup_table ... bench: 20 ns/iter (+/- 0) = 350 MB/s
mask_mult_bool_lookup_table ... bench: 19 ns/iter (+/- 0) = 368 MB/s
mask_mult_bool_match_range ... bench: 19 ns/iter (+/- 0) = 368 MB/s
mask_shifted_bool_match_range ... bench: 19 ns/iter (+/- 0) = 368 MB/s
```
2019-03-27 18:15:25 -07:00
Josh Stone
e5fa59735b
Rollup merge of #59268 - estebank:from-string, r=QuietMisdreavus
...
Add suggestion to use `&*var` when `&str: From<String>` is expected
Fix #53879 .
2019-03-27 18:15:24 -07:00
Josh Stone
ecf63630cf
Rollup merge of #58837 - Centril:librustc_interface_2018, r=petrochenkov
...
librustc_interface => 2018
r? @oli-obk
This will likely produce an ICE for some reason... so super-WIP.
2019-03-27 18:15:22 -07:00
Josh Stone
2a3c2bfce4
Rollup merge of #58253 - taiki-e:librustc_driver-2018, r=petrochenkov
...
librustc_driver => 2018
Transitions `librustc_driver` to Rust 2018; cc #58099
r? @Centril
2019-03-27 18:15:21 -07:00
Josh Stone
c818c1a1d6
Rollup merge of #57565 - petrochenkov:turbowarn, r=Centril
...
syntax: Remove warning for unnecessary path disambiguators
`rustfmt` is now stable and it removes unnecessary turbofishes, so removing the warning as discussed in https://github.com/rust-lang/rust/pull/43540 (where it was introduced).
One hardcoded warning less.
Closes https://github.com/rust-lang/rust/issues/58055
r? @nikomatsakis
2019-03-27 18:15:19 -07:00
Josh Stone
74a69f2e74
Rollup merge of #57293 - Zoxc:incr-passes3, r=michaelwoerister
...
Make some lints incremental
Blocked on https://github.com/rust-lang/rust/pull/57253
r? @michaelwoerister
2019-03-27 18:15:18 -07:00
bors
33ef0bad21
Auto merge of #59415 - varkor:values_since_snapshot, r=eddyb
...
Refactor InferenceFudger (née RegionFudger)
- Rename `RegionFudger` (and related methods) to `InferenceFudger`.
- Take integer and float inference variables into account.
- Refactor `types_created_since_snapshot` and `vars_created_since_snapshot` with the [new version of ena](https://github.com/rust-lang-nursery/ena/pull/21 ).
- Some other refactoring in the area.
r? @eddyb
2019-03-27 13:20:16 +00:00
varkor
86d5a69d9d
Use Vec instead of FxHashMap
2019-03-27 09:44:55 +00:00
varkor
688cbad9b8
Lookup region variable origin instead of choosing one
2019-03-27 09:44:55 +00:00
varkor
2d48ffa9c6
Store type variable origins in InferenceFudger
2019-03-27 09:44:55 +00:00
varkor
58a04f06cb
Propitiate tidy
2019-03-27 09:44:55 +00:00
varkor
3683f51352
Update ena to version 0.13.0
2019-03-27 09:44:55 +00:00
varkor
267370ed58
Use eq_relations
2019-03-27 09:44:55 +00:00
varkor
fa18c129c3
Add next_int_var
and next_float_var
2019-03-27 09:44:55 +00:00
varkor
f9d8bb8e2c
Simplify fudge_inference_if_ok
2019-03-27 09:44:55 +00:00
varkor
ac94858e32
Add int variables and float variables to InferenceFudger
2019-03-27 09:44:55 +00:00
varkor
1f9a2326b5
Rename RegionFudger
to InferenceFudger
2019-03-27 09:44:55 +00:00
varkor
6cc09fc8b2
Remove TypeVariableMap
2019-03-27 09:44:55 +00:00
varkor
abf5e81663
Use Ranges for vars_since_snapshot
2019-03-27 09:44:55 +00:00
varkor
a5c653be63
Simplify TypeVariableTable::vars_since_snapshot
2019-03-27 09:44:55 +00:00
varkor
2a08860ae6
Simplify RegionConstraintCollector::vars_since_snapshot
2019-03-27 09:44:55 +00:00
varkor
92b2021b0a
Make vars_since_snapshot
naming consistent
2019-03-27 09:44:55 +00:00
varkor
443a2d4f86
Update ena
2019-03-27 09:44:55 +00:00
bors
c5fb4d0d2f
Auto merge of #55780 - ogoffart:span_source_text, r=petrochenkov
...
Introduce proc_macro::Span::source_text
A function to extract the actual source behind a Span.
Background: I would like to use `syn` in a `build.rs` script to parse the rust code, and extract part of the source code. However, `syn` only gives access to proc_macro2::Span, and i would like to get the source code behind that.
I opened an issue on proc_macro2 bug tracker for this feature https://github.com/alexcrichton/proc-macro2/issues/110 and @alexcrichton said the feature should first go upstream in proc_macro. So there it is!
Since most of the Span API is unstable anyway, this is guarded by the same `proc_macro_span` feature as everything else.
2019-03-27 08:58:40 +00:00
Mazdak Farrokhzad
bf1068b137
librustc_interface => 2018; rename rustc-rayon to rayon in Cargo.toml
2019-03-27 09:48:50 +01:00
Mazdak Farrokhzad
14f3f6c712
librustc_interface => 2018
2019-03-27 09:41:42 +01:00
bors
267fb90b55
Auto merge of #59447 - GuillaumeGomez:rollup, r=GuillaumeGomez
...
Rollup of 7 pull requests
Successful merges:
- #59004 ([rustdoc] Improve "in parameters" search and search more generally)
- #59026 (Fix moving text in search tabs headers)
- #59197 (Exclude old book redirect stubs from search engines)
- #59330 (Improve the documentation for std::convert (From, Into, AsRef and AsMut))
- #59424 (Fix code block display in portability element in dark theme)
- #59427 (Link to PhantomData in NonNull documentation)
- #59432 (Improve some compiletest documentation)
Failed merges:
r? @ghost
2019-03-27 05:25:50 +00:00
bors
dd363d14ae
Auto merge of #59285 - cuviper:llvm-8.0.0, r=alexcrichton
...
Rebase LLVM to 8.0.0 final
r? @alexcrichton
2019-03-27 01:56:14 +00:00
Guillaume Gomez
cbb13f496c
Rollup merge of #59432 - phansch:compiletest_docs, r=alexcrichton
...
Improve some compiletest documentation
This adds some missing documentation for rustfix related things and adds
a test for the `is_test` function.
2019-03-26 22:26:46 +01:00
Guillaume Gomez
616ee876c1
Rollup merge of #59427 - czipperz:non_null_doc_links, r=Mark-Simulacrum
...
Link to PhantomData in NonNull documentation
2019-03-26 22:26:45 +01:00
Guillaume Gomez
07c83488d5
Rollup merge of #59424 - GuillaumeGomez:fix-stability-css, r=QuietMisdreavus
...
Fix code block display in portability element in dark theme
Fixes #59261 .
r? @QuietMisdreavus
A little screenshot:
<img width="521" alt="Screenshot 2019-03-26 at 00 37 49" src="https://user-images.githubusercontent.com/3050060/54961082-9a41c600-4f5f-11e9-8040-ae6f26d368ff.png ">
2019-03-26 22:26:43 +01:00
Guillaume Gomez
4e19b7a0e9
Rollup merge of #59330 - DevQps:improve-std-convert-documentation, r=steveklabnik
...
Improve the documentation for std::convert (From, Into, AsRef and AsMut)
# Description
In this PR I updated the documentation of From, Into, AsRef and AsMut, as well as the general std::convert module documentation. The discussion in #59163 provided information that was not yet present in the docs, or was not expressed clearly enough. I tried to clarify the examples that were already present in the docs as well as add more information about considered best-practices that came out of the discussion in #59163
@steveklabnik I hope I didn't change too much. This is an initial version! I will scan through everything tomorrow as well again to see if I made any typo's or errors, and maybe make some small changes here and there.
All suggestions are welcome!
closes #59163
2019-03-26 22:26:42 +01:00
Guillaume Gomez
3747868889
Rollup merge of #59197 - kornelski:redir, r=steveklabnik
...
Exclude old book redirect stubs from search engines
Adds `<meta name="robots" content="noindex,follow">` to the `<head>` of old stub pages pointing to the second edition of the book.
This is continuation of https://github.com/rust-lang/book/pull/1788
2019-03-26 22:26:40 +01:00
Guillaume Gomez
5f390f7a66
Rollup merge of #59026 - GuillaumeGomez:search-tabs-header, r=QuietMisdreavus
...
Fix moving text in search tabs headers
Fixes #59005 .
Now, the text in the search tabs headers isn't moving anymore.
r? @QuietMisdreavus
2019-03-26 22:26:39 +01:00
Guillaume Gomez
f131f042c2
Rollup merge of #59004 - GuillaumeGomez:generics-handling, r=QuietMisdreavus
...
[rustdoc] Improve "in parameters" search and search more generally
Fixes #58230 .
r? @QuietMisdreavus
2019-03-26 22:26:36 +01:00
Taiki Endo
24a0caec83
librustc_driver => 2018
2019-03-27 05:35:18 +09:00
bors
fbd34efb32
Auto merge of #59433 - Centril:rollup, r=Centril
...
Rollup of 10 pull requests
Successful merges:
- #59150 (Expand suggestions for type ascription parse errors)
- #59232 (Merge `Promoted` and `Static` in `mir::Place`)
- #59267 (Provide suggestion when using field access instead of path)
- #59315 (Add no_hash to query macro and move some queries over)
- #59334 (Update build instructions in README.md)
- #59362 (Demo `FromIterator` short-circuiting)
- #59374 (Simplify checked_duration_since)
- #59389 (replace redundant note in deprecation warning)
- #59410 (Clarify `{Ord,f32,f64}::clamp` docs a little)
- #59419 (Utilize `?` instead of `return None`.)
Failed merges:
r? @ghost
2019-03-26 17:25:16 +00:00
John Kåre Alsaker
4093bec80d
Exclude UnusedBrokenConst from module lints
2019-03-26 17:04:00 +01:00
bors
07d350897c
Auto merge of #59434 - Centril:bootstrap-to-2019-03-20, r=Mark-Simulacrum
...
Bump bootstrap compiler to 2019-03-20
Includes https://github.com/rust-lang/rust/pull/59295 and by extension https://github.com/rust-lang/rust/pull/59047 , which unblocks https://github.com/rust-lang/rust/pull/58253 , https://github.com/rust-lang/rust/pull/58837 , and possibly https://github.com/rust-lang/rust/pull/59336 , and so therefore:
@bors p=50
r? @Mark-Simulacrum
cc @pietroalbini
2019-03-26 13:58:30 +00:00
Mazdak Farrokhzad
d976dbe853
bump bootstrap; adjust stage0 uses in libsyntax_pos
2019-03-26 09:57:42 +01:00
Mazdak Farrokhzad
0b46f0e649
bump bootstrap; adjust stage0 uses in core::ptr.
2019-03-26 09:57:25 +01:00
Mazdak Farrokhzad
750983d356
bump bootstrap => 2019-03-20
2019-03-26 09:53:47 +01:00
Ralf Jung
853ae8d931
fix some uses I missed
2019-03-26 09:23:19 +01:00
Ralf Jung
0e0383abc6
adjust MaybeUninit API to discussions
...
uninitialized -> uninit
into_initialized -> assume_init
read_initialized -> read
set -> write
2019-03-26 09:21:32 +01:00
Mazdak Farrokhzad
822b4fcb3b
Rollup merge of #59419 - frewsxcv:frewsxcv-qu, r=varkor
...
Utilize `?` instead of `return None`.
None
2019-03-26 09:05:53 +01:00
Mazdak Farrokhzad
0677eb1eaa
Rollup merge of #59410 - tbu-:pr_doc_clarifyclamp, r=joshtriplett
...
Clarify `{Ord,f32,f64}::clamp` docs a little
Explicitly call out when it returns NaN, adhere to the panic doc
guidelines.
2019-03-26 09:05:52 +01:00
Mazdak Farrokhzad
95e7a50166
Rollup merge of #59389 - euclio:deprecated-suggestion, r=varkor
...
replace redundant note in deprecation warning
2019-03-26 09:05:51 +01:00
Mazdak Farrokhzad
e298691ee9
Rollup merge of #59374 - faern:simplify-checked-duration-since, r=shepmaster
...
Simplify checked_duration_since
This follows the same design as we updated to in #56490 . Internally, all the system specific time implementations are checked, no panics. Then the panicking publicly exported API can just call the checked version of itself and make do with a single panic (`expect`) at the top.
Since the internal sys implementations are now checked, this gets rid of the extra `if self >= &earlier` check in `checked_duration_since`. Except likely making the generated machine code simpler, it also reduces the algorithm from "Check panic condition -> call possibly panicking method" to just "call non panicking method".
Added two test cases:
* Edge case: Make sure `checked_duration_since` on two equal `Instant`s produce a zero duration, not a `None`.
* Most common/intended usage: Make sure `later.checked_duration_since(earlier)`, returns an expected value.
2019-03-26 09:05:48 +01:00