Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: npm/node-semver
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v7.6.2
Choose a base ref
...
head repository: npm/node-semver
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v7.6.3
Choose a head ref
  • 3 commits
  • 6 files changed
  • 3 contributors

Commits on Jun 13, 2024

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

Commits on Jul 16, 2024

  1. fix: optimize Range parsing and formatting (#726)

    <!-- What / Why -->
    <!-- Describe the request in detail. What it does and why it's being
    changed. -->
    
    This pull request optimizes the Range class in the following ways:
    
    1. Produce fewer intermediate objects when reducing a range's space
    characters to single spaces. This seems to improve bench-subset scores
    by up to 5%, and bench-satisfies scores to a lesser degree.
    2. Optimize Range formatting with explicit for loops instead, avoiding
    an intermediate array creation. This seems to improve bench-satisfies
    and bench-subset scores by up to 20%.
    3. Calculate Range's `.range` string (used by `.format()` and
    `.toString()`) lazily. This seems to improve bench-satisfies and
    bench-subset scores by up to 9%.
    
    The external interface for the class stays the same, except for the new
    internal `.formatted` property used to cache its lazily calculated
    string. `Range#range` property is now also read-only.
    
    There is a new test lazy formatting to ensure full test coverage.
    
    The benchmarks bench-satisfies and bench-subset benefit from these
    changes, sometimes by up to 40%. Other benchmark results seem to stay
    the same. Here are the affected benchmarks before:
    
    ```
    $ node benchmarks/bench-satisfies.js
    satisfies(1.0.6, 1.0.3||^2.0.0) x 695,094 ops/sec ±0.68% (97 runs sampled)
    satisfies(1.0.6, 2.2.2||~3.0.0) x 764,115 ops/sec ±0.40% (99 runs sampled)
    satisfies(1.0.6, 2.3.0||<4.0.0) x 805,593 ops/sec ±0.62% (97 runs sampled)
    satisfies(1.0.6, 1.0.3||^2.0.0, {"includePrelease":true}) x 695,045 ops/sec ±0.73% (95 runs sampled)
    satisfies(1.0.6, 2.2.2||~3.0.0, {"includePrelease":true}) x 750,433 ops/sec ±0.66% (99 runs sampled)
    satisfies(1.0.6, 2.3.0||<4.0.0, {"includePrelease":true}) x 787,903 ops/sec ±0.39% (99 runs sampled)
    satisfies(1.0.6, 1.0.3||^2.0.0, {"includePrelease":true,"loose":true}) x 652,166 ops/sec ±0.34% (99 runs sampled)
    satisfies(1.0.6, 2.2.2||~3.0.0, {"includePrelease":true,"loose":true}) x 696,377 ops/sec ±0.36% (96 runs sampled)
    satisfies(1.0.6, 2.3.0||<4.0.0, {"includePrelease":true,"loose":true}) x 721,729 ops/sec ±0.35% (98 runs sampled)
    satisfies(1.0.6, 1.0.3||^2.0.0, {"includePrelease":true,"loose":true,"rtl":true}) x 585,692 ops/sec ±0.75% (95 runs sampled)
    satisfies(1.0.6, 2.2.2||~3.0.0, {"includePrelease":true,"loose":true,"rtl":true}) x 631,653 ops/sec ±0.33% (96 runs sampled)
    satisfies(1.0.6, 2.3.0||<4.0.0, {"includePrelease":true,"loose":true,"rtl":true}) x 650,110 ops/sec ±0.64% (95 runs sampled)
    
    $ node benchmarks/bench-subset.js
    subset(1.2.3, *) x 633,342 ops/sec ±0.61% (95 runs sampled)
    subset(^1.2.3, *) x 743,036 ops/sec ±0.47% (97 runs sampled)
    subset(^1.2.3-pre.0, *) x 680,087 ops/sec ±0.76% (98 runs sampled)
    subset(^1.2.3-pre.0, *) x 680,948 ops/sec ±0.46% (96 runs sampled)
    subset(1 || 2 || 3, *) x 330,669 ops/sec ±0.53% (98 runs sampled)
    ```
    
    And after:
    
    ```
    $ node benchmarks/bench-satisfies.js
    satisfies(1.0.6, 1.0.3||^2.0.0) x 896,936 ops/sec ±0.53% (94 runs sampled)
    satisfies(1.0.6, 2.2.2||~3.0.0) x 998,214 ops/sec ±0.40% (95 runs sampled)
    satisfies(1.0.6, 2.3.0||<4.0.0) x 1,000,593 ops/sec ±0.43% (97 runs sampled)
    satisfies(1.0.6, 1.0.3||^2.0.0, {"includePrelease":true}) x 890,369 ops/sec ±0.41% (100 runs sampled)
    satisfies(1.0.6, 2.2.2||~3.0.0, {"includePrelease":true}) x 977,239 ops/sec ±0.48% (97 runs sampled)
    satisfies(1.0.6, 2.3.0||<4.0.0, {"includePrelease":true}) x 983,682 ops/sec ±0.95% (96 runs sampled)
    satisfies(1.0.6, 1.0.3||^2.0.0, {"includePrelease":true,"loose":true}) x 805,330 ops/sec ±0.84% (98 runs sampled)
    satisfies(1.0.6, 2.2.2||~3.0.0, {"includePrelease":true,"loose":true}) x 894,117 ops/sec ±0.43% (99 runs sampled)
    satisfies(1.0.6, 2.3.0||<4.0.0, {"includePrelease":true,"loose":true}) x 911,742 ops/sec ±0.42% (96 runs sampled)
    satisfies(1.0.6, 1.0.3||^2.0.0, {"includePrelease":true,"loose":true,"rtl":true}) x 741,254 ops/sec ±0.35% (97 runs sampled)
    satisfies(1.0.6, 2.2.2||~3.0.0, {"includePrelease":true,"loose":true,"rtl":true}) x 807,380 ops/sec ±0.42% (99 runs sampled)
    satisfies(1.0.6, 2.3.0||<4.0.0, {"includePrelease":true,"loose":true,"rtl":true}) x 820,390 ops/sec ±0.37% (99 runs sampled)
    
    $ node benchmarks/bench-subset.js
    subset(1.2.3, *) x 905,030 ops/sec ±0.63% (96 runs sampled)
    subset(^1.2.3, *) x 1,026,457 ops/sec ±0.63% (95 runs sampled)
    subset(^1.2.3-pre.0, *) x 923,789 ops/sec ±0.41% (97 runs sampled)
    subset(^1.2.3-pre.0, *) x 923,136 ops/sec ±0.44% (96 runs sampled)
    subset(1 || 2 || 3, *) x 432,037 ops/sec ±0.67% (96 runs sampled)
    ```
    jviide authored Jul 16, 2024
    1 Configuration menu
    Copy the full SHA
    73a3d79 View commit details
    Browse the repository at this point in the history
  2. chore: release 7.6.3 (#720)

    🤖 I have created a release *beep* *boop*
    ---
    
    
    ## [7.6.3](v7.6.2...v7.6.3)
    (2024-07-16)
    
    ### Bug Fixes
    
    *
    [`73a3d79`](73a3d79)
    [#726](#726) optimize Range
    parsing and formatting (#726) (@jviide)
    
    ### Documentation
    
    *
    [`2975ece`](2975ece)
    [#719](#719) fix extra backtick
    typo (#719) (@stdavis)
    
    ---
    This PR was generated with [Release
    Please](https://github.com/googleapis/release-please). See
    [documentation](https://github.com/googleapis/release-please#release-please).
    
    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Jul 16, 2024
    1 Configuration menu
    Copy the full SHA
    0a12d6c View commit details
    Browse the repository at this point in the history
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy