Skip to content

Repository files navigation

sirius

Sirius is a tiny HTML5/CSS3 renderer written in Nim. It isn't anything serious right now, but it can render some HTML and apply CSS.

No build instructions are given since it's an experimental project with zero promises. Expect more tomfooleries occurring here. :^)

The base was written in a day, so don't expect anything grandiose.

close roadmap

An image of Sirius on the Wiby search engine An image of Sirius rendering the first test page An image of Sirius rendering the second test page

  • HTML5 parsing infra/DOM types (mostly taken from Chame's minidom for now)
  • CSS3 parsing infra
  • Style map building and matching
  • Flow Layout (mostly)
  • Initial user agent
  • Inline styles
  • Network content fetching
  • Vulkan (OpenGL/Metal eventually?) based renderers using FigDraw
  • HarfBuzz for text shaping
  • JavaScript execution, very early DOM bindings
  • Content caching
  • Forms support
  • CSS Grid Layout

why not work on ferus?

Ferus was mostly written back when I was still learning Nim. As such, it has some pretty nasty code that I'd much rather not spend energy refactoring.

Also, its hypermodular nature made it extremely tiring to make minor changes in its components.

then how is this different?

Most of the unstable, fast-moving components are located at components/, so I can make changes to them without pulling my hair out. The stable parts like the CSS3 parser are already separate packages that others rely on, so they stay as-is (albeit Stylus did get a new release to fix some of the aforementioned nasty code from ye olden days).

Also, Sirius is strictly single-processed for now. Multiprocessing is a goal, but it's not going to be implemented for some time.

some improvements over ferus

  • Not written by a clueless 14 year old
  • The layout engine is actually properly extensible now, I guess.

About

A web rendering engine built from scratch in Nim [MIRROR]

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages