Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 5 pull requests #72659

Closed
wants to merge 16 commits into from

Commits on May 24, 2020

  1. Configuration menu
    Copy the full SHA
    cd5f228 View commit details
    Browse the repository at this point in the history

Commits on May 25, 2020

  1. Configuration menu
    Copy the full SHA
    68bab3e View commit details
    Browse the repository at this point in the history
  2. Fix typo in src/libcore/num/f32.rs

    Co-authored-by: bluss <[email protected]>
    golddranks and bluss authored May 25, 2020
    Configuration menu
    Copy the full SHA
    b6eec22 View commit details
    Browse the repository at this point in the history
  3. Fix typo in src/libcore/num/f32.rs

    Co-authored-by: bluss <[email protected]>
    golddranks and bluss authored May 25, 2020
    Configuration menu
    Copy the full SHA
    d6650e0 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    bd68de8 View commit details
    Browse the repository at this point in the history
  5. Add bit twiddling

    golddranks committed May 25, 2020
    Configuration menu
    Copy the full SHA
    6973fd7 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    8bc31ff View commit details
    Browse the repository at this point in the history

Commits on May 26, 2020

  1. Configuration menu
    Copy the full SHA
    66da735 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    591584e View commit details
    Browse the repository at this point in the history

Commits on May 27, 2020

  1. Configuration menu
    Copy the full SHA
    822ad87 View commit details
    Browse the repository at this point in the history
  2. Add myself to .mailmap

    ldm0 committed May 27, 2020
    Configuration menu
    Copy the full SHA
    42ddcd3 View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#72310 - jyn514:peekable-next-if, r=dtolnay

    Add Peekable::next_if
    
    Prior art:
    
    `rust_analyzer` uses [`Parser::eat`](https://github.com/rust-analyzer/rust-analyzer/blob/50f4ae798b7c54d417ee88455b87fd0477473150/crates/ra_parser/src/parser.rs#L94), which is `next_if` specialized to `|y| self.next_if(|x| x == y)`.
    
    Basically every other parser I've run into in Rust has an equivalent of `Parser::eat`; see for example
    
    - [cranelift](https://github.com/bytecodealliance/wasmtime/blob/94190d57244b26baf36629c88104b0ba516510cf/cranelift/reader/src/parser.rs#L498)
    - [rcc](https://github.com/jyn514/rcc/blob/a8159c3904a0c950fbba817bf9109023fad69033/src/parse/mod.rs#L231)
    - [crunch](https://github.com/Kixiron/crunch-lang/blob/8521874fab8a7d62bfa7dea8bd1da94b63e31be8/crates/crunch-parser/src/parser/mod.rs#L213-L241)
    
    Possible extensions: A specialization of `next_if` to using `Eq::eq`. The only difficulty here is the naming - maybe `next_if_eq`?
    
    Alternatives:
    - Instead of `func: impl FnOnce(&I::Item) -> bool`, use `func: impl FnOnce(I::Item) -> Option<I::Item>`. This has the advantage that `func` can move the value if necessary, but means that there is no guarantee `func` will return the same value it was given.
    - Instead of `fn next_if(...) -> Option<I::Item>`, use `fn next_if(...) -> bool`. This makes the common case of `iter.next_if(f).is_some()` easier, but makes the unusual case impossible.
    
    Bikeshedding on naming:
    - `next_if` could be renamed to `consume_if` (to match `eat`, but a little more formally)
    - `next_if_eq` could be renamed to `consume`. This is more concise but less self-explanatory if you haven't written a lot of parsers.
    - Both of the above, but with `consume` replaced by `eat`.
    Dylan-DPC authored May 27, 2020
    Configuration menu
    Copy the full SHA
    e200252 View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#72547 - alex:patch-1, r=oli-obk

    Added a codegen test for a recent optimization for overflow-checks=on
    
    Closes rust-lang#58692
    Dylan-DPC authored May 27, 2020
    Configuration menu
    Copy the full SHA
    e7d9396 View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#72568 - golddranks:add_total_cmp_to_floats,…

    … r=sfackler
    
    Implement total_cmp for f32, f64
    
    # Overview
    * Implements method `total_cmp` on `f32` and `f64`. This method implements a float comparison that, unlike the standard `partial_cmp`, is total (defined on all values) in accordance to the IEEE 754 (rev 2008) §5.10 `totalOrder` predicate.
    * The method has an API similar to `cmp`: `pub fn total_cmp(&self, other: &Self) -> crate::cmp::Ordering { ... }`.
    * Implements tests.
    * Has documentation.
    
    # Justification for the API
    * Total ordering for `f32` and `f64` has been discussed many time before:
      * https://internals.rust-lang.org/t/pre-pre-rfc-range-restricting-wrappers-for-floating-point-types/6701
      * rust-lang/rfcs#1249
      * rust-lang#53938
      * rust-lang#5585
    * The lack of total ordering leads to frequent complaints, especially from people new to Rust.
      * This is an ergonomics issue that needs to be addressed.
      * However, the default behaviour of implementing only `PartialOrd` is intentional, as relaxing it might lead to correctness issues.
    * Most earlier implementations and discussions have been focusing on a wrapper type that implements trait `Ord`. Such a wrapper type is, however not easy to add because of the large API surface added.
    * As a minimal step that hopefully proves uncontroversial, we can implement a stand-alone method `total_cmp` on floating point types.
      * I expect adding such methods should be uncontroversial because...
        * Similar methods on `f32` and `f64` would be warranted even in case stdlib would provide a wrapper type that implements `Ord` some day.
        * It implements functionality that is standardised. (IEEE 754, 2008 rev. §5.10 Note, that the 2019 revision relaxes the ordering. The way we do ordering in this method conforms to the stricter 2008 standard.)
    * With stdlib APIs such as `slice::sort_by` and `slice::binary_search_by` that allow users to provide a custom ordering criterion, providing additional helper methods is a minimal way of adding ordering functionality.
      * Not also does it allow easily using aforementioned APIs, it also provides an easy and well-tested primitive for the users and library authors to implement an `Ord`-implementing wrapper, if needed.
    Dylan-DPC authored May 27, 2020
    Configuration menu
    Copy the full SHA
    874a176 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#72628 - MikailBag:array-default-tests, r=sh…

    …epmaster
    
    Add tests for 'impl Default for [T; N]'
    
    Related: rust-lang#71690.
    This pull request adds two tests:
    - Even it T::default() panics, no leaks occur.
    - [T; 0] is Default even if T is not.
    
    I believe at some moment `Default` impl for arrays will be rewritten to use const generics instead of macros, and these tests will help to prevent behavior changes.
    Dylan-DPC authored May 27, 2020
    Configuration menu
    Copy the full SHA
    e4193fb View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#72645 - ldm0:mailmap, r=nikomatsakis

    Add myself to .mailmap
    Dylan-DPC authored May 27, 2020
    Configuration menu
    Copy the full SHA
    4fff843 View commit details
    Browse the repository at this point in the history