Skip to content
/ retina Public

🔗 Retina is a web engine ✨, written in Rust. It aims to stay close to web standards and specifications, focusing on correctness, performance, and safety.

License

Notifications You must be signed in to change notification settings

usadson/retina

Repository files navigation

✨ Retina - A Browser Engine Project 🔗

GitHub Workflow Status GitHub

Retina is a fresh approach to web browser engines, written entirely in Rust. It aims to stay close to web standards and specifications, focusing on correctness, performance, and safety. This is a monorepo that contains the main binary retina, alongside several libraries that define different aspects of the browser's operations.

📦️ Components

🏃 Process Flow

This section describes the current process flow, which is currently simple but is crafted in such a way that a multi-page and multi-process architecture is eventually possible, without coupling these too much to the current single-page architecture.

  1. retina starts up, creates a window and a page
  2. retina-page resolves the URL and starts a page load
  3. retina-fetch loads the HTML contents of the URL
  4. retina-page invokes retina-dom
  5. retina-dom parses the HTML and constructs a DOM tree
  6. retina-page collects the stylesheets
  7. retina-page invokes retina-style
  8. retina-style_parser parses the CSS associated with these stylesheets
  9. retina-page invokes retina-layout
  10. retina-layout invokes retina-style-computation
  11. retina-style-computation resolves and computes the style per element
  12. retina-layout creates a CSS Box tree per element using the computed style
  13. retina-page invokes retina-compositor
  14. retina-compositor sends drawing commands to retina-gfx using the Box tree
  15. retina-gfx translates the draw commands to wgpu-specific calls
  16. retina-gfx executes these commands on the page surface
  17. wgpu invokes the underlying graphics library (OpenGL, Vulkan, etc.)
  18. retina-page sends a texture view of the page surface to the main process
  19. retina calls retina-gfx to paint this texture view to the window surface

📚 Quick Links

⚖️ License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

🔗 Retina is a web engine ✨, written in Rust. It aims to stay close to web standards and specifications, focusing on correctness, performance, and safety.

Topics

Resources

License

Stars

Watchers

Forks

Languages