Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

[Project] sol: A self-contained browser kernel written in Rust

Дата публикации: 18-10-2026 01:58:37


Body:
Hi everyone,
I'm excited to share a project I've been working on: sol, a self-contained browser kernel written in Rust.
Unlike modern browser wrappers that rely on Chromium or Blink, sol implements the entire core browser pipeline from scratch.
We do use mature Rust libraries for infrastructure (e.g., ureq/rustls for networking, rustybuzz for text shaping, tiny-skia for rasterization), but the heavy lifting of the browser engine is entirely in-tree.
The pipeline:
fetch → HTML parse → CSS cascade → layout → display list → raster → PNG (with JS eval and DOM mutation triggering refreshes)
What is implemented in-tree:
· sol_html: Full HTML5 tokenizer and tree builder (insertion modes, adoption agency, foster parenting).
· sol_css: General token/component AST, selector engine, cascade/inheritance, custom properties, media/supports conditions, math.
· sol_layout: Box-tree builder; block, inline/IFC, floats, flexbox, table, abs/fixed positioning.
· sol_js: An ES-subset interpreter with a tree-walk evaluator, mark-sweep GC, regex engine, microtasks, and DOM/window bindings.
· sol_dom: Arena-based DOM with generational IDs and dirty-flag subtrees.
· sol_img: Bounded PNG, GIF, and BMP decoders (no external image crates).
It's a massive undertaking (about 31k lines of Rust), and it's built with safety and strict bounds in mind.We have enforced memory limits for decoding, font parsing, and network I/O to prevent OOMs.
Try it out:
The CLI allows you to render a viewport to PNG, dump the DOM, or even serve a remote window for headless machines (sol surf):
cargo build -p sol
./target/debug/sol shot demo/page.html /tmp/sol-demo.png 1000x640
Known Limits (Being honest):
· No CSS Grid yet (Flex/Table/Block are supported).
· JS implements a working ES subset (closures, classes, promises, etc.), not full ES2024.
· Images: No JPEG/WebP yet.
· Network: HTTP/1.1 only, no HTTP/2/3.
Repo: GitHub - UnionRepos/sol: A modular, self-contained browser kernel in Rust with HTML, CSS, JavaScript, layout, and software rendering · GitHub
I'd love to hear your feedback on the architecture, the module boundaries, or the JS GC implementation.
I'm also happy to answer any questions about writing a layout engine in Rust!
2 posts - 1 participant
Read full topic

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1I made a Vibe-Coded Reusable Application Runtime For Any Digital Domain (Office apps, Digital Painter, Graph nodes based apps..etc)017.8312-10-2026
2Zaxis 0.0.5: immediate-mode GUI on wgpu, embeddable in a host's wgpu pass, with an real overlay layer for other processes010.211-10-2026
3FerroProve - C-to-Rust lifter emitting #![forbid(unsafe_code)] crates with a differential oracle015.5117-10-2026
4My state lib PurrGress012.6213-08-2026
5I wrote a small library for exclusive component filtering in bevy014.9313-10-2026
6FUI-RS: retained Rust UI for WebAssembly and native desktop without a WebView011.5430-07-2026
7Sping 1.5.5 — a cross-platform network diagnostics CLI written in Rust09.1910-10-2026
8[Show] swift-topomap: Silicon-aware TUI and eBPF metrics engine011.8727-07-2026
9Hotcode: easy to use hot-reload09.8409-10-2026
10Blog: gRPC-Rust Preview Release09.5828-05-2026

Классификация: . Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 9.76. Источник: users.rust-lang.org.