Skip to content

About

Aetheris Browser — an experimental C++ browser engine with a dependency-free rendering foundation (Ladybird/SerenityOS-derived). Not production-ready.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

164 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aetheris Browser logo

Aetheris Browser

An experimental C++ browser engine with a dependency-free rendering foundation.
Built on a Ladybird/SerenityOS-derived codebase · not production-ready · authored by Dr. Sohil Momin.

Landing page · Get started · Rendering pipeline · FAQ · Downloads · User guide · Architecture · All projects

Landing page Status Language Build Tests Upstream Author

Visit the project landing page →
Features · build steps · interactive rendering-pipeline walkthrough · get-started · FAQ


An experimental C++ browser project built on a Ladybird/SerenityOS-derived codebase.
Minimal by intent · measurable by discipline · honest about provenance.

Quick Start • User Guide • Architecture • Contributing • Security • Changelog

Status Language Build Tests Upstream Author

Status: Experimental. Aetheris is not currently a production-ready, standards-complete replacement for established browsers.


📖 About

Aetheris Browser is an experimental C++ browser project built on a codebase derived from the Ladybird and SerenityOS browser ecosystem. The repository contains upstream-derived infrastructure, including components and libraries from that ecosystem, alongside Aetheris-specific experiments and modifications.

Aetheris is not presented as a browser built entirely from scratch. Its work focuses on adapting, extending, simplifying, and experimentally developing browser subsystems on an existing technical foundation.

The Aetheris-specific core today is the dependency-free AetherisRendering foundation in src/rendering/ with its regression suite in Tests/AetherisRendering/. See docs/ARCHITECTURE.md for the full layout of the tree.

🎯 Goals

  • Explore a smaller and more understandable browser architecture where practical.
  • Improve memory efficiency and startup characteristics through measurable engineering work.
  • Develop HTML, CSS, DOM, layout, rendering, resource, and document integration incrementally.
  • Preserve upstream licensing and attribution requirements.
  • Prefer coherent, testable changes over speculative architectural rewrites.

The project aims to be more resource-conscious than typical Chromium- or Electron-based applications where practical and measurable. These are engineering goals, not guaranteed universal metrics.

🧬 Upstream foundation and provenance

Aetheris contains code and infrastructure derived from the Ladybird/SerenityOS ecosystem. This includes foundational components visible in the repository such as AK, LibCore, and other imported browser infrastructure.

Aetheris-specific code should be distinguished from upstream-derived code during maintenance and review. Existing upstream copyright notices and licenses must not be removed or replaced by project rebranding.

See docs/UPSTREAM_ATTRIBUTION.md for the repository-level provenance policy.

🏗️ Current architecture

HTML input ──► HTML tokenization ──► DOM
                                      │
CSS input ───► CSS parsing ──────────┤
                                      ▼
                                Style resolution
                                      │
                                      ▼
                                    Layout
                         ┌────────────┼────────────┐
                         ▼            ▼            ▼
                       Block        Flex         Grid
                                      │
                                      ▼
                                 Render tree
                                      │
                                      ▼
                                 Paint commands
                                      │
                                      ▼
                                Paint execution
                                      │
                                      ▼
                                Software surface

The rendering pipeline currently includes work in block and inline layout, Flex and Grid foundations, positioning, sizing constraints, text layout, clipping, paint ordering, backgrounds, images, fonts, and software rasterization. Feature presence does not imply complete HTML or CSS standards compliance.

⚙️ Architectural optimization goals

🧠 Resource and memory management

Aetheris may evaluate standard techniques such as controlled caches, allocation reduction, compressed resource storage, and secure clearing of sensitive memory where justified. LZ4 or similar mechanisms are implementation options rather than proprietary technology claims.

🚀 Selective subsystem initialization

The project may explore delayed initialization of expensive subsystems, including scripting, when document requirements permit. Dynamic documents and compatibility requirements make this a design problem that must be validated rather than assumed to provide a universal benefit.

🎨 Rendering efficiency

Current and future work may reduce redundant paint operations, improve clipping and invalidation, and evaluate accelerated backends where the complexity and dependencies are justified.

📊 Performance and benchmarking

Aetheris does not currently claim fixed limits for binary size, idle memory usage, or startup time.

Performance measurements should record the operating system, hardware, compiler, build configuration, enabled features, workload, and measurement method. Future public performance claims should be reproducible.

🛠️ Quick start: build and test

A typical development workflow is:

cmake -S . -B build
cmake --build build --config Debug
ctest --test-dir build --output-on-failure

Reconfiguration is required when CMake configuration or build-registered files change. Otherwise, an existing build directory can be reused.

For a dependency-light workflow that skips the upstream tree entirely, use the Standalone preset; for a size-first release build, use StandaloneSize:

cmake --preset Standalone
cmake --build --preset Standalone
ctest --preset Standalone

cmake --preset StandaloneSize   # -Os, gc-sections, LTO, stripped
cmake --build --preset StandaloneSize

The size profile applies only to the Aetheris targets (AetherisRendering, AetherisRuntime, aetheris); a stripped aetheris executable is on the order of 1 MB with the current feature set (HTML/CSS layout, bitmap-font text, PNG/JPEG/GIF/SVG/WebP images, HTTPS/TLS and the HTTP client all linked in).

The aetheris executable exposes a small headless command surface:

./aetheris --smoke-test           # init all subsystems, bounded frame loop, exit 0
./aetheris --fetch <url>          # fetch a URL over HTTP, print status and size
./aetheris --render <url> [out]   # fetch a URL and render it to a PPM image
./aetheris --eval <script>        # run a JavaScript snippet

Networking supports http:// and, when the build finds OpenSSL, https:// (TLS with certificate and hostname verification; set AETHERIS_CA_FILE to use a custom CA bundle). Hostnames resolve through getaddrinfo and the connect is time-bounded.

Roadmap

The remaining work is organised into phases with combined batches and a delivery workflow aimed at a high quality-to-time ratio. See docs/ROADMAP.md.

Credits

Aetheris is derived from Ladybird and SerenityOS (BSD-2-Clause); a self-contained mini JavaScript engine, the rendering foundation and the standalone runtime are Aetheris additions. Optional external libraries (OpenSSL, libwebp, LZ4, X11) and bundled public-domain data are used with their own licences. See CREDITS.md for the full breakdown.

🧭 Development principles

  • Preserve working architecture unless a change has a clear technical justification.
  • Do not claim code provenance, performance, security, or compatibility that has not been verified.
  • Keep upstream attribution and licensing intact.
  • Add regression tests with new behavior where practical.
  • Prefer incremental, coherent changes and avoid unnecessary abstractions.
  • Use clear subsystem-oriented commit messages.

📈 Project status

Aetheris is an experimental browser-engine and systems-programming project. It should not currently be represented as a complete browser built from an empty codebase, a fully standards-compliant browser, or a project with guaranteed resource limits unless those statements are supported by reproducible evidence.

🤝 Contributing

Start with the User Guide and Architecture reference, then read CONTRIBUTING.md. In particular, contributors must determine whether affected code is upstream-derived or Aetheris-specific, preserve applicable notices, and validate relevant builds and tests.

Report problems following ISSUES.md; review the release gates in docs/V0.1_ACCEPTANCE.md and docs/RELEASE_CHECKLIST.md before tagging. Windows users: see docs/WINDOWS_BUILD.md.

⚖️ Licensing

Licensing and redistribution obligations must remain compatible with the upstream-derived code present in this repository. The existing repository license should not be treated as sufficient proof that all imported components may be relicensed under the same terms.

See docs/UPSTREAM_ATTRIBUTION.md. A dedicated provenance and licensing audit is required before making broad relicensing or commercial-use claims about the entire repository.


Aetheris Browser — experimental C++ browser project.
Authored and maintained by Dr. Sohil Momin · Derived from the Ladybird/SerenityOS ecosystem · License: see LICENSE and provenance policy.

About

Aetheris Browser — an experimental C++ browser engine with a dependency-free rendering foundation (Ladybird/SerenityOS-derived). Not production-ready.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages