Repository navigation
Home
A web browser written from scratch, for Windows, Linux and macOS.
Sashfold is a browser for the whole web and an embeddable engine. It is early, it is public, and it measures itself on public yardsticks. Two rules shape it, in this order. The bar: every feature is to be at least what the shipping browsers offer, and better where it can be — where Sashfold is short of that today the work is not done yet, and nothing was decided against. The pledge: whatever can be written from scratch is written in the repository, and the binary links only the operating system and the language runtime; where a thing cannot be written here, Sashfold uses what the platform provides, as every browser does. Both are on The Pledge.
This wiki is the long form. The README stays short; the details live on the pages below.
- Building — the toolchain, the two compiler lanes, and the checks that gate a build
- Running Sashfold — the window, and every command-line mode with its flags
- Themes — the window's chrome is drawn from a JSON file of tokens, reloaded while it is open
- Parsing — the WHATWG HTML parser and character encodings
- Styling — CSS syntax, selectors, the cascade, stylesheets, web fonts, colors, generated content
- Layout — block and inline layout, floats, flexbox, positioning, inline-block, replaced boxes, table cells today
- Painting and text — the painter, TrueType parsing and rasterization, Sashfold Mono, images
- Networking — URLs, HTTP/1.1, TLS, cookies, the cache, downloads, the user agent string
- The shell — tabs, history, forms, selection, find, reader mode, link hints, devtools
- Not written yet — what is still short of the bar: the honest list of work owed
- Measurements — html5lib, the WPT URL tests, the WPT CSS reference tests, test262, Acid1, timings
- The Sashfold 100 — a hundred pages of the live web, rendered every night and published
- Finding the YouTube stop — how a YouTube page that stopped at 44 seconds was fixed without reading the site's checking code
- The Pledge — the bar every feature is held to, what is written from scratch, the boundary drawn exactly, and how it is enforced
- Why C++ — the language choice, argued
- Architecture — the pipeline from bytes to pixels, the seam between the engine and each operating system, and the JavaScript engine
- Scripting — how a page's scripts run, what they can reach, and what is not written
- Security defaults — what Sashfold will never do, and what it does by default
- Testing — unit tests, reference tests and their goldens, shell scripts, the WPT runner, fuzzers, CI
-
Scripting the shell — the
--scriptcommand reference
Getting started
What works today
Measured
Design decisions
Testing and tools