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

[v18.x backport] url: ensure getter access do not mutate observable symbols #48891

Closed

Conversation

aduh95
Copy link
Contributor

@aduh95 aduh95 commented Jul 23, 2023

Opening as draft so we can run benchmarks, if the perf looks OK, I'll open another PR to land the test on main first.

Refs: #48886

@aduh95 aduh95 requested a review from anonrig July 23, 2023 09:23
@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/url

@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. v18.x Issues that can be reproduced on v18.x or PRs targeting the v18.x-staging branch. whatwg-url Issues and PRs related to the WHATWG URL implementation. labels Jul 23, 2023
@aduh95 aduh95 changed the title url: ensure getter access do not mutate observable symbols [v18.x] url: ensure getter access do not mutate observable symbols Jul 23, 2023
@aduh95 aduh95 linked an issue Jul 23, 2023 that may be closed by this pull request
@aduh95
Copy link
Contributor Author

aduh95 commented Jul 23, 2023

Benchmark CI: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1354/

Results
                                                                                                                confidence improvement accuracy (*)    (**)   (***)
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='auth'                                                           -0.48 %       ±3.80%  ±5.11%  ±6.77%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='dot'                                                            -1.07 %       ±6.44%  ±8.60% ±11.25%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='file'                                                           -0.81 %       ±3.17%  ±4.22%  ±5.49%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='idn'                                                            -0.27 %       ±3.70%  ±4.97%  ±6.55%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='javascript'                                                     -0.44 %       ±1.47%  ±1.96%  ±2.55%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='long'                                                            1.38 %       ±2.29%  ±3.05%  ±3.97%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='percent'                                                        -0.01 %       ±1.82%  ±2.42%  ±3.15%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='short'                                                          -0.94 %       ±5.12%  ±6.82%  ±8.89%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='wpt'                                                            -1.26 %       ±3.20%  ±4.29%  ±5.66%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='ws'                                                              3.54 %       ±6.20%  ±8.26% ±10.76%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='auth'                                                            2.49 %       ±4.34%  ±5.83%  ±7.69%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='dot'                                                             1.08 %       ±4.75%  ±6.38%  ±8.41%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='file'                                                            1.96 %       ±3.93%  ±5.29%  ±7.01%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='idn'                                                             1.28 %       ±4.56%  ±6.13%  ±8.11%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='javascript'                                                      6.04 %       ±6.13%  ±8.21% ±10.78%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='long'                                                           -2.13 %       ±3.56%  ±4.76%  ±6.24%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='percent'                                                         0.72 %       ±1.25%  ±1.66%  ±2.17%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='short'                                                           4.07 %       ±5.52%  ±7.43%  ±9.83%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='wpt'                                                             2.09 %       ±4.13%  ±5.56%  ±7.37%
url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='ws'                                                             -1.54 %       ±2.45%  ±3.26%  ±4.25%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='auth' withBase='false'                                             -0.17 %       ±2.39%  ±3.18%  ±4.14%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='auth' withBase='true'                                              -0.25 %       ±2.75%  ±3.66%  ±4.76%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='dot' withBase='false'                                              -1.39 %       ±5.66%  ±7.54%  ±9.85%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='dot' withBase='true'                                                0.22 %       ±0.91%  ±1.21%  ±1.58%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='file' withBase='false'                                              1.24 %       ±1.89%  ±2.52%  ±3.29%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='file' withBase='true'                                              -0.26 %       ±1.21%  ±1.61%  ±2.09%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='idn' withBase='false'                                              -1.27 %       ±1.39%  ±1.85%  ±2.41%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='idn' withBase='true'                                               -1.71 %       ±4.12%  ±5.53%  ±7.30%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='javascript' withBase='false'                                       -3.37 %       ±4.11%  ±5.50%  ±7.22%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='javascript' withBase='true'                                        -1.69 %       ±3.87%  ±5.18%  ±6.83%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='long' withBase='false'                                              0.18 %       ±1.08%  ±1.45%  ±1.89%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='long' withBase='true'                                        *     -1.48 %       ±1.36%  ±1.83%  ±2.40%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='percent' withBase='false'                                          -0.51 %       ±1.30%  ±1.72%  ±2.24%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='percent' withBase='true'                                           -0.27 %       ±1.17%  ±1.56%  ±2.03%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='short' withBase='false'                                            -0.79 %       ±3.79%  ±5.08%  ±6.70%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='short' withBase='true'                                             -0.59 %       ±1.85%  ±2.46%  ±3.20%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='wpt' withBase='false'                                              -1.61 %       ±2.55%  ±3.42%  ±4.52%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='wpt' withBase='true'                                                0.37 %       ±2.61%  ±3.51%  ±4.65%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='ws' withBase='false'                                               -0.24 %       ±0.93%  ±1.24%  ±1.61%
url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='ws' withBase='true'                                                -2.01 %       ±2.20%  ±2.95%  ±3.88%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='auth' withBase='false'                                       *     -9.55 %       ±9.34% ±12.42% ±16.17%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='auth' withBase='true'                                              -6.45 %      ±11.43% ±15.22% ±19.85%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='dot' withBase='false'                                              -0.87 %      ±10.72% ±14.27% ±18.59%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='dot' withBase='true'                                               -2.64 %       ±9.55% ±12.70% ±16.54%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='file' withBase='false'                                             -1.38 %       ±9.91% ±13.21% ±17.22%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='file' withBase='true'                                              -2.08 %       ±9.39% ±12.50% ±16.27%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='idn' withBase='false'                                               4.21 %      ±11.98% ±15.95% ±20.76%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='idn' withBase='true'                                                6.69 %       ±8.91% ±11.87% ±15.47%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='javascript' withBase='false'                                       -4.88 %      ±11.61% ±15.45% ±20.11%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='javascript' withBase='true'                                        -1.42 %      ±10.75% ±14.30% ±18.62%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='long' withBase='false'                                             -5.55 %       ±9.55% ±12.71% ±16.54%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='long' withBase='true'                                               4.83 %      ±11.72% ±15.62% ±20.40%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='percent' withBase='false'                                          -4.53 %       ±8.25% ±10.97% ±14.28%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='percent' withBase='true'                                           -3.54 %       ±8.92% ±11.87% ±15.46%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='short' withBase='false'                                            -2.31 %      ±12.70% ±16.89% ±21.98%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='short' withBase='true'                                             -3.00 %      ±11.39% ±15.16% ±19.74%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='wpt' withBase='false'                                              -0.84 %       ±2.92%  ±3.90%  ±5.13%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='wpt' withBase='true'                                       ***     -2.56 %       ±0.90%  ±1.20%  ±1.57%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='ws' withBase='false'                                                1.50 %      ±10.70% ±14.24% ±18.55%
url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='ws' withBase='true'                                                -7.47 %      ±11.49% ±15.28% ±19.89%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='altspaces'                               -0.78 %       ±0.94%  ±1.25%  ±1.62%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodefake'                        *     -2.30 %       ±2.25%  ±2.99%  ±3.89%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodelast'                               1.10 %       ±1.39%  ±1.86%  ±2.43%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodemany'                              -0.56 %       ±0.93%  ±1.24%  ±1.61%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manyblankpairs'                          -3.40 %       ±3.63%  ±4.85%  ±6.36%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manypairs'                                0.43 %       ±0.94%  ±1.25%  ±1.63%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multicharsep'                            -1.06 %       ±1.78%  ±2.37%  ±3.08%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivalue'                              -0.80 %       ±1.68%  ±2.23%  ±2.91%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivaluemany'                           0.09 %       ±1.15%  ±1.53%  ±1.99%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='noencode'                          *     -2.73 %       ±2.38%  ±3.17%  ±4.13%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='altspaces'                               -0.40 %       ±1.75%  ±2.33%  ±3.04%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodefake'                              -1.39 %       ±2.02%  ±2.70%  ±3.52%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodelast'                               0.19 %       ±1.39%  ±1.85%  ±2.41%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodemany'                              -0.93 %       ±1.13%  ±1.50%  ±1.96%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manyblankpairs'                           0.11 %       ±5.77%  ±7.67%  ±9.99%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manypairs'                               -0.81 %       ±1.56%  ±2.07%  ±2.69%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multicharsep'                             0.19 %       ±1.11%  ±1.48%  ±1.93%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivalue'                               0.83 %       ±2.09%  ±2.78%  ±3.63%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivaluemany'                          -0.55 %       ±1.31%  ±1.75%  ±2.28%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='noencode'                                -2.52 %       ±3.58%  ±4.76%  ±6.19%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='altspaces'                           -0.04 %       ±1.54%  ±2.05%  ±2.67%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodefake'                          -0.01 %       ±1.68%  ±2.24%  ±2.91%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodelast'                          -0.52 %       ±1.23%  ±1.63%  ±2.12%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodemany'                          -0.35 %       ±1.94%  ±2.58%  ±3.36%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manyblankpairs'                       3.53 %       ±9.27% ±12.33% ±16.06%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manypairs'                           -0.39 %       ±1.33%  ±1.77%  ±2.30%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multicharsep'                         0.28 %       ±2.48%  ±3.30%  ±4.29%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivalue'                          -0.59 %       ±1.73%  ±2.30%  ±3.00%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivaluemany'                       0.50 %       ±1.01%  ±1.35%  ±1.76%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='noencode'                            -0.93 %       ±3.09%  ±4.11%  ±5.35%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='altspaces'                           -1.61 %       ±1.74%  ±2.32%  ±3.03%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodefake'                          -0.66 %       ±1.51%  ±2.00%  ±2.61%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodelast'                          -0.61 %       ±2.52%  ±3.36%  ±4.37%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodemany'                          -1.93 %       ±2.50%  ±3.34%  ±4.37%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manyblankpairs'              ***     24.36 %       ±8.31% ±11.06% ±14.41%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manypairs'                    **     -1.72 %       ±1.07%  ±1.42%  ±1.85%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multicharsep'                        -1.69 %       ±2.75%  ±3.66%  ±4.77%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivalue'                    *     -3.79 %       ±3.49%  ±4.65%  ±6.05%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivaluemany'               **     -1.82 %       ±1.06%  ±1.41%  ±1.84%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='noencode'                            -1.62 %       ±4.36%  ±5.81%  ±7.56%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='auth'                                                          -2.63 %       ±8.86% ±11.86% ±15.56%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='dot'                                                           -0.54 %       ±6.45%  ±8.58% ±11.16%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='file'                                                           8.70 %       ±9.79% ±13.04% ±16.99%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='idn'                                                            7.35 %      ±10.66% ±14.19% ±18.48%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='javascript'                                                    -3.02 %       ±8.78% ±11.69% ±15.23%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='long'                                                          -0.45 %       ±4.13%  ±5.56%  ±7.36%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='percent'                                                        9.10 %      ±10.05% ±13.42% ±17.55%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='short'                                                         -1.15 %       ±5.67%  ±7.56%  ±9.88%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='wpt'                                                           -1.22 %       ±6.12%  ±8.15% ±10.62%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='ws'                                                            -2.74 %       ±8.45% ±11.27% ±14.72%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='auth'                                                           5.39 %      ±12.42% ±16.54% ±21.56%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='dot'                                                           -1.68 %      ±12.19% ±16.21% ±21.10%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='file'                                                          -0.49 %      ±12.70% ±16.90% ±22.00%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='idn'                                                           -4.44 %      ±13.96% ±18.58% ±24.19%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='javascript'                                                    -8.25 %      ±12.18% ±16.21% ±21.11%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='long'                                                          -7.89 %      ±10.87% ±14.47% ±18.87%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='percent'                                                        2.66 %      ±11.51% ±15.32% ±19.96%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='short'                                                         -5.58 %      ±11.35% ±15.11% ±19.67%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='wpt'                                                           -2.52 %       ±3.24%  ±4.34%  ±5.71%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='ws'                                                            -3.95 %      ±13.32% ±17.73% ±23.07%
url/url-format.js n=25000000 type='file'                                                                                       -0.19 %       ±0.92%  ±1.23%  ±1.60%
url/url-format.js n=25000000 type='slashes'                                                                                     0.58 %       ±0.93%  ±1.24%  ±1.62%
url/url-parse.js n=10000000 type='escaped'                                                                                     -0.39 %       ±0.88%  ±1.18%  ±1.53%
url/url-parse.js n=10000000 type='normal'                                                                                       0.86 %       ±2.14%  ±2.87%  ±3.77%
url/url-resolve.js n=100000 path='down' href='auth'                                                                             0.19 %       ±1.97%  ±2.62%  ±3.42%
url/url-resolve.js n=100000 path='down' href='dot'                                                                              0.71 %       ±2.26%  ±3.00%  ±3.91%
url/url-resolve.js n=100000 path='down' href='file'                                                                            -0.62 %       ±2.11%  ±2.81%  ±3.66%
url/url-resolve.js n=100000 path='down' href='idn'                                                                              0.82 %       ±2.17%  ±2.88%  ±3.75%
url/url-resolve.js n=100000 path='down' href='javascript'                                                                      -1.33 %       ±3.20%  ±4.26%  ±5.55%
url/url-resolve.js n=100000 path='down' href='long'                                                                             0.92 %       ±1.50%  ±2.00%  ±2.60%
url/url-resolve.js n=100000 path='down' href='noscheme'                                                                         0.37 %       ±2.39%  ±3.19%  ±4.15%
url/url-resolve.js n=100000 path='down' href='percent'                                                                          0.88 %       ±2.84%  ±3.78%  ±4.92%
url/url-resolve.js n=100000 path='down' href='short'                                                                            0.90 %       ±2.29%  ±3.05%  ±3.97%
url/url-resolve.js n=100000 path='down' href='ws'                                                                              -0.86 %       ±1.99%  ±2.65%  ±3.46%
url/url-resolve.js n=100000 path='foo/bar' href='auth'                                                                         -0.41 %       ±1.99%  ±2.65%  ±3.45%
url/url-resolve.js n=100000 path='foo/bar' href='dot'                                                                          -0.11 %       ±2.40%  ±3.19%  ±4.16%
url/url-resolve.js n=100000 path='foo/bar' href='file'                                                                  **     -3.49 %       ±2.33%  ±3.11%  ±4.04%
url/url-resolve.js n=100000 path='foo/bar' href='idn'                                                                           2.38 %       ±2.60%  ±3.46%  ±4.50%
url/url-resolve.js n=100000 path='foo/bar' href='javascript'                                                                    0.74 %       ±2.90%  ±3.87%  ±5.04%
url/url-resolve.js n=100000 path='foo/bar' href='long'                                                                  **      2.31 %       ±1.63%  ±2.17%  ±2.83%
url/url-resolve.js n=100000 path='foo/bar' href='noscheme'                                                                     -0.51 %       ±3.41%  ±4.54%  ±5.91%
url/url-resolve.js n=100000 path='foo/bar' href='percent'                                                                      -2.21 %       ±2.56%  ±3.42%  ±4.46%
url/url-resolve.js n=100000 path='foo/bar' href='short'                                                                         1.07 %       ±2.30%  ±3.06%  ±3.99%
url/url-resolve.js n=100000 path='foo/bar' href='ws'                                                                            1.05 %       ±2.44%  ±3.24%  ±4.22%
url/url-resolve.js n=100000 path='sibling' href='auth'                                                                          0.70 %       ±2.12%  ±2.82%  ±3.67%
url/url-resolve.js n=100000 path='sibling' href='dot'                                                                          -1.12 %       ±2.00%  ±2.67%  ±3.50%
url/url-resolve.js n=100000 path='sibling' href='file'                                                                         -0.33 %       ±2.03%  ±2.70%  ±3.52%
url/url-resolve.js n=100000 path='sibling' href='idn'                                                                          -1.57 %       ±2.21%  ±2.94%  ±3.83%
url/url-resolve.js n=100000 path='sibling' href='javascript'                                                                   -2.32 %       ±2.88%  ±3.84%  ±5.00%
url/url-resolve.js n=100000 path='sibling' href='long'                                                                   *      1.70 %       ±1.65%  ±2.20%  ±2.86%
url/url-resolve.js n=100000 path='sibling' href='noscheme'                                                                      0.00 %       ±2.29%  ±3.05%  ±3.97%
url/url-resolve.js n=100000 path='sibling' href='percent'                                                                       0.14 %       ±2.86%  ±3.80%  ±4.95%
url/url-resolve.js n=100000 path='sibling' href='short'                                                                         1.71 %       ±1.76%  ±2.34%  ±3.05%
url/url-resolve.js n=100000 path='sibling' href='ws'                                                                            0.02 %       ±2.28%  ±3.03%  ±3.95%
url/url-resolve.js n=100000 path='up' href='auth'                                                                               0.77 %       ±2.23%  ±2.97%  ±3.87%
url/url-resolve.js n=100000 path='up' href='dot'                                                                               -0.76 %       ±2.06%  ±2.75%  ±3.59%
url/url-resolve.js n=100000 path='up' href='file'                                                                               1.12 %       ±1.65%  ±2.20%  ±2.86%
url/url-resolve.js n=100000 path='up' href='idn'                                                                                1.56 %       ±1.94%  ±2.58%  ±3.36%
url/url-resolve.js n=100000 path='up' href='javascript'                                                                        -0.82 %       ±2.64%  ±3.51%  ±4.56%
url/url-resolve.js n=100000 path='up' href='long'                                                                       **      2.49 %       ±1.68%  ±2.24%  ±2.93%
url/url-resolve.js n=100000 path='up' href='noscheme'                                                                          -0.36 %       ±2.76%  ±3.68%  ±4.79%
url/url-resolve.js n=100000 path='up' href='percent'                                                                           -0.25 %       ±2.46%  ±3.27%  ±4.26%
url/url-resolve.js n=100000 path='up' href='short'                                                                              0.76 %       ±2.61%  ±3.47%  ±4.52%
url/url-resolve.js n=100000 path='up' href='ws'                                                                                -0.78 %       ±2.19%  ±2.92%  ±3.82%
url/url-resolve.js n=100000 path='withscheme' href='auth'                                                                      -0.62 %       ±1.72%  ±2.29%  ±2.98%
url/url-resolve.js n=100000 path='withscheme' href='dot'                                                                       -0.47 %       ±2.57%  ±3.42%  ±4.46%
url/url-resolve.js n=100000 path='withscheme' href='file'                                                                       1.05 %       ±2.38%  ±3.18%  ±4.14%
url/url-resolve.js n=100000 path='withscheme' href='idn'                                                                 *     -2.35 %       ±1.94%  ±2.59%  ±3.38%
url/url-resolve.js n=100000 path='withscheme' href='javascript'                                                                -0.95 %       ±2.92%  ±3.88%  ±5.05%
url/url-resolve.js n=100000 path='withscheme' href='long'                                                                *     -1.52 %       ±1.45%  ±1.93%  ±2.53%
url/url-resolve.js n=100000 path='withscheme' href='noscheme'                                                                  -1.14 %       ±3.24%  ±4.32%  ±5.63%
url/url-resolve.js n=100000 path='withscheme' href='percent'                                                                    0.52 %       ±2.93%  ±3.90%  ±5.08%
url/url-resolve.js n=100000 path='withscheme' href='short'                                                                     -0.02 %       ±2.05%  ±2.73%  ±3.56%
url/url-resolve.js n=100000 path='withscheme' href='ws'                                                                         0.13 %       ±2.54%  ±3.38%  ±4.40%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='array'                                                    0.36 %       ±1.26%  ±1.68%  ±2.18%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='encodelast'                                              -0.17 %       ±3.12%  ±4.15%  ±5.40%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='encodemany'                                        *      3.40 %       ±3.06%  ±4.09%  ±5.34%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='multiprimitives'                                         -0.61 %       ±3.80%  ±5.05%  ±6.58%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='noencode'                                                -1.49 %       ±4.23%  ±5.63%  ±7.32%
url/url-searchparams-creation.js n=1000000 inputType='object' type='array'                                                     -0.27 %       ±0.74%  ±0.98%  ±1.28%
url/url-searchparams-creation.js n=1000000 inputType='object' type='encodelast'                                                -0.32 %       ±1.07%  ±1.42%  ±1.86%
url/url-searchparams-creation.js n=1000000 inputType='object' type='encodemany'                                                -0.18 %       ±0.69%  ±0.92%  ±1.20%
url/url-searchparams-creation.js n=1000000 inputType='object' type='multiprimitives'                                    **      1.33 %       ±0.83%  ±1.10%  ±1.44%
url/url-searchparams-creation.js n=1000000 inputType='object' type='noencode'                                            *      1.20 %       ±1.10%  ±1.46%  ±1.91%
url/url-searchparams-creation.js n=1000000 inputType='string' type='array'                                                      2.69 %       ±3.07%  ±4.09%  ±5.33%
url/url-searchparams-creation.js n=1000000 inputType='string' type='encodelast'                                                 2.23 %       ±3.63%  ±4.83%  ±6.30%
url/url-searchparams-creation.js n=1000000 inputType='string' type='encodemany'                                                -1.66 %       ±3.11%  ±4.14%  ±5.40%
url/url-searchparams-creation.js n=1000000 inputType='string' type='multiprimitives'                                           -0.39 %       ±3.69%  ±4.91%  ±6.39%
url/url-searchparams-creation.js n=1000000 inputType='string' type='noencode'                                                   1.77 %       ±2.81%  ±3.77%  ±4.95%
url/url-searchparams-iteration.js n=1000000 loopMethod='forEach'                                                               -1.31 %      ±11.11% ±14.78% ±19.24%
url/url-searchparams-iteration.js n=1000000 loopMethod='iterator'                                                              -2.43 %       ±8.23% ±10.95% ±14.27%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='get'                                         ***      4.03 %       ±2.05%  ±2.72%  ±3.54%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='getAll'                                       **      2.56 %       ±1.80%  ±2.40%  ±3.13%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='has'                                         ***      2.57 %       ±1.44%  ±1.92%  ±2.50%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='get'                                                 ***      3.63 %       ±1.72%  ±2.29%  ±2.99%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='getAll'                                              ***      3.19 %       ±0.92%  ±1.22%  ±1.59%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='has'                                                 ***      5.38 %       ±1.85%  ±2.46%  ±3.21%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='get'                                               ***      3.38 %       ±1.67%  ±2.23%  ±2.90%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='getAll'                                            ***      2.06 %       ±0.82%  ±1.09%  ±1.42%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='has'                                               ***      2.13 %       ±1.05%  ±1.40%  ±1.82%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='get'                                                 ***      4.10 %       ±1.68%  ±2.23%  ±2.90%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='getAll'                                              ***      1.81 %       ±0.89%  ±1.18%  ±1.54%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='has'                                                 ***      2.97 %       ±1.26%  ±1.67%  ±2.18%
url/url-searchparams-sort.js n=1000000 type='almostsorted'                                                                      0.37 %       ±5.54%  ±7.37%  ±9.59%
url/url-searchparams-sort.js n=1000000 type='empty'                                                                            -1.86 %       ±8.36% ±11.12% ±14.48%
url/url-searchparams-sort.js n=1000000 type='long'                                                                             -0.58 %       ±2.37%  ±3.15%  ±4.10%
url/url-searchparams-sort.js n=1000000 type='random'                                                                            3.81 %       ±4.78%  ±6.37%  ±8.30%
url/url-searchparams-sort.js n=1000000 type='reversed'                                                                          2.58 %       ±5.07%  ±6.75%  ±8.78%
url/url-searchparams-sort.js n=1000000 type='short'                                                                      *      6.56 %       ±5.27%  ±7.07%  ±9.32%
url/url-searchparams-sort.js n=1000000 type='sorted'                                                                           -1.33 %       ±5.98%  ±7.96% ±10.36%
url/url-searchparams-sort.js n=1000000 type='wpt'                                                                              -1.89 %      ±10.13% ±13.48% ±17.55%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='array'                                                    1.37 %       ±2.99%  ±3.98%  ±5.18%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='encodelast'                                               1.87 %       ±2.56%  ±3.41%  ±4.45%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='encodemany'                                               0.77 %       ±1.84%  ±2.44%  ±3.18%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='multiprimitives'                                   *     -4.23 %       ±3.35%  ±4.49%  ±5.90%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='noencode'                                                -0.57 %       ±5.01%  ±6.67%  ±8.68%
url/url-searchparams-toString.js n=1000000 inputType='object' type='array'                                                     -0.66 %       ±2.74%  ±3.65%  ±4.75%
url/url-searchparams-toString.js n=1000000 inputType='object' type='encodelast'                                                 2.22 %       ±2.62%  ±3.49%  ±4.54%
url/url-searchparams-toString.js n=1000000 inputType='object' type='encodemany'                                                 1.19 %       ±1.78%  ±2.36%  ±3.08%
url/url-searchparams-toString.js n=1000000 inputType='object' type='multiprimitives'                                            1.54 %       ±2.68%  ±3.59%  ±4.70%
url/url-searchparams-toString.js n=1000000 inputType='object' type='noencode'                                                  -1.57 %       ±4.24%  ±5.65%  ±7.35%
url/url-searchparams-toString.js n=1000000 inputType='string' type='array'                                                     -1.02 %       ±3.08%  ±4.10%  ±5.35%
url/url-searchparams-toString.js n=1000000 inputType='string' type='encodelast'                                                 0.07 %       ±2.52%  ±3.37%  ±4.41%
url/url-searchparams-toString.js n=1000000 inputType='string' type='encodemany'                                                 0.66 %       ±2.54%  ±3.38%  ±4.40%
url/url-searchparams-toString.js n=1000000 inputType='string' type='multiprimitives'                                            4.42 %       ±4.55%  ±6.09%  ±7.99%
url/url-searchparams-toString.js n=1000000 inputType='string' type='noencode'                                                  -3.55 %       ±5.67%  ±7.56%  ±9.85%
url/usvstring.js n=50000000 input='allinvalid'                                                                           *      0.24 %       ±0.22%  ±0.29%  ±0.38%
url/usvstring.js n=50000000 input='nonstring'                                                                                   0.26 %       ±0.54%  ±0.71%  ±0.93%
url/usvstring.js n=50000000 input='someinvalid'                                                                                 0.12 %       ±0.23%  ±0.31%  ±0.41%
url/usvstring.js n=50000000 input='valid'                                                                                      -0.08 %       ±1.17%  ±1.55%  ±2.03%
url/usvstring.js n=50000000 input='validsurr'                                                                                   0.13 %       ±0.47%  ±0.62%  ±0.81%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='all'                                                                       -0.65 %       ±1.87%  ±2.50%  ±3.25%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='empty'                                                                      0.74 %       ±3.16%  ±4.21%  ±5.48%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='none'                                                                      -0.48 %       ±1.09%  ±1.45%  ±1.88%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='nonstring'                                                                 -0.19 %       ±2.22%  ±2.95%  ±3.84%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='some'                                                                      -0.69 %       ±1.37%  ±1.82%  ±2.37%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='all'                                                                      0.35 %       ±0.77%  ±1.03%  ±1.34%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='empty'                                                                    0.21 %       ±1.15%  ±1.53%  ±1.99%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='none'                                                                     0.46 %       ±1.67%  ±2.23%  ±2.90%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='nonstring'                                                               -1.07 %       ±1.67%  ±2.23%  ±2.93%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='some'                                                                    -0.88 %       ±1.72%  ±2.29%  ±2.99%
url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='false'                                                       -1.03 %       ±7.64% ±10.17% ±13.24%
url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='true'                                                  *     -5.27 %       ±4.53%  ±6.09%  ±8.06%
url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='false'                                                        1.35 %       ±5.41%  ±7.20%  ±9.38%
url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='true'                                                        -1.83 %       ±3.79%  ±5.09%  ±6.72%
url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='false'                                            **     -3.99 %       ±2.60%  ±3.46%  ±4.50%
url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='true'                                                    -3.37 %       ±5.00%  ±6.65%  ±8.66%
url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='false'                                                       -0.57 %       ±5.62%  ±7.48%  ±9.74%
url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='true'                                                        -2.46 %       ±3.14%  ±4.23%  ±5.59%
url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='false'                                                      0.34 %       ±1.34%  ±1.79%  ±2.35%
url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='true'                                              ***     -1.56 %       ±0.88%  ±1.17%  ±1.52%
url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='false'                                                    1.14 %       ±3.90%  ±5.22%  ±6.84%
url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='true'                                                    -2.33 %       ±6.59%  ±8.77% ±11.42%
url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='false'                                                   -3.42 %       ±7.08%  ±9.45% ±12.37%
url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='true'                                             **     -2.33 %       ±1.58%  ±2.11%  ±2.75%
url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='false'                                                       -2.18 %       ±4.44%  ±5.92%  ±7.70%
url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='true'                                                        -0.35 %       ±4.37%  ±5.87%  ±7.75%
url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='false'                                             *     -5.87 %       ±4.54%  ±6.08%  ±7.98%
url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='true'                                                    -1.73 %       ±6.01%  ±8.09% ±10.71%
url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='false'                                                     -2.06 %       ±5.97%  ±7.94% ±10.34%
url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='true'                                                      -2.87 %       ±5.28%  ±7.10%  ±9.40%
url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='false'                                       ***     -6.38 %       ±2.93%  ±3.90%  ±5.08%
url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='true'                                        ***     -7.87 %       ±3.54%  ±4.76%  ±6.32%
url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='false'                                                   -2.60 %       ±3.51%  ±4.68%  ±6.12%
url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='true'                                            ***     -2.38 %       ±1.32%  ±1.76%  ±2.30%
url/whatwgurl-canParse.js n=25000000 type='auth'                                                                                0.05 %       ±0.77%  ±1.02%  ±1.33%
url/whatwgurl-canParse.js n=25000000 type='dot'                                                                                 0.28 %       ±1.33%  ±1.77%  ±2.31%
url/whatwgurl-canParse.js n=25000000 type='file'                                                                                0.58 %       ±2.03%  ±2.70%  ±3.51%
url/whatwgurl-canParse.js n=25000000 type='idn'                                                                                -0.05 %       ±1.08%  ±1.44%  ±1.88%
url/whatwgurl-canParse.js n=25000000 type='javascript'                                                                          0.26 %       ±0.90%  ±1.20%  ±1.56%
url/whatwgurl-canParse.js n=25000000 type='long'                                                                               -0.29 %       ±0.69%  ±0.91%  ±1.19%
url/whatwgurl-canParse.js n=25000000 type='percent'                                                                             0.51 %       ±0.84%  ±1.12%  ±1.46%
url/whatwgurl-canParse.js n=25000000 type='short'                                                                               0.35 %       ±1.16%  ±1.55%  ±2.02%
url/whatwgurl-canParse.js n=25000000 type='ws'                                                                                  1.08 %       ±1.39%  ±1.87%  ±2.46%
url/whatwgurl-to-and-from-path.js n=5000000 method='fileURLToPath' input='file:///dev/null?key=param&bool'              **     -1.50 %       ±0.89%  ±1.19%  ±1.55%
url/whatwgurl-to-and-from-path.js n=5000000 method='fileURLToPath' input='file:///dev/null?key=param&bool#hash'          *     -1.47 %       ±1.35%  ±1.80%  ±2.35%
url/whatwgurl-to-and-from-path.js n=5000000 method='fileURLToPath' input='file:///dev/null'                             **     -1.20 %       ±0.88%  ±1.17%  ±1.52%
url/whatwgurl-to-and-from-path.js n=5000000 method='pathToFileURL' input='file:///dev/null?key=param&bool'                     -0.65 %       ±1.29%  ±1.72%  ±2.23%
url/whatwgurl-to-and-from-path.js n=5000000 method='pathToFileURL' input='file:///dev/null?key=param&bool#hash'                -0.92 %       ±1.29%  ±1.72%  ±2.26%
url/whatwgurl-to-and-from-path.js n=5000000 method='pathToFileURL' input='file:///dev/null'                                    -1.40 %       ±1.40%  ±1.87%  ±2.43%

The test's assumptions about RSS are no longer valid, at least with
Fedora 38.

Closes: nodejs#48490
PR-URL: nodejs#48811
Fixes: nodejs#48490
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
@aduh95
Copy link
Contributor Author

aduh95 commented Jul 23, 2023

Benchmark results are mixed, but I think it makes sense to move forward with this change.

nodejs-github-bot pushed a commit that referenced this pull request Jul 24, 2023
PR-URL: #48897
Refs: #48891
Refs: #48886
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
@aduh95 aduh95 marked this pull request as ready for review July 24, 2023 09:25
@aduh95 aduh95 force-pushed the url-observable-symbols-v18.x branch from c73411e to eb29d9a Compare July 24, 2023 09:25
@aduh95 aduh95 changed the title [v18.x] url: ensure getter access do not mutate observable symbols [v18.x backport] url: ensure getter access do not mutate observable symbols Jul 24, 2023
@anonrig anonrig added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Jul 26, 2023
Copy link
Contributor

@LiviaMedeiros LiviaMedeiros left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM w/ or w/o nits

@@ -179,7 +186,7 @@ class URLContext {
}

function isURLSearchParams(self) {
return self && self[searchParams] && !self[searchParams][searchParams];
return self?.[searchParams];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return self?.[searchParams];
return Boolean(self?.[searchParams]);

return this[searchParams];

const cachedValue = internalSearchParams.get(this);
if (cachedValue != null)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (cachedValue != null)
if (cachedValue !== undefined)

Ceres6 pushed a commit to Ceres6/node that referenced this pull request Jul 27, 2023
pluris pushed a commit to pluris/node that referenced this pull request Aug 6, 2023
pluris pushed a commit to pluris/node that referenced this pull request Aug 7, 2023
Ceres6 pushed a commit to Ceres6/node that referenced this pull request Aug 14, 2023
Ceres6 pushed a commit to Ceres6/node that referenced this pull request Aug 14, 2023
UlisesGascon pushed a commit to UlisesGascon/node that referenced this pull request Aug 14, 2023
RafaelGSS pushed a commit that referenced this pull request Aug 15, 2023
PR-URL: #48897
Refs: #48891
Refs: #48886
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
@nodejs-github-bot
Copy link
Collaborator

@ruyadorno
Copy link
Member

@aduh95 Is this ready to land on v18.x?

@anonrig
Copy link
Member

anonrig commented Aug 16, 2023

@aduh95 Is this ready to land on v18.x?

Yes it is ready.

ruyadorno pushed a commit that referenced this pull request Aug 16, 2023
PR-URL: #48897
Backport-PR-URL: #48891
Refs: #48891
Refs: #48886
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
@ruyadorno
Copy link
Member

Landed in 0beb5ab

@ruyadorno ruyadorno closed this Aug 16, 2023
@aduh95 aduh95 deleted the url-observable-symbols-v18.x branch August 16, 2023 22:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. needs-ci PRs that need a full CI run. v18.x Issues that can be reproduced on v18.x or PRs targeting the v18.x-staging branch. whatwg-url Issues and PRs related to the WHATWG URL implementation.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[v18.17] Same URLs are different
6 participants