Current status of the project
Gosub is in its very early stages. Since Gosub is not a mere shell around an existing engine, it will take time before we can introduce a browser. Here is where each core component stands today. At this point, we have a multitude of components operational that allows us to combine them into a demonstration browser: it can render some pages (but most of them are still not working), we can click hyperlinks, and browse easy and non-javascript sites. We are able to demonstrate modularity by having this demonstration browser in a multitude of toolkits (gtk, egui, winit) and backend renderers (cairo, vello, skia).
HTML parser
WorkingAlmost all HTML5 documents are parsed correctly, and the parser passes nearly all tests from the html5lib test suite. Current focus:
- Optimizing performance and memory usage. We are almost on par with mature parsers.
- Improving handling of invalid HTML
- Reducing unnecessary memory copying
- Separating parsing from the tree-building phase
- Advanced functionality like speculative parsing
Network stack
UsableOur network stack (called "sonar") is capable of handling requests and deals with many aspects a network stack needs to worry about:
- Streaming and buffered data
- Priority queing
- Cancellation and timeouts
- Consolidation
- Retry mechanisms
But a lot is still missing:
- Dynamic configurable settings
- HSTS
- CORS
- HTTP Chaching
CSS3 parser
Proof of conceptOur CSS3 parser is able to parse most of the CSS3 stylesheets out there, but it is not an optimal system. We are currently building a new CSS3 setup that we can implement, but we should be able to use mature systems like Stylo without too much effort as well.
Render pipeline
MaturingA lot of work and a lot of optimization needs to happen in the render pipeline of a browser. We have set up a render pipeline that allows us to do that. Depending on the action (mouse movement, scrolling, hovering, loading), the render pipeline decides which stages needs to be redone, and tries to keep computations at a minimum for fast response times. The pipeline is backend agnostic, so it doesn't matter wheter you use a backend running on cairo, vello, or any other system.
- Multi stages pipeline
- Backend agnostic
- Caching and pre-rendering for fast scrolling
JavaScript engine
Early stageAn initial implementation built on V8, designed behind a pluggable interface so other engines can be swapped in later.
- V8 integration through the pluggable engine API
- Basic console API implementation
Engine foundations
WorkingIn order to call the engine, we need a clearly defined public API for developers to use. We've created and merged this into the engine and allows to set up complex environments with multi-tab, multi-zoned pages that all can behave differently when it comes to cookies, sessions and settings. This allows us to have private sessions and containerized pages out of the box. Log into websites with multiple users at the same time, or as a developer see side-to-side scrollable views of the same page.
Want to move a component forward?
Every item on this page is an opportunity to contribute. Pick one and dive in.
- seafloor reached · resurface at ↑ 0 m -