Commits
layout.wasm must stay -O2: Clay_EndLayout is the render hot path and its
speed on heavy layouts comes from -O2's inlining/unrolling. -Os/-Oz both
regress dashboard/diff-render by 24-32% (CodSpeed), so size-optimizing it
is a net loss. input.wasm is opt-insensitive in the benchmarks, so build
it -Oz for a free size win. Levels stay overridable via LAYOUT_OPT/INPUT_OPT.
🧼 compress bundled wasm with brotli + z85 encoding
bench: add WASM init and startup timing benchmarks
chore: update benchmark workflow
* examples use `node:` api
* move main to top
* direct to examples folder
* fmt
* fix const ordering
* fmt again
move to examples folder with readme
Add snapshot() for pre-packing directive subtrees
chore: update publish workflow
✨ improve pack string overflow errors
Adds performance benchmarks with tinybench, benchmark CI via CodSpeed
chore: update preview workflow
Reverts three changes that need benchmarks before landing:
- -Oz / wasm-opt
- brotli+Z85 wasm compression
- wcwidth.c rewrite
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
See https://docs.zizmor.sh/audits/#template-injection
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
See https://docs.zizmor.sh/audits/#template-injection
Without this it means that, for example, if I push a change to a PR then
shortly push again this workflow will be running twice. This change will
cancel the old run before starting the new one, which reduces the
overall actions cost and DX as you don't have extra runs
layout.wasm must stay -O2: Clay_EndLayout is the render hot path and its
speed on heavy layouts comes from -O2's inlining/unrolling. -Os/-Oz both
regress dashboard/diff-render by 24-32% (CodSpeed), so size-optimizing it
is a net loss. input.wasm is opt-insensitive in the benchmarks, so build
it -Oz for a free size win. Levels stay overridable via LAYOUT_OPT/INPUT_OPT.