Skip to content

Measurements

codingncaffeine edited this page Sep 13, 2026 · 96 revisions

Measurements

Public yardsticks, scored by Sashfold itself, enforced in CI.

Yardstick Score
html5lib tokenizer 7032 / 7032 (100%)
html5lib tree construction 1784 / 1784 (100%)
WPT URL parsing (urltestdata) 893 / 893 (100%)
Unicode bidi (BidiCharacterTest) 91,707 / 91,707 (100%)
Unicode bidi (BidiTest) 770,241 / 770,241 (100%)
Unicode line breaking (LineBreakTest) 16,672 / 16,672 (100%)
WPT CSS reference tests 9261 / 14616 (63.4%)
test262, the ECMAScript conformance suite 40167 / 41791 (96.1%)
Acid1 Renders as its reference, font rasterization aside
The Sashfold 100 Rendered nightly by the Windows build and by the Linux build, published at sashfold.com/sashfold100 and sashfold100/linux

The WPT CSS reference tests

The Web Platform Tests' CSS reference tests are the tests that need no scripting: a test page and a reference page must render to the same pixels. Sashfold scores the CSS2 suite and sixteen css-* directories (css-backgrounds, css-box, css-cascade, css-color, css-display, css-flexbox, css-fonts, css-grid, css-overflow, css-position, css-syntax, css-text, css-values, css-variables, css-writing-modes, selectors) — every test and every reference rendered headless by Sashfold at the suite's 800×600 viewport, compared by the suite's own rules: pixel-identical unless the test declares a fuzziness allowance, references chained the way wptrunner chains them.

  • The per-directory table is at sashfold.com/wpt.html, regenerated with every change.
  • tests/wpt/passing.txt names every passing test; CI fails when a listed test stops passing.
  • The checkout is fetched at a pinned revision by tools/wpt-fetch.sh; nothing of it is vendored.
  • Tests that wait on scripts count as failures, as they do on wpt.fyi. What the engine cannot do, it does not score.

test262

test262 is the ECMAScript conformance suite. Sashfold scores every test under the directories tests/test262/directories.txt names — the language chapters, the built-in library from AggregateError to encodeURIComponent, and Annex B — 41,791 tests over 86 directories, run the way the suite's own instructions say: the harness first, then the test, once as sloppy code and once as strict unless the test says otherwise, each in a fresh realm on a sixty-second deadline.

  • The per-directory table is at sashfold.com/test262.html, regenerated with every change.
  • tests/test262/passing.txt names every passing test; CI fails when a listed test stops passing.
  • The checkout is fetched at a pinned revision by tools/test262-fetch.sh; nothing of it is vendored.
  • Two rules of our own: every test under a listed directory counts, modules and async included; and a test that expects a syntax error scores only when the engine raised a real one, never when it declined a feature it does not have. Most of what fails today is the regular-expression forms the engine declines with an error that names them (lookbehind, property escapes, the v flag: the RegExp directories), the newest import syntax, and an await or yield inside a class heritage or a computed key.

Acid1

The CSS1 box, float and clear test renders at its reference's width as the W3C's reference rendering shows it — the same boxes in the same places — with the differences a bitmap font of 1998 leaves against grayscale anti-aliasing today. The live shell script opens it and asserts its texts line by line.

Timings

sashfold --bench <page> times parse, stylesheets, style, layout and paint over several runs. On this project's reference machine, Wikipedia's "Web browser" article (415 KB, 14 stylesheets, some 900 rules, at 800 px) parses in about 8 ms, resolves its style in about 13 ms, lays out in a few milliseconds and paints its viewport in about one; the whole page, pictures included, arrives in about a second over 3 connections opened and 14 reused.

Clone this wiki locally