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

Update esbuild → 0.20.1 (unknown) #29

Merged
merged 1 commit into from
Mar 31, 2024

Conversation

depfu[bot]
Copy link
Contributor

@depfu depfu bot commented Feb 20, 2024

Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request.

What changed?

✳️ esbuild (^0.19.5 → ^0.20.1) · Repo · Changelog

Release Notes

0.20.1

  • Fix a bug with the CSS nesting transform (#3648)

    This release fixes a bug with the CSS nesting transform for older browsers where the generated CSS could be incorrect if a selector list contained a pseudo element followed by another selector. The bug was caused by incorrectly mutating the parent rule's selector list when filtering out pseudo elements for the child rules:

    /* Original code */
    .foo {
      &:after,
      & .bar {
        color: red;
      }
    }
    

    /* Old output (with --supported:nesting=false) */
    .foo .bar,
    .foo .bar {
    color: red;
    }

    /* New output (with --supported:nesting=false) */
    .foo:after,
    .foo .bar {
    color: red;
    }

  • Constant folding for JavaScript inequality operators (#3645)

    This release introduces constant folding for the < > <= >= operators. The minifier will now replace these operators with true or false when both sides are compile-time numeric or string constants:

    // Original code
    console.log(1 < 2, '🍕' > '🧀')
    

    // Old output (with --minify)
    console.log(1<2,"🍕">"🧀");

    // New output (with --minify)
    console.log(!0,!1);

  • Better handling of __proto__ edge cases (#3651)

    JavaScript object literal syntax contains a special case where a non-computed property with a key of __proto__ sets the prototype of the object. This does not apply to computed properties or to properties that use the shorthand property syntax introduced in ES6. Previously esbuild didn't correctly preserve the "sets the prototype" status of properties inside an object literal, meaning a property that sets the prototype could accidentally be transformed into one that doesn't and vice versa. This has now been fixed:

    // Original code
    function foo(__proto__) {
      return { __proto__: __proto__ } // Note: sets the prototype
    }
    function bar(__proto__, proto) {
      {
        let __proto__ = proto
        return { __proto__ } // Note: doesn't set the prototype
      }
    }
    

    // Old output
    function foo(proto) {
    return { proto }; // Note: no longer sets the prototype (WRONG)
    }
    function bar(proto, proto) {
    {
    let __proto__2 = proto;
    return { proto: __proto__2 }; // Note: now sets the prototype (WRONG)
    }
    }

    // New output
    function foo(proto) {
    return { proto: proto }; // Note: sets the prototype (correct)
    }
    function bar(proto, proto) {
    {
    let __proto__2 = proto;
    return { ["proto"]: __proto__2 }; // Note: doesn't set the prototype (correct)
    }
    }

  • Fix cross-platform non-determinism with CSS color space transformations (#3650)

    The Go compiler takes advantage of "fused multiply and add" (FMA) instructions on certain processors which do the operation x*y + z without intermediate rounding. This causes esbuild's CSS color space math to differ on different processors (currently ppc64le and s390x), which breaks esbuild's guarantee of deterministic output. To avoid this, esbuild's color space math now inserts a float64() cast around every single math operation. This tells the Go compiler not to use the FMA optimization.

  • Fix a crash when resolving a path from a directory that doesn't exist (#3634)

    This release fixes a regression where esbuild could crash when resolving an absolute path if the source directory for the path resolution operation doesn't exist. While this situation doesn't normally come up, it could come up when running esbuild concurrently with another operation that mutates the file system as esbuild is doing a build (such as using git to switch branches). The underlying problem was a regression that was introduced in version 0.18.0.

Does any of this look wrong? Please let us know.

Commits

See the full diff on Github. The new version differs by 7 commits:


Depfu Status

Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase.

All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu cancel merge
Cancels automatic merging of this PR
@​depfu close
Closes this PR and deletes the branch
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)

@depfu depfu bot added the depfu label Feb 20, 2024
@johnie johnie merged commit 084bc7d into master Mar 31, 2024
2 checks passed
@depfu depfu bot deleted the depfu/update/npm/esbuild-0.20.1 branch March 31, 2024 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant