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 8 pull requests #71933

Closed
wants to merge 24 commits into from

Commits on Apr 24, 2020

  1. Configuration menu
    Copy the full SHA
    8f5c66c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8730227 View commit details
    Browse the repository at this point in the history

Commits on Apr 26, 2020

  1. use new interface to create threads on HermitCore

    - the new interface allows to define the stack size
    stlankes committed Apr 26, 2020
    Configuration menu
    Copy the full SHA
    4d3cf5b View commit details
    Browse the repository at this point in the history

Commits on Apr 27, 2020

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

Commits on May 2, 2020

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

Commits on May 3, 2020

  1. x.py: Give a more helpful error message if curl isn't installed

    This also abstracts checking for a command into `require`.
    
    Before:
    
    ```
    Updating only changed submodules
    Submodules updated in 0.01 seconds
    Traceback (most recent call last):
      File "./x.py", line 11, in <module>
        bootstrap.main()
      ...
      File "/home/joshua/src/rust/src/bootstrap/bootstrap.py", line 137, in run
        ret = subprocess.Popen(args, **kwargs)
      File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
        errread, errwrite)
      File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
        raise child_exception
    OSError: [Errno 2] No such file or directory
    ```
    
    After:
    
    ```
    error: unable to run `curl --version`: [Errno 2] No such file or directory
    Please make sure it's installed and in the path.
    ```
    jyn514 committed May 3, 2020
    Configuration menu
    Copy the full SHA
    9bcf409 View commit details
    Browse the repository at this point in the history
  2. Define UB in float-to-int casts to saturate

    - Round to zero, and representable values cast directly.
    - `NaN` goes to 0
    - Values beyond the limits of the type are saturated to the "nearest value"
      (essentially rounding to zero, in some sense) in the integral type, so e.g.
      `f32::INFINITY` would go to `{u,i}N::MAX.`
    Mark-Simulacrum committed May 3, 2020
    Configuration menu
    Copy the full SHA
    810c1b4 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    5a759f9 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    2528fa3 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    d65d179 View commit details
    Browse the repository at this point in the history

Commits on May 4, 2020

  1. Configuration menu
    Copy the full SHA
    61fdd3e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    40a6b8c View commit details
    Browse the repository at this point in the history
  3. edit Mutex comment

    RalfJung committed May 4, 2020
    Configuration menu
    Copy the full SHA
    3f50292 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    b83853d View commit details
    Browse the repository at this point in the history

Commits on May 5, 2020

  1. Configuration menu
    Copy the full SHA
    f9866f9 View commit details
    Browse the repository at this point in the history
  2. backport 1.43.1 release notes

    cuviper authored and pietroalbini committed May 5, 2020
    Configuration menu
    Copy the full SHA
    3857506 View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#71269 - Mark-Simulacrum:sat-float-casts, r=…

    …nikic
    
    Define UB in float-to-int casts to saturate
    
    This closes rust-lang#10184 by defining the behavior there to saturate infinities and values exceeding the integral range (on the lower or upper end). `NaN` is sent to zero.
    Dylan-DPC committed May 5, 2020
    Configuration menu
    Copy the full SHA
    e2911f9 View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#71510 - ssomers:btreemap_iter_intertwined, …

    …r=Mark-Simulacrum
    
    Btreemap iter intertwined
    
    3 commits:
    
    1. Introduced benchmarks for `BTreeMap::iter()`. Benchmarks named `iter_20` were of the whole iteration process, so I renamed them. Also the benchmarks of `range` that I wrote earlier weren't very good. I included an (awkwardly named) one that compares `iter()` to `range(..)` on the same set, because the contrast is surprising:
    ```
     name                                           ns/iter
     btree::map::range_unbounded_unbounded          28,176
     btree::map::range_unbounded_vs_iter            89,369
    ```
    Both dig up the same pair of leaf edges. `range(..)` also checks that some keys are correctly ordered, the only thing `iter()` does more is to copy the map's length.
    
    2. Slightly refactoring the code to what I find more readable (not in chronological order of discovery), boosts performance:
    ```
    >cargo-benchcmp.exe benchcmp a1 a2 --threshold 5
     name                                   a1 ns/iter  a2 ns/iter  diff ns/iter   diff %  speedup
     btree::map::find_rand_100              18          17                    -1   -5.56%   x 1.06
     btree::map::first_and_last_10k         64          71                     7   10.94%   x 0.90
     btree::map::iter_0                     2,939       2,209               -730  -24.84%   x 1.33
     btree::map::iter_1                     6,845       2,696             -4,149  -60.61%   x 2.54
     btree::map::iter_100                   8,556       3,672             -4,884  -57.08%   x 2.33
     btree::map::iter_10k                   9,292       5,884             -3,408  -36.68%   x 1.58
     btree::map::iter_1m                    10,268      6,510             -3,758  -36.60%   x 1.58
     btree::map::iteration_mut_100000       478,575     453,050          -25,525   -5.33%   x 1.06
     btree::map::range_unbounded_unbounded  28,176      36,169             7,993   28.37%   x 0.78
     btree::map::range_unbounded_vs_iter    89,369      38,290           -51,079  -57.16%   x 2.33
     btree::set::clone_100_and_remove_all   4,801       4,245               -556  -11.58%   x 1.13
     btree::set::clone_10k_and_remove_all   529,450     496,030          -33,420   -6.31%   x 1.07
    ```
    But you can tell from the `range_unbounded_*` lines that, despite an unwarranted, vengeful attack on the range_unbounded_unbounded benchmark, this change still doesn't allow `iter()` to catch up with `range(..)`.
    
    3. I guess that `range(..)` copes so well because it intertwines the leftmost and rightmost descend towards leaf edges, doing the two root node accesses close together, perhaps exploiting a CPU's internal pipelining? So the third commit distils a version of `range_search` (which we can't use directly because of the `Ord` bound), and we get another boost:
    ```
    cargo-benchcmp.exe benchcmp a2 a3 --threshold 5
     name                                   a2 ns/iter  a3 ns/iter  diff ns/iter   diff %  speedup
     btree::map::first_and_last_100         40          43                     3    7.50%   x 0.93
     btree::map::first_and_last_10k         71          64                    -7   -9.86%   x 1.11
     btree::map::iter_0                     2,209       1,719               -490  -22.18%   x 1.29
     btree::map::iter_1                     2,696       2,205               -491  -18.21%   x 1.22
     btree::map::iter_100                   3,672       2,943               -729  -19.85%   x 1.25
     btree::map::iter_10k                   5,884       3,929             -1,955  -33.23%   x 1.50
     btree::map::iter_1m                    6,510       5,532               -978  -15.02%   x 1.18
     btree::map::iteration_mut_100000       453,050     476,667           23,617    5.21%   x 0.95
     btree::map::range_included_excluded    405,075     371,297          -33,778   -8.34%   x 1.09
     btree::map::range_included_included    427,577     397,440          -30,137   -7.05%   x 1.08
     btree::map::range_unbounded_unbounded  36,169      28,175            -7,994  -22.10%   x 1.28
     btree::map::range_unbounded_vs_iter    38,290      30,838            -7,452  -19.46%   x 1.24
    ```
    But I think this is just fake news from the microbenchmarking media. `iter()` is still trying to catch up with `range(..)`. And we can sure do without another function. So I would skip this 3rd commit.
    
    r? @Mark-Simulacrum
    Dylan-DPC committed May 5, 2020
    Configuration menu
    Copy the full SHA
    9feb47b View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#71591 - hermitcore:thread_create, r=hanna-k…

    …ruppe
    
    use new interface to create threads on HermitCore
    
    - the new interface allows to define the stack size
    - increase the default stack size to 1 MByte
    Dylan-DPC committed May 5, 2020
    Configuration menu
    Copy the full SHA
    ae77058 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#71727 - hbina:simplified_usage, r=Mark-Simu…

    …lacrum
    
    SipHasher with keys initialized to 0 should just use new()
    
    I believe that is what the `new()` is for, for good reasons.
    Dylan-DPC committed May 5, 2020
    Configuration menu
    Copy the full SHA
    5bd0e21 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#71819 - jyn514:check-for-tools, r=Mark-Simu…

    …lacrum
    
    x.py: Give a more helpful error message if curl isn't installed
    
    Before:
    
    ```
    Updating only changed submodules
    Submodules updated in 0.01 seconds
    Traceback (most recent call last):
      File "./x.py", line 11, in <module>
        bootstrap.main()
      ...
      File "/home/joshua/src/rust/src/bootstrap/bootstrap.py", line 137, in run
        ret = subprocess.Popen(args, **kwargs)
      File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
        errread, errwrite)
      File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
        raise child_exception
    OSError: [Errno 2] No such file or directory
    ```
    
    After:
    
    ```
    Updating only changed submodules
    Submodules updated in 0.01 seconds
    
    spurious failure, trying again
    
    spurious failure, trying again
    
    spurious failure, trying again
    
    spurious failure, trying again
    failed to run: curl -s -y 30 -Y 10 --connect-timeout 30 --retry 3 -Sf -o /tmp/tmpSWF21P.sha256 https://static.rust-lang.org/dist/2020-04-22/rust-std-beta-x86_64-unknown-linux-gnu.tar.gz.sha256: [Errno 2] No such file or directory
    Build completed unsuccessfully in 0:00:00
    ```
    Dylan-DPC committed May 5, 2020
    Configuration menu
    Copy the full SHA
    7b75c0e View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#71889 - RalfJung:rwlock, r=Amanieu

    Explain our RwLock implementation
    
    Turns out that [with the latest POSIX docs](https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_wrlock.html), our `RwLock` implementation is actually correct. However, we cannot fully rely on that due to bugs in older glibc (fix released in 2016). Update the comments to explain that.
    
    I also clarified our Mutex docs a bit and fixed another instance of rust-lang#55865.
    
    r? @Amanieu
    Fixes rust-lang#53127
    Dylan-DPC committed May 5, 2020
    Configuration menu
    Copy the full SHA
    2fcdbb6 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#71905 - mibac138:x-cmd-alias, r=Mark-Simula…

    …crum
    
    Add command aliases from Cargo to x.py commands
    
    Fixes rust-lang#71357
    Dylan-DPC committed May 5, 2020
    Configuration menu
    Copy the full SHA
    3b3857d View commit details
    Browse the repository at this point in the history
  10. Rollup merge of rust-lang#71914 - pietroalbini:relnotes-1.43.1, r=Mar…

    …k-Simulacrum
    
    Backport 1.43.1 release notes to master
    
    r? @Mark-Simulacrum
    Dylan-DPC committed May 5, 2020
    Configuration menu
    Copy the full SHA
    382faf9 View commit details
    Browse the repository at this point in the history