Commit graph

6368 commits

Author SHA1 Message Date
Stjepan Glavina
ececbb2687 Simplify by calling SliceOrd::compare 2017-02-08 16:01:32 +01:00
Stjepan Glavina
3bd6e46687 Specialize PartialOrd<A> for [A] where A: Ord
This way we can call `cmp` instead of `partial_cmp` in the loop,
removing some burden of optimizing `Option`s away from the compiler.

PR #39538 introduced a regression where sorting slices suddenly became
slower, since `slice1.lt(slice2)` was much slower than
`slice1.cmp(slice2) == Less`. This problem is now fixed.

To verify, I benchmarked this simple program:
```rust
fn main() {
    let mut v = (0..2_000_000).map(|x| x * x * x * 18913515181).map(|x| vec![x, x ^ 3137831591]).collect::<Vec<_>>();
    v.sort();
}
```

Before this PR, it would take 0.95 sec, and now it takes 0.58 sec.
I also tried changing the `is_less` lambda to use `cmp` and
`partial_cmp`. Now all three versions (`lt`, `cmp`, `partial_cmp`) are
equally performant for sorting slices - all of them take 0.58 sec on the
benchmark.
2017-02-08 12:19:50 +01:00
Son
2ba0b65c27 Improve fmt float
* Move to a separate float mod
* Add more tests for f64 f32 lower exp upper exp
* Use assert_eq for a clearer error message
2017-02-07 20:58:34 +11:00
Zack M. Davis
65435e14fe improve error message when two-arg assert_eq! receives a trailing comma
Previously, `assert_eq!(left, right,)` (respectively, `assert_ne!(left,
right,)`; note the trailing comma) would result in a confusing "requires
at least a format string argument" error. In reality, a format string is
optional, but the trailing comma puts us into the "match a token tree of
zero or more tokens" branch of the macro (in order to support the
optional format string), and passing the empty token tree into
`format_args!` results in the confusing error. If instead we match a
token tree of one or more tokens, we get a much more sensible
"unexpected end of macro invocation" error.

While we're here, fix up a stray space before a comma in the match
guards.

Resolves #39369.
2017-02-06 22:33:09 -08:00
Alex Crichton
bfa264271c Revert "Add 128-bit atomics"
This reverts commit 9903975003.
2017-02-06 10:39:14 -08:00
Son
7c8c45e762 Extract collections benchmarks to libcollections/benches
And libcore/benches
2017-02-06 21:38:47 +11:00
bors
031c1168b9 Auto merge of #39567 - frewsxcv:rollup, r=frewsxcv
Rollup of 12 pull requests

- Successful merges: #39439, #39472, #39481, #39491, #39501, #39509, #39514, #39519, #39526, #39528, #39530, #39538
- Failed merges:
2017-02-05 19:33:55 +00:00
Corey Farwell
ac329cd122 Rollup merge of #39501 - phungleson:libcorebench, r=alexcrichton
Extract libcore benchmarks to a separate folder

Fix #39484

r? @alexcrichton since you seem to know about this :)

Thanks!
2017-02-05 12:45:07 -05:00
bors
fc02736d59 Auto merge of #39408 - ollie27:i128_try_from, r=alexcrichton
Fix TryFrom for i128/u128

Another case of `as` cast silent truncation being error prone.

This also adds a few missing TryFrom tests to libcoretest.

cc #33417
cc #35118
2017-02-05 16:57:29 +00:00
Corey Farwell
e06fa7cf07 Rollup merge of #39477 - jimmycuadra:try-from-parameter-name, r=alexcrichton
Add a name for the parameter to `TryFrom::try_from`.

Although signatures with anonymous parameters may not be deprecated or removed at this point, the team seems to agree that the ability to have an anonymous parameter is unfortunate historical baggage, and that we shouldn't create new code that uses it.

Context: https://github.com/rust-lang/rust/issues/33417#issuecomment-276933861
2017-02-05 09:14:53 -05:00
Corey Farwell
65b24779a9 Rollup merge of #39393 - ollie27:stab_impls, r=alexcrichton
Fix a few impl stability attributes

The versions show up in rustdoc.
2017-02-05 09:14:45 -05:00
Corey Farwell
76e9ea7382 Rollup merge of #39289 - shahn:option_entry, r=alexcrichton
Provide Entry-like API for Option

This implements #39288.

I am wondering whether to use std::intrinsics::unreachable!() here. Both seems fine to me (the second match optimizes away in release mode).
2017-02-05 09:14:42 -05:00
Corey Farwell
8163b4b1f2 Rollup merge of #39107 - llogiq:branchless_filter_count, r=alexcrichton
branchless .filter(_).count()

I found that the branchless version is only slower if we have little to no branch misses, which usually isn't the case. I notice speedups between -5% (perfect prediction) and 60% (real world data).
2017-02-05 09:14:40 -05:00
Corey Farwell
c4c6c49e52 Rollup merge of #38959 - Amanieu:atomic128, r=alexcrichton
Add 128-bit atomics

This is currently only supported on AArch64 since that is the only target which unconditionally supports 128-bit atomic operations.

cc #35118
2017-02-05 09:14:37 -05:00
Sebastian Hahn
8e02ad0ada Provide Entry-like API for Option
This implements #39288.

Thanks to @steveklabnik and @oli-obk for their review comments :)
2017-02-05 00:48:44 +01:00
Oliver Middleton
a2de6e2285 Fix TryFrom for i128/u128
Another case of `as` cast silent truncation being error prone.

This also adds a few missing TryFrom tests to libcoretest.
2017-02-04 23:10:28 +00:00
bors
1b5c7ac833 Auto merge of #39399 - clarcharr:iter_rfind, r=alexcrichton
Add Iterator::rfind.

I found it weird that `Iterator` has `rpostition` but not `rfind`. This adds that method.
2017-02-04 04:53:53 +00:00
Son
34f444de5d Extract libcore benchmarks to a separate folder 2017-02-04 10:04:22 +11:00
bors
0648517faf Auto merge of #39463 - alexcrichton:update-bootstrap, r=alexcrichton
Bump version, upgrade bootstrap

This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 22:55:28 +00:00
Alex Crichton
626e754473 Bump version, upgrade bootstrap
This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 13:25:46 -08:00
Michał Krasnoborski
0267529681 Merge remote-tracking branch 'upstream/master' into format-with-capacity 2017-02-03 17:48:07 +01:00
Clar Charr
3cf485c963 Move rfind to DoubleEndedIterator, add tracking issue. 2017-02-03 00:01:52 -05:00
bors
5de2a24b2e Auto merge of #39287 - wesleywiser:move_cell, r=aturon
Extend Cell to work with non-Copy types

I'm not sure that I did this right but all of the tests pass.

I also had to move the `new()` function so that `Cell`s with non-`Copy` `T`s could be created. That wasn't in the RFC but I assume it needed to be done?
2017-02-03 03:23:35 +00:00
Jimmy Cuadra
2add6ac14a Add a name for the parameter to TryFrom::try_from.
Although signatures with anonymous parameters may not be deprecated or
removed at this point, the team seems to agree that the ability to have
an anonymous parameter is unfortunate historical baggage, and that we
shouldn't create new code that uses it.

Context: https://github.com/rust-lang/rust/issues/33417#issuecomment-276933861
2017-02-02 17:40:44 -08:00
Wesley Wiser
daa509109f Update cell docs 2017-02-01 22:51:52 -05:00
Michał Krasnoborski
ecda7f314f remove the wrapping arithmetics 2017-02-02 03:38:12 +01:00
Michał Krasnoborski
7403ee9d07 Adjust heuristics to better handle "{}..." format strings. 2017-02-01 23:47:03 +01:00
bors
55f9712d14 Auto merge of #39407 - GuillaumeGomez:convert_module, r=frewsxcv
Add missing url in convert module

r? @frewsxcv
2017-01-30 13:16:57 +00:00
bors
c8699376cd Auto merge of #39405 - tshepang:nits, r=sfackler
doc: minor Option improvements
2017-01-30 06:45:13 +00:00
Tshepang Lekhonkhobe
4814fa488e doc: minor Option improvements 2017-01-30 08:39:03 +02:00
Guillaume Gomez
19c9f18b2c Add missing url in convert module 2017-01-29 23:33:12 +01:00
Clar Charr
4af76e88f3 Add Iterator::rfind. 2017-01-29 15:44:55 -05:00
Oliver Middleton
9128f6100c Fix a few impl stability attributes
The versions show up in rustdoc.
2017-01-29 13:31:47 +00:00
Michał Krasnoborski
e74b55b9da use String::with_capacity in format! 2017-01-28 01:50:05 +01:00
Alex Crichton
7c75608cfb Rollup merge of #39344 - ollie27:links, r=steveklabnik
Fix a few links in the docs

