Skip to content

Add Bitwarden's web vault as a real app; all results from one 4-core run - #1

Open
ChristopherPHolder wants to merge 3 commits into
mainfrom
bitwarden
Open

ChristopherPHolder wants to merge 3 commits into
mainfrom
bitwarden

Conversation

@ChristopherPHolder

Copy link
Copy Markdown
Collaborator

Adds Bitwarden's web vault (bitwarden/clients apps/web at 8139eb0: 598 components, 3,295 source files) as a third real app. The README's results now all come from one CI run on 4-core runners, run 39469262093.

Bitwarden

  • Pin and patch: corpus/real/bitwarden.json pins the app. Bitwarden is on Angular 21 and TypeScript 5.9, so corpus/real/bitwarden.patch (nine files) upgrades it to the Angular 22 and TypeScript 6 the toolchain is built from, and nothing more. It covers the CDK stepper and dialog API changes, the new NG1054 error on toggledChange, baseUrl, esModuleInterop for JSZip, and excluding Jest specs. After the patch, ngc's full type-check reports nothing, with strictTemplates on.
  • Fetcher: corpus/fetch-real.mjs applies a pin's patch and records cliBuild in the manifest.
  • R skipped: harness/run.mjs skips the ng build reference (R) when an app isn't built with the Angular CLI. Bitwarden builds with webpack.
  • Type-check fix: ngp's type-check config now points deep imports into the app's own npm-workspace packages (@bitwarden/components/src/...) at ngp's output. Before, TypeScript resolved them through the node_modules symlink to the original sources, loaded every class twice, and reported a false error. Ghostfolio's and Super Productivity's diagnostics are unchanged.

Results (run 39469262093, 4 cores): S1 2.46×, S2 2.21×, S3 tsc 6 0.79×, S4 tsgo 7 1.64×, S8 tsgo 7 2.07×.

New ngp finding: ngp's type-check blocks report 34 errors that ngc doesn't. Five come from a bug. When an input's transform is declared in another file, ngp copies the transform's parameter type into the consumer's type-check block using offsets from the declaring file but reads the text from the consumer's own source. The blocks get tepper, asswor, nseale and s.chan where string belongs. The other 29 are places where ngp's blocks check more strictly than ngc's. Details are in the README's findings.

4-core rerun

The repo went public, so GitHub's standard runners now have 4 cores and 16 GB instead of 2 and 8. Every table was regenerated from run 39469262093, which covers all scenarios, the 100, 1,000 and 5,000-component apps, and all three real apps. Every gate passed, and no pipeline's median absolute deviation went above 2.7% of its median. The earlier 2-core runs (38888167669, 38899025048) stay linked.

Pins bitwarden/clients apps/web at 8139eb0 with a migration patch from
Angular 21 / TypeScript 5.9 to Angular 22 / TypeScript 6, which the fetcher
now applies. R skips apps not built with the Angular CLI. ngp's type-check
config maps deep imports into the app's npm-workspace packages to ngp's
output, so originals aren't loaded next to ngp's copies.
Every table now comes from CI run 39469262093 on GitHub's standard
4-core, 16 GB runners, replacing the 2-core runs 38888167669 and
38899025048 and the separate Bitwarden run 39463856365. Adds a section
on what changed from 2 to 4 cores: the tsgo pipelines gained most (S4 at
5,000 components 0.75x -> 0.96x, S8 1.10x -> 1.50x), tsc 6 barely moved,
and native didn't pull ahead of wasm. No pipeline was noisy (max MAD
2.7%), so no S3 rerun was needed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant