Commit graph

8918 commits

Author SHA1 Message Date
bors
741a3d42cb Auto merge of #58002 - oli-obk:deprecated_sugg, r=zackmdavis
Add suggestions to deprecation lints

Clippy used to do this suggestion, but the clippy lints happen after the deprecation lints so we ended up never seeing the structured suggestions.
2019-02-01 01:06:15 +00:00
bors
8a0e5faec7 Auto merge of #58003 - nikic:saturating-add, r=nagisa
Use LLVM intrinsics for saturating add/sub

Use the `[su](add|sub).sat` LLVM intrinsics, if we're compiling against LLVM 8, as they should optimize and codegen better than IR based on `[su](add|sub).with.overlow`.

For the fallback for LLVM < 8 I'm using the same expansion that target lowering in LLVM uses, which is not the same as Rust currently uses (in particular due to the use of selects rather than branches).

Fixes #55286.
Fixes #52203.
Fixes #44500.

r? @nagisa
2019-01-31 13:40:11 +00:00
Mazdak Farrokhzad
c76456c253
Rollup merge of #58005 - vitiral:docs_trim_start_matches, r=Manishearth
update docs for fix_start/end_matches

fixes #57686:
2019-01-31 02:10:51 +01:00
Mazdak Farrokhzad
7ebb0a8c8e
Rollup merge of #57106 - matthiaskrgr:trim_must_use, r=sfackler
Mark str::trim.* functions as #[must_use].

The functions return a reference to a new object and do not modify in-place
as the following code shows:
````
let s = String::from("   hello   ");
s.trim();
assert_eq!(s, "   hello   ");
````

The new reference should be bound to a variable as now indicated by #[must_use].
2019-01-31 02:10:41 +01:00
Rett Berg
4a3caca978 fix #57686: update docs for fix_start/end_matches 2019-01-30 10:12:49 -08:00
Oliver Scherer
4056b575e2 Add suggestions to deprecation lints 2019-01-30 17:49:04 +01:00
Nikita Popov
4a4186e4d1 Use LLVM intrinsics for saturating add/sub 2019-01-29 22:32:13 +01:00
bors
c1c3c4e95b Auto merge of #57808 - gnzlbg:ustdsimd, r=gnzlbg
Update stdsimd

This is the companion PR to https://github.com/rust-lang-nursery/stdsimd/pull/640

r? @alexcrichton
2019-01-29 19:40:51 +00:00
gnzlbg
938a814e87 Update stdsimd 2019-01-29 10:48:54 +01:00
Mazdak Farrokhzad
f21f83d117
Rollup merge of #57045 - RalfJung:kill-more-uninit, r=SimonSapin
Kill remaining uses of mem::uninitialized in libcore, liballoc

Kill remaining uses of mem::uninitialized in libcore and liballoc, and enable a lint that will warn when uses are added again in the future.

To avoid casting raw pointers around (which is always very dangerous because it is not typechecked at all -- it doesn't even get the "same size" sanity check that `transmute` gets), I also added two new functions to `MaybeUninit`:

```rust
    /// Get a pointer to the first contained values.
    pub fn first_ptr(this: &[MaybeUninit<T>]) -> *const T {
        this as *const [MaybeUninit<T>] as *const T
    }

    /// Get a mutable pointer to the first contained values.
    pub fn first_mut_ptr(this: &mut [MaybeUninit<T>]) -> *mut T {
        this as *mut [MaybeUninit<T>] as *mut T
    }
```

I changed some of the existing code to use array-of-`MaybeUninit` instead of `MaybeUninit`-of-array, successfully removing raw pointer casts there as well.
2019-01-28 22:25:41 +01:00
bors
d8a0dd7ae8 Auto merge of #55704 - Nemo157:pinned-generators, r=Zoxc
Use pinning for generators to make trait safe

I'm unsure whether there needs to be any changes to the actual generator transform. Tests are passing so the fact that `Pin<&mut T>` is fundamentally the same as `&mut T` seems to allow it to still work, but maybe there's something subtle here that could go wrong.

This is specified in [RFC 2349 § Immovable generators](https://github.com/rust-lang/rfcs/blob/master/text/2349-pin.md#immovable-generators) (although, since that RFC it has become safe to create an immovable generator, and instead it's unsafe to resume any generator; with these changes both are now safe and instead the unsafety is moved to creating a `Pin<&mut [static generator]>` which there are safe APIs for).

CC #43122
2019-01-28 14:12:15 +00:00
Ralf Jung
6a52ca3fb4 rename first_mut_ptr -> first_ptr_mut 2019-01-28 12:37:29 +01:00
Ralf Jung
33a969d9fa fix typos, improve docs 2019-01-28 11:04:30 +01:00
Ralf Jung
0e8fb93249 Use warn() for extra diagnostics; with -D warnings this leads to errors
This is needed to properly respect "deny_warnings = false" in config.toml
2019-01-28 10:49:11 +01:00
Ralf Jung
22a947f3aa add macro for creating uninitialized array 2019-01-28 10:48:38 +01:00
Ralf Jung
ffd73df755 avoid mem::uninitialized in BTreeMap 2019-01-28 10:48:33 +01:00
Ralf Jung
a88414e007 libcore: avoid mem::uninitialized and raw ptr casts 2019-01-28 10:39:49 +01:00
Ralf Jung
c775c2fe96 libcore: remove unneeded allow(deprecated) 2019-01-28 10:39:49 +01:00
Wim Looman
be3989301a Update generator transform and generated function signature 2019-01-27 22:58:59 +01:00
Wim Looman
730b18b6e5 Mark static generators as !Unpin 2019-01-27 22:58:59 +01:00
Wim Looman
a3fdee9a75 Change generator trait to use pinning 2019-01-27 22:58:53 +01:00
bors
da6ab956e1 Auto merge of #56932 - clarcharr:iter_refactor, r=Centril
Refactor core::iter module

A while back, I refactored `core::ops` in #42523 because the module had become a giant mess and was difficult to modify. Now, I'm doing the same with the `core::iter` module.

Like the `core::ops` refactor, things have been split up into multiple commits to make rebasing easier, and so that you can follow changes. Although the diffs are hard to decipher, the only actual code changes I've made in the first few commits are to modify exports and imports. I save all of the actual code refactoring, e.g. modifying what methods are called, for the end.
2019-01-27 20:50:17 +00:00
bors
8611577360 Auto merge of #57765 - Mark-Simulacrum:bootstrap-bump, r=alexcrichton
Bump bootstrap compiler to 1.33 beta

r? @alexcrichton or @pietroalbini

cc @rust-lang/release
2019-01-27 18:18:17 +00:00
bors
71c365c380 Auto merge of #57826 - danielhenrymantilla:master, r=Centril
Fixed Deref coercion explanation for DerefMut using shared references
2019-01-27 15:33:45 +00:00
Mark Rousskov
7a58c6d1de Replace deprecated ATOMIC_INIT consts 2019-01-26 15:27:38 -07:00
Alex Macleod
9c9144fc1b Remove lexical scope examples from std::mem::drop
The example no longer produces an error in the 2018 edition
2019-01-26 21:59:17 +00:00
Mazdak Farrokhzad
5ce3f74096
Rollup merge of #57825 - RalfJung:zeroed, r=nikomatsakis
un-deprecate mem::zeroed

as per the discussion around <https://github.com/rust-lang/rust/issues/53491#issuecomment-451454793>
2019-01-26 18:21:45 +01:00
Mark Rousskov
b7f030e114 Bump bootstrap compiler to 1.33 beta 2019-01-26 08:02:08 -07:00
Alex Crichton
14b36fb15a std: Stabilize fixed-width integer atomics
This commit stabilizes the `Atomic{I,U}{8,16,32,64}` APIs in the
`std::sync::atomic` and `core::sync::atomic` modules. Proposed in #56753
and tracked in #32976 this feature has been unstable for quite some time
and is hopefully ready to go over the finish line now!

The API is being stabilized as-is. The API of `AtomicU8` and friends
mirrors that of `AtomicUsize`. A list of changes made here are:

* A portability documentation section has been added to describe the
  current state of affairs.
* Emulation of smaller-size atomics with larger-size atomics has been
  documented.
* As an added bonus, `ATOMIC_*_INIT` is now scheduled for deprecation
  across the board in 1.34.0 now that `const` functions can be invoked
  in statics.

Note that the 128-bit atomic types are omitted from this stabilization
explicitly. They have far less platform support than the other atomic
types, and will likely require further discussion about their best
location.

Closes #32976
Closes #56753
2019-01-25 11:48:10 -08:00
Mazdak Farrokhzad
284e1a86c0
Rollup merge of #56217 - frewsxcv:frewsxcv-float-parse, r=QuietMisdreavus
Add grammar in docs for {f32,f64}::from_str, mention known bug.

- Original bug about documenting grammar
  - https://github.com/rust-lang/rust/issues/32243
- Known bug with parsing
  - https://github.com/rust-lang/rust/issues/31407
2019-01-25 01:36:57 +01:00
Mazdak Farrokhzad
5fa1016f93
Rollup merge of #57873 - milesand:master, r=Centril
Stabilize no_panic_pow

This would close #48320.

I'm not sure if I've done this right, I've just changed attribute name to stable and set `since` to two minor versions above current stable since that seemed like what others were doing.
2019-01-24 18:25:52 +01:00
Jewoo Lee
b12aa4fb6e Stabilize no_panic_pow 2019-01-24 13:38:46 +09:00
Mazdak Farrokhzad
5749bac989
Rollup merge of #57834 - SimonSapin:type_id, r=Centril
Stabilize Any::get_type_id and rename to type_id

FCP: https://github.com/rust-lang/rust/issues/27745#issuecomment-373906749

Closes https://github.com/rust-lang/rust/issues/27745.
2019-01-24 00:19:58 +01:00
Corey Farwell
8af02faab8
reposition markdown hyperlink reference 2019-01-22 22:51:33 -05:00
Clar Fon
02bda7a061 Move trivial constructors to inherent methods 2019-01-22 17:45:11 -05:00
Clar Fon
4c28b2c4b1 Move nontrivial constructors to inherent methods 2019-01-22 17:45:11 -05:00
Clar Fon
5971ccc08d Don't expose ZipImpl to Iterator 2019-01-22 17:45:11 -05:00
Clar Fon
52b36e28d8 Move super_nth out of ZipImpl 2019-01-22 17:45:11 -05:00
Clar Fon
53b400c30c Don't expose FlattenCompat to Iterator 2019-01-22 17:45:11 -05:00
Clar Fon
7e4177311a Don't expose ChainState to Iterator 2019-01-22 17:45:11 -05:00
Clar Fon
fb974df281 Move Flatten and FlatMap to own module 2019-01-22 17:45:11 -05:00
Clar Fon
ebfd083125 Move Chain and ChainState to own module 2019-01-22 17:45:11 -05:00
Clar Fon
520e8b001e Move TrustedRandomAccess into Zip module 2019-01-22 17:45:11 -05:00
Clar Fon
3c44e1f085 Move Zip and ZipImpl to own module 2019-01-22 17:45:11 -05:00
Clar Fon
9228f3c6b2 Move FusedIterator, TrustedLen to own module 2019-01-22 17:45:11 -05:00
Clar Fon
4a036142a0 Move Sum, Product to own module 2019-01-22 17:45:11 -05:00
Clar Fon
3ba9733d71 Move FromIterator, IntoIterator, Extend into own module 2019-01-22 17:45:11 -05:00
Clar Fon
6a2845954a Move ExactSizeIterator to own module 2019-01-22 17:45:11 -05:00
Clar Fon
34d5624255 Move DoubleEndedIterator to own module 2019-01-22 17:45:11 -05:00
Clar Fon
c40450ce65 Move core::iter iterator.rs to traits module 2019-01-22 17:45:11 -05:00