r? @steveklabnik
2017-01-27 16:42:07 -08:00
Alex Crichton
0edc3d37bb Rollup merge of #39307 - alexcrichton:stabilize-1.16, r=brson
std: Stabilize APIs for the 1.16.0 release

This commit applies the stabilization/deprecations of the 1.16.0 release, as
tracked by the rust-lang/rust issue tracker and the final-comment-period tag.

The following APIs were stabilized:

* `VecDeque::truncate`
* `VecDeque::resize`
* `String::insert_str`
* `Duration::checked_{add,sub,div,mul}`
* `str::replacen`
* `SocketAddr::is_ipv{4,6}`
* `IpAddr::is_ipv{4,6}`
* `str::repeat`
* `Vec::dedup_by`
* `Vec::dedup_by_key`
* `Result::unwrap_or_default`
* `<*const T>::wrapping_offset`
* `<*mut T>::wrapping_offset`
* `CommandExt::creation_flags` (on Windows)
* `File::set_permissions`
* `String::split_off`

The following APIs were deprecated

* `EnumSet` - replaced with other ecosystem abstractions, long since unstable

Closes #27788
Closes #35553
Closes #35774
Closes #36436
Closes #36949
Closes #37079
Closes #37087
Closes #37516
Closes #37827
Closes #37916
Closes #37966
Closes #38080
2017-01-27 16:42:06 -08:00
Oliver Middleton
09b3903aec Fix a few links in the docs 2017-01-27 18:08:51 +00:00
Wesley Wiser
afac3ecacc Move stability attributes per feedback 2017-01-26 21:28:22 -05:00
bors
5158501367 Auto merge of #39075 - est31:remove_reflect, r=nikomatsakis
Remove Reflect

PR for removing the `Reflect` trait. Opened so that a crater run can be done for testing the impact: https://github.com/rust-lang/rust/issues/27749#issuecomment-272665163

Fixes #27749
2017-01-26 09:54:03 +00:00
Alex Crichton
671b1c1d89 std: Stabilize APIs for the 1.16.0 release
This commit applies the stabilization/deprecations of the 1.16.0 release, as
tracked by the rust-lang/rust issue tracker and the final-comment-period tag.

The following APIs were stabilized:

* `VecDeque::truncate`
* `VecDeque::resize`
* `String::insert_str`
* `Duration::checked_{add,sub,div,mul}`
* `str::replacen`
* `SocketAddr::is_ipv{4,6}`
* `IpAddr::is_ipv{4,6}`
* `str::repeat`
* `Vec::dedup_by`
* `Vec::dedup_by_key`
* `Result::unwrap_or_default`
* `<*const T>::wrapping_offset`
* `<*mut T>::wrapping_offset`
* `CommandExt::creation_flags` (on Windows)
* `File::set_permissions`
* `String::split_off`

The following APIs were deprecated

* `EnumSet` - replaced with other ecosystem abstractions, long since unstable

Closes #27788
Closes #35553
Closes #35774
Closes #36436
Closes #36949
Closes #37079
Closes #37087
Closes #37516
Closes #37827
Closes #37916
Closes #37966
Closes #38080
2017-01-25 16:43:01 -08:00
Guillaume Gomez
6ca35a6e18 Rollup merge of #38930 - insaneinside:place-left-arrow-syntax-docs, r=brson
Updates to src/libcore/ops.rs docs for RFC#1228 (Placement Left Arrow)

Also fixed a minor typo in docs for `core::ops::Place`.
2017-01-25 17:08:14 +01:00
Wesley Wiser
c6cfa3c489 Extend Cell to work with non-Copy types
Part of #39264
2017-01-24 22:48:38 -05:00
est31
af46d69b8a Remove Reflect
* Remove the Reflect trait
* Remove the "reflect" lang feature
2017-01-24 23:22:44 +01:00
Andre Bogus
bfabe817de add explanation, fix test 2017-01-24 09:46:01 +01:00
Geoff Yoerger
c0a5b99f01 Revert previous commit 2017-01-20 09:25:03 -06:00
Geoff Yoerger
dfa9736e9f Clarify the default option to use 2017-01-19 21:43:34 -06:00
Geoff Yoerger
02ead27c93 Into item level docs (enum Ordering) 2017-01-19 20:43:43 -06:00
Geoff Yoerger
c4c9ff2f00 '.' 2017-01-19 20:39:54 -06:00
Geoff Yoerger
b4192aa4df Module level doc 2017-01-19 20:38:26 -06:00
Sean Leffler
b08ab1e20d Add warning about varying hashes/orderings 2017-01-17 13:56:46 -08:00