maekawatoshiki /
naglfar
A toy web browser implemented in Rust from scratch
28/100 healthLoading repository data…
orarange / repository
A from-scratch web browser built in Rust. No Chromium, no WebView — hand-rolled HTTP, HTML, CSS, JS, and software rendering.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Tobira is a from-scratch browser experiment built without Chromium, WebView, or a browser SDK.
For the most current implementation snapshot and handoff notes, see HANDOFF.md.
When work switches between Codex, Claude, Gemini, Copilot, or a fresh session, update HANDOFF.md so the next person can resume quickly.
Project north star:
Current capabilities:
http:// and https:// clientgzip, deflate, and br<style> blocksstyle="" inline declarationslink rel="stylesheet" over http:// and https://.class, #id, * universal ), child (>), adjacent sibling (+), general sibling (~)[attr], [attr=val], [attr*=val], [attr^=val], [attr$=val]:first-child, :last-child, :nth-child(an+b), :not(...)::before, ::after (with content, display, color, background-color)A + B + C, A + B > C, A ~ B > Cdisplay, margin, padding, width, max-width, min-width (block height is derived from content flow; height applies to images and overflow:hidden clip boxes)color, background-color, opacity, border-colorborder, border-width, border-style, border-radiusbox-shadow (offset, blur, color)overflow: hidden (clips child content to element bounds)font-size, font-weight, font-style, font-family, text-align, text-decoration, text-transform, , , , Still missing:
GUI mode:
cargo run -- http://example.com
cargo run -- https://www.google.com
CLI mode:
cargo run -- --cli http://example.com
Local CSS demo:
python -m http.server 8765
cargo run -- http://127.0.0.1:8765/demo/index.html
Local JavaScript demo:
python -m http.server 8765
cargo run -- http://127.0.0.1:8765/demo/js-demo.html
Debug tracing:
$env:TOBIRA_TRACE_JS=1
$env:TOBIRA_TRACE_LOAD=1
cargo run -- https://www.youtube.com/
Local DOM demo:
python -m http.server 8765
cargo run -- http://127.0.0.1:8765/demo/dom-demo.html
Local forms demo:
python -m http.server 8765
cargo run -- http://127.0.0.1:8765/demo/forms-demo.html
Local event demo:
python -m http.server 8765
cargo run -- http://127.0.0.1:8765/demo/events-demo.html
Local scroll demo:
python -m http.server 8765
cargo run -- http://127.0.0.1:8765/demo/scroll-demo.html
Local storage / cookie demo:
python -m http.server 8765
cargo run -- http://127.0.0.1:8765/demo/storage-demo.html
Up / Down: scrollPageUp / PageDown: page scrollHome / End: jump to top or bottomR: reloadCtrl+L: focus the address barCtrl+A: select all text in the address bar or a focused page inputCtrl+C / Ctrl+X / Ctrl+V: copy, cut, and paste inside the address bar or a focused page inputAlt+Left / Alt+Right: browser back and forwardEsc: blur a focused page input, otherwise quitsrc/url.rs — URL parsing and relative URL resolutionsrc/site_state.rs — Origin-scoped storage and cookie state shared across HTTP and JSsrc/http.rs — HTTP fetch, response parsing, chunked decoding, redirect handlingsrc/html.rs — HTML tokenization and DOM-like tree buildingsrc/css.rs — CSS parsing, selector matching, cascade, computed styles, @media, calc(), color parsingsrc/layout.rs — Styled text layout, block rendering, tables, image placement, background/border drawing, link hitboxessrc/font.rs — System font loading, glyph rasterization, and text measurement helperssrc/browser.rs — Page loading pipeline, stylesheet collection, site-specific rewrites, YouTube/Google synthetic documentssrc/gui.rs — winit event loop, address bar, input handling, software renderingsrc/engine/ — From-scratch JavaScript engine: lexer, parser front-end (boa AST), bytecode compiler, VM, tracing GC heap, regex (regress-backed), event loopsrc/js.rs — Host bridge between the engine and the browser: sandboxed DOM/API surface, block-list filter, browser-ish stubssrc/render.rs — Plain text fallback renderer for CLI modesrc/main.rs — Application entry pointThe living JavaScript roadmap is in JS_ROADMAP.md.
Short version:
Note: this list is historical. The engine has since grown a full from-scratch VM with ES2015+ language coverage (classes, generators, async/await, ES modules with live bindings, Proxy/Reflect, typed arrays, regex via
regress, etc.). The items below are the original minimal DOM/browser surface, not the current language support.
Original minimal browser surface:
<script><script src>document.write() / document.writeln()localStorage, sessionStorage, and document.cookiedocument.titledocument.querySelector(...) / querySelectorAll(...)document.getElementById(...)document.createElement(...)appendChild(...) / insertBefore(...) / remove()hasAttribute(...) / getAttributeNames(...)toggleAttribute(...)matches(...), closest(...), contains(...)Selected from shared topics, language and repository description—not editorial ratings.
maekawatoshiki /
A toy web browser implemented in Rust from scratch
28/100 healthZeroX-DG /
:earth_americas: :moon: A hobby web browser developed from scratch
81/100 healthAmeobea /
A neural network library written from scratch in Rust along with a web-based application for building + training neural networks + visualizing their outputs
/100 healthtext-indentletter-spacingline-heightwhite-spacelist-style-type, vertical-align#rgb, #rrggbb, #rgba, #rrggbbaa), rgb(), rgba() (alpha blended), hsl(), hsla(), 140+ named colors--var) and var(--name, fallback) with :root variable inheritancecalc() with correct operator precedence (*// before +/-)vw, vh (consistent 1280×800 base)@media with max-width, min-width, screen, printgetComputedStyle(...) snapshots for common layout-sensitive valueswinitsoftbufferfontdue--clisrc/engine/) & sandboxed DOM/API support:
boa_ast/boa_parser/boa_interner are reused as the parser front-end — the boa runtime (boa_engine/boa_gc) is not used<script> and external <script src>document.write() / document.writeln() with recursive expansiondocument.title, location.hrefwindow.crypto stubs (getRandomValues, randomUUID)URLSearchParams stubconsole.log() / warn() / error()queueMicrotask(...), setTimeout(...), setInterval(...), and requestAnimationFrame(...) callbackswindow.innerWidth / window.innerHeightwindow.scrollY / window.pageYOffsetdocument.activeElementwindow.scrollTo(...), window.scrollBy(...), and scrollTop setters on DOM nodeslocalStorage and sessionStoragedocument.cookie read/write and HTTP cookie propagationfetch(...) with response headers iterationXMLHttpRequest supporting getResponseHeader(...) / getAllResponseHeaders()customElements.define(...) / get(...) / whenDefined(...) / upgrade(...)attachShadow(...) with open / closed roots, slot.assignedNodes() / slot.assignedElements() with flattenassignedSlot, slotchange, and Event.composedPath() plus shadow-boundary retargeting for capture / bubble dispatchAlt+Left / Alt+Right history navigationGET submissionsclick, input, change, submit; target-only focus, blur)MutationObserver callbacks for attributes, childList, and characterData, plus browser-style event constructors (Event, CustomEvent, KeyboardEvent, InputEvent, MouseEvent, FocusEvent, SubmitEvent) and AbortController / AbortSignaldocument.querySelector(...) / querySelectorAll(...)document.getElementById(...)document.createElement(...)document.createTextNode(...)document.createDocumentFragment(...)appendChild(...), insertBefore(...), remove()replaceChild(...), removeChild(...), append(...), prepend(...), before(...), after(...), replaceWith(...), replaceChildren(...)document.body, document.head, and document.documentElementnodeType, nodeName, nodeValue, firstChild, lastChild, previousSibling, nextSibling, isConnectedCharacterData support: data, length, nodeValue, textContent, and splitText(...)hasAttribute(...), getAttributeNames(...)toggleAttribute(...)element.attributes as a live NamedNodeMap-style collection with length, item(...), getNamedItem(...), and array-like iterationmatches(...), closest(...), contains(...)firstElementChild, lastElementChild, previousElementSibling, nextElementSiblinginnerHTML, textContent, classList, id, classNamesrc, href, rel, type, name, value, contentclassList.value, classList.length, classList.item(...), classList.toString(), classList.replace(...)document.write(...)element.style updates through cssText, setProperty(...), and common style accessors for text, size, and border propertieslucid-softworks /
A web browser written from scratch — a platform-agnostic Rust engine (networking, HTML/CSS parsing, DOM, style, layout, paint) with a thin native app shell per OS.
75/100 healthrhymu8354 /
Development environment (solution) for a web server written from scratch in C++ (and soon in Rust too!)
55/100 healthYJDoc2 /
A Neural Network implemented from scratch as per http://neuralnetworksanddeeplearning.com/ in Rust. This is then trained on MNIST. This is also used in Rust-NN-Web project to compile to WASM and recognize digits.
51/100 health