Skip to content

Update ember-estree to 0.9 - #266

Merged
NullVoxPopuli merged 2 commits into
ember-tooling:mainfrom
NullVoxPopuli-ai-agent:nvp/ember-estree-0.9
Oct 21, 2026
Merged

NullVoxPopuli merged 2 commits into
ember-tooling:mainfrom
NullVoxPopuli-ai-agent:nvp/ember-estree-0.9

Conversation

@NullVoxPopuli-ai-agent

Copy link
Copy Markdown

Updates ember-estree to 0.9 and makes the eslint-plugin-ember job pass.

The first commit is the bump from #263 by @johanrd, cherry-picked onto the latest main so that it includes #264.

The second commit points scripts/eslint-plugin-ember-test.mjs at a new fork branch, ember-estree-0.9. That branch is update-blockparam-nodetype plus one commit that changes two template-vars tests:

Test Old expectation New expectation Cause
two top-level <template>s 1 semi error valid The old placeholders joined the two templates into one tagged template. 0.9 gives two GlimmerTemplate nodes.
export default <template> without ; valid the test adds ; 0.9 keeps the ExportDefaultDeclaration (NullVoxPopuli/ember-estree#82). semi exempts only class and function declarations.

The second row changes behavior for users. With semi: always, export default <template>...</template> now needs a ;. prettier-plugin-ember-template-tag writes no ; there, but Prettier setups usually turn off semi with eslint-config-prettier. The parser still keeps the export wrapper, because rules that read default exports need it.

Checked locally:

  • pnpm test and pnpm lint in this repo pass.
  • The full eslint-plugin-ember suite passes against this branch: 6327 tests.

🤖 Generated with Claude Code

johanrd and others added 2 commits October 21, 2026 14:48
The branch builds on update-blockparam-nodetype and updates two
template-vars tests for ember-estree 0.9.

- Two top-level templates no longer give a `semi` error. The old
  placeholders joined them into one tagged template.
- `export default <template>` now gets a `semi` error, because the tree
  keeps the ExportDefaultDeclaration. The test adds the `;`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@NullVoxPopuli NullVoxPopuli added the enhancement New feature or request label Oct 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🏎️ Benchmark Comparison

Parse

Benchmark Control (p50) Experiment (p50) Δ
🟢 gts small 791.44 ms 758.11 ms -4.2%
🟢 gts medium 1335.24 ms 1281.04 ms -4.1%
⚪ gts large 615.64 ms 611.95 ms -0.6%
🟢 gjs small 657.96 ms 640.68 ms -2.6%
⚪ gjs medium 1162.25 ms 1164.33 ms +0.2%
🟢 gjs large 541.86 ms 497.56 ms -8.2%
🟠 hbs small 87.08 ms 89.75 ms +3.1%
⚪ hbs medium 585.21 ms 583.21 ms -0.3%
⚪ hbs large 665.51 ms 657.01 ms -1.3%

🟢 faster · 🔴 slower · 🟠 slightly slower · ⚪ within 2%

Full mitata output
clk: ~3.54 GHz
cpu: AMD EPYC 9V74 80-Core Processor
runtime: node 24.22.0 (x64-linux)

benchmark                   avg (min … max) p75 / p99    (min … top 1%)
------------------------------------------- -------------------------------
gts small (control)          812.38 ms/iter 835.46 ms            █         
                       (690.05 ms … 1.03 s) 935.03 ms ▅▅  ▅▅▅ ▅  █▅  ▅    ▅
                    ( 12.40 mb …  87.16 mb)  34.29 mb ██▁▁███▁█▁▁██▁▁█▁▁▁▁█

gts small (experiment)       785.91 ms/iter 828.53 ms    █                 
                       (667.27 ms … 1.02 s) 912.15 ms ▅ ▅█ ▅ ▅ ▅▅  ▅ ▅    ▅
                    ( 11.90 mb …  87.03 mb)  39.00 mb █▁██▁█▁█▁██▁▁█▁█▁▁▁▁█

                             ┌                                            ┐
                                 ╷      ┌────────────┬───┐                ╷
         gts small (control)     ├──────┤            │   ├────────────────┤
                                 ╵      └────────────┴───┘                ╵
                             ╷     ┌─────────────┬──────┐             ╷
      gts small (experiment) ├─────┤             │      ├─────────────┤
                             ╵     └─────────────┴──────┘             ╵
                             └                                            ┘
                             667.27 ms         801.15 ms          935.03 ms

summary
  gts small (experiment)
   1.03x faster than gts small (control)

------------------------------------------- -------------------------------
gts medium (control)            1.37 s/iter    1.39 s      █               
                          (1.25 s … 1.76 s)    1.46 s      █   █           
                    ( 84.59 mb … 101.65 mb)  87.89 mb █▁█▁▁█▁▁██▁▁▁█▁▁█▁▁▁█

gts medium (experiment)         1.34 s/iter    1.38 s █  █                 
                          (1.24 s … 1.72 s)    1.41 s █ ▅█ ▅  ▅    ▅  ▅  ▅▅
                    ( 33.77 mb … 105.60 mb)  85.96 mb █▁██▁█▁▁█▁▁▁▁█▁▁█▁▁██

                             ┌                                            ┐
                               ╷         ┌──────────────┬─┐               ╷
        gts medium (control)   ├─────────┤              │ ├───────────────┤
                               ╵         └──────────────┴─┘               ╵
                             ╷   ┌───────────────┬──────┐     ╷
     gts medium (experiment) ├───┤               │      ├─────┤
                             ╵   └───────────────┴──────┘     ╵
                             └                                            ┘
                             1.24 s              1.35 s              1.46 s

summary
  gts medium (experiment)
   1.02x faster than gts medium (control)

------------------------------------------- -------------------------------
gts large (control)          663.42 ms/iter 681.46 ms    █                 
                    (591.76 ms … 986.82 ms) 708.70 ms    █                 
                    ( 16.65 mb …  87.81 mb)  35.25 mb █▁████▁█▁▁▁▁▁▁▁█▁█▁▁█

gts large (experiment)       651.53 ms/iter 645.53 ms    █                 
                    (588.06 ms … 930.32 ms) 705.49 ms    █                 
                    ( 18.54 mb …  89.39 mb)  37.13 mb █▁█████▁▁▁█▁▁▁▁▁█▁▁▁█

                             ┌                                            ┐
                              ╷      ┌───────────────────┬──────┐         ╷
         gts large (control)  ├──────┤                   │      ├─────────┤
                              ╵      └───────────────────┴──────┘         ╵
                             ╷     ┌─────────────────┬                   ╷
      gts large (experiment) ├─────┤                 │───────────────────┤
                             ╵     └─────────────────┴                   ╵
                             └                                            ┘
                             588.06 ms         648.38 ms          708.70 ms

summary
  gts large (experiment)
   1.02x faster than gts large (control)

------------------------------------------- -------------------------------
gjs small (control)          676.50 ms/iter 692.27 ms          █           
                    (594.52 ms … 895.86 ms) 742.16 ms      █   █           
                    ( 32.21 mb …  47.67 mb)  34.77 mb █▁▁███▁▁▁█▁▁▁█▁█▁▁▁▁█

gjs small (experiment)       675.40 ms/iter 666.73 ms      █              █
                    (602.30 ms … 904.88 ms) 733.92 ms ▅ ▅ ▅█▅▅ ▅▅         █
                    ( 32.13 mb …  47.68 mb)  34.53 mb █▁█▁████▁██▁▁▁▁▁▁▁▁▁█

                             ┌                                            ┐
                             ╷         ┌──────────────┬────┐              ╷
         gjs small (control) ├─────────┤              │    ├──────────────┤
                             ╵         └──────────────┴────┘              ╵
                               ╷       ┌──────────────┬                ╷
      gjs small (experiment)   ├───────┤              │────────────────┤
                               ╵       └──────────────┴                ╵
                             └                                            ┘
                             594.52 ms         668.34 ms          742.16 ms

summary
  gjs small (experiment)
   1x faster than gjs small (control)

------------------------------------------- -------------------------------
gjs medium (control)            1.20 s/iter    1.22 s █                    
                          (1.12 s … 1.55 s)    1.27 s █                    
                    ( 20.81 mb …  93.73 mb)  73.15 mb ██▁█▁█▁██▁▁▁▁██▁▁▁▁▁█

gjs medium (experiment)         1.20 s/iter    1.21 s     █          █     
                          (1.09 s … 1.58 s)    1.25 s ▅   █▅ ▅ ▅  ▅ ▅█    ▅
                    ( 26.60 mb … 101.48 mb)  69.15 mb █▁▁▁██▁█▁█▁▁█▁██▁▁▁▁█

                             ┌                                            ┐
                                     ┌───────────────────┬──┐             ╷
        gjs medium (control)         │                   │  ├─────────────┤
                                     └───────────────────┴──┘             ╵
                             ╷       ┌───────────────────┬┐          ╷
     gjs medium (experiment) ├───────┤                   │├──────────┤
                             ╵       └───────────────────┴┘          ╵
                             └                                            ┘
                             1.09 s              1.18 s              1.27 s

summary
  gjs medium (control)
   1x faster than gjs medium (experiment)

------------------------------------------- -------------------------------
gjs large (control)          575.56 ms/iter 549.13 ms     █                
                    (516.56 ms … 829.94 ms) 656.13 ms   ███                
                    (413.88 kb …  70.85 mb)  40.36 mb █▁████▁▁▁█▁▁▁▁▁▁▁▁▁▁█

gjs large (experiment)       533.74 ms/iter 508.38 ms  █ ██                
                    (483.15 ms … 811.62 ms) 594.28 ms ▅█▅██▅  ▅           ▅
                    (  2.52 mb …  74.09 mb)  33.00 mb ██████▁▁█▁▁▁▁▁▁▁▁▁▁▁█

                             ┌                                            ┐
                                      ╷   ┌──────────┬                    ╷
         gjs large (control)          ├───┤          │────────────────────┤
                                      ╵   └──────────┴                    ╵
                             ╷ ┌──────────┬               ╷
      gjs large (experiment) ├─┤          │───────────────┤
                             ╵ └──────────┴               ╵
                             └                                            ┘
                             483.15 ms         569.64 ms          656.13 ms

summary
  gjs large (experiment)
   1.08x faster than gjs large (control)

------------------------------------------- -------------------------------
hbs small (control)           99.72 ms/iter 102.65 ms       █       █      
                     (72.15 ms … 193.93 ms) 114.65 ms ▅  ▅ ▅█▅▅     █▅    ▅
                    ( 51.34 mb …  56.31 mb)  53.62 mb █▁▁█▁████▁▁▁▁▁██▁▁▁▁█

hbs small (experiment)       101.02 ms/iter  99.35 ms      █    █          
                     (71.68 ms … 218.88 ms) 109.46 ms ▅  ▅ █   ▅█   ▅▅   ▅▅
                    ( 51.27 mb …  58.08 mb)  54.67 mb █▁▁█▁█▁▁▁██▁▁▁██▁▁▁██

                             ┌                                            ┐
                             ╷          ┌─────────────────┬──┐            ╷
         hbs small (control) ├──────────┤                 │  ├────────────┤
                             ╵          └─────────────────┴──┘            ╵
                             ╷        ┌─────────────────────┬        ╷
      hbs small (experiment) ├────────┤                     │────────┤
                             ╵        └─────────────────────┴        ╵
                             └                                            ┘
                             71.68 ms          93.16 ms           114.65 ms

summary
  hbs small (control)
   1.01x faster than hbs small (experiment)

------------------------------------------- -------------------------------
hbs medium (control)         618.53 ms/iter 606.51 ms   █                  
                    (575.75 ms … 843.70 ms) 658.72 ms █ █                  
                    (  9.07 mb …  82.98 mb)  33.14 mb █████▁▁█▁▁▁▁▁▁▁▁▁▁█▁█

hbs medium (experiment)      617.45 ms/iter 638.83 ms   █                  
                    (571.61 ms … 806.92 ms) 651.41 ms   █                 ▅
                    (  9.33 mb …  81.85 mb)  33.10 mb ▇▁█▇▁▇▇▁▁▁▁▁▁▁▁▁▁▇▁▁█

                             ┌                                            ┐
                               ╷  ┌──────────────────┬                    ╷
        hbs medium (control)   ├──┤                  │────────────────────┤
                               ╵  └──────────────────┴                    ╵
                             ╷    ┌──────────────────┬──────────┐     ╷
     hbs medium (experiment) ├────┤                  │          ├─────┤
                             ╵    └──────────────────┴──────────┘     ╵
                             └                                            ┘
                             571.61 ms         615.16 ms          658.72 ms

summary
  hbs medium (experiment)
   1x faster than hbs medium (control)

------------------------------------------- -------------------------------
hbs large (control)          687.38 ms/iter 667.82 ms  ██                  
                    (661.03 ms … 884.82 ms) 715.13 ms ████                 
                    ( 53.56 mb …  64.89 mb)  55.53 mb ████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█

hbs large (experiment)       668.30 ms/iter 657.96 ms              █       
                    (629.03 ms … 837.68 ms) 673.13 ms          ▅   █       
                    ( 53.58 mb …  64.83 mb)  55.53 mb ▇▁▁▁▁▁▁▇▇█▁▁▁█▇▁▁▁▁▁▇

                             ┌                                            ┐
                                              ╷┌───────────┬              ╷
         hbs large (control)                  ├┤           │──────────────┤
                                              ╵└───────────┴              ╵
                             ╷        ┌───────────┬ ╷
      hbs large (experiment) ├────────┤           │─┤
                             ╵        └───────────┴ ╵
                             └                                            ┘
                             629.03 ms         672.08 ms          715.13 ms

summary
  hbs large (experiment)
   1.03x faster than hbs large (control)
### Project mode (type-aware)
Benchmark Control (p50) Experiment (p50) Δ
⚪ project warm parse x150 494.50 ms 492.04 ms -0.5%
⚪ project parse+typed x150 524.12 ms 523.04 ms -0.2%
⚪ projectService warm parse x150 499.94 ms 500.25 ms +0.1%
⚪ projectService parse+typed x150 537.71 ms 543.96 ms +1.2%

🟢 faster · 🔴 slower · 🟠 slightly slower · ⚪ within 2%

Full mitata output
clk: ~3.52 GHz
cpu: AMD EPYC 9V74 80-Core Processor
runtime: node 24.22.0 (x64-linux)

benchmark                                   avg (min … max) p75 / p99    (min … top 1%)
----------------------------------------------------------- -------------------------------
project warm parse x150 (control)            493.97 ms/iter 499.89 ms                    █ 
                                    (481.67 ms … 501.36 ms) 501.27 ms █▁▁█▁▁▁█▁██▁▁█▁██▁▁██
                                  gc(263.34 ms … 275.61 ms) 113.73 mb (112.31 mb…115.25 mb)

project warm parse x150 (experiment)         492.85 ms/iter 494.54 ms            ███       
                                    (470.68 ms … 515.62 ms) 506.87 ms █▁▁▁▁▁▁█▁▁█████▁▁▁▁▁█
                                  gc(263.57 ms … 272.83 ms) 112.11 mb (111.52 mb…112.94 mb)

                                             ┌                                            ┐
                                                           ╷       ┌──────┬──────┐ ╷
           project warm parse x150 (control)               ├───────┤      │      ├─┤
                                                           ╵       └──────┴──────┘ ╵
                                             ╷                     ┌─────┬─┐              ╷
        project warm parse x150 (experiment) ├─────────────────────┤     │ ├──────────────┤
                                             ╵                     └─────┴─┘              ╵
                                             └                                            ┘
                                             470.68 ms         488.77 ms          506.87 ms

summary
  project warm parse x150 (experiment)
   1x faster than project warm parse x150 (control)

----------------------------------------------------------- -------------------------------
project parse+typed x150 (control)           528.34 ms/iter 534.83 ms       █  ▃    ▃      
                                    (504.38 ms … 552.42 ms) 546.81 ms ▆▁▁▁▁▁█▁▁█▁▁▁▆█▁▆▁▁▁▆
                                  gc(269.72 ms … 277.58 ms) 119.41 mb (118.25 mb…123.74 mb)

project parse+typed x150 (experiment)        528.07 ms/iter 532.56 ms █  █     █           
                                    (502.70 ms … 600.44 ms) 547.52 ms █▁▁█▁▁▁▁██▁▁███▁▁▁▁▁█
                                  gc(273.43 ms … 295.57 ms) 112.78 mb (111.36 mb…116.15 mb)

                                             ┌                                            ┐
                                               ╷           ┌───────────┬─────┐           ╷
          project parse+typed x150 (control)   ├───────────┤           │     ├───────────┤
                                               ╵           └───────────┴─────┘           ╵
                                             ╷     ┌──────────────────┬────┐              ╷
       project parse+typed x150 (experiment) ├─────┤                  │    ├──────────────┤
                                             ╵     └──────────────────┴────┘              ╵
                                             └                                            ┘
                                             502.70 ms         525.11 ms          547.52 ms

summary
  project parse+typed x150 (experiment)
   1x faster than project parse+typed x150 (control)

----------------------------------------------------------- -------------------------------
projectService warm parse x150 (control)     506.12 ms/iter 510.57 ms   █  █               
                                    (492.12 ms … 540.72 ms) 524.89 ms █▁████▁█▁▁▁█▁▁█▁▁▁▁▁█
                                  gc(274.85 ms … 286.06 ms) 114.79 mb (110.69 mb…115.92 mb)

projectService warm parse x150 (experiment)  502.38 ms/iter 506.79 ms            █        █
                                    (488.95 ms … 523.14 ms) 509.40 ms █▁▁▁▁██▁▁█▁██▁█▁▁█▁▁█
                                  gc(273.76 ms … 284.07 ms) 111.23 mb (107.11 mb…112.79 mb)

                                             ┌                                            ┐
                                                 ╷    ┌────────────┬────┐                 ╷
    projectService warm parse x150 (control)     ├────┤            │    ├─────────────────┤
                                                 ╵    └────────────┴────┘                 ╵
                                             ╷      ┌─────────┬────┐   ╷
 projectService warm parse x150 (experiment) ├──────┤         │    ├───┤
                                             ╵      └─────────┴────┘   ╵
                                             └                                            ┘
                                             488.95 ms         506.92 ms          524.89 ms

summary
  projectService warm parse x150 (experiment)
   1.01x faster than projectService warm parse x150 (control)

----------------------------------------------------------- -------------------------------
projectService parse+typed x150 (control)    543.24 ms/iter 556.18 ms           █          
                                    (512.22 ms … 589.46 ms) 563.75 ms █▁▁█▁▁██▁██▁▁█▁▁▁██▁█
                                  gc(276.59 ms … 289.80 ms) 119.70 mb (115.98 mb…124.41 mb)

projectService parse+typed x150 (experiment) 547.03 ms/iter 552.67 ms █      █ █           
                                    (529.36 ms … 571.89 ms) 567.44 ms █▁▁▁█▁▁███▁▁█▁█▁▁▁▁▁█
                                  gc(285.67 ms … 301.08 ms) 114.08 mb (109.70 mb…116.36 mb)

                                             ┌                                            ┐
                                             ╷             ┌──────────┬──────────┐     ╷
   projectService parse+typed x150 (control) ├─────────────┤          │          ├─────┤
                                             ╵             └──────────┴──────────┘     ╵
                                                           ╷     ┌───────┬────┐           ╷
projectService parse+typed x150 (experiment)               ├─────┤       │    ├───────────┤
                                                           ╵     └───────┴────┘           ╵
                                             └                                            ┘
                                             512.22 ms         539.83 ms          567.44 ms

summary
  projectService parse+typed x150 (control)
   1.01x faster than projectService parse+typed x150 (experiment)

@NullVoxPopuli
NullVoxPopuli merged commit 9a1f8ca into ember-tooling:main Oct 21, 2026
40 checks passed
@NullVoxPopuli
NullVoxPopuli deleted the nvp/ember-estree-0.9 branch October 21, 2026 19:00
@github-actions github-actions Bot mentioned this pull request Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants