• Michael Drake
  • Vincent Sanders
  • Daniel Silverstone

Outstanding work (from May)

  • General
    • Forms cleanup.
  • Text layout
    • Continue implementing.

Still outstanding after October developer weekend.


Mostly individual activity here


  • Worked with Daniel on CSS calc() support in LibCSS.


  • Worked with Michael on CSS calc() support in LibCSS.
  • Fixed GTK path plotter translation table. (Fixes svgtiny rendering offset.)
  • Fixed LibDOM fuzz testing issue.
  • Fixed various crashes from the long internet tests.


  • Added support to LibSVGTiny for paths using arcs.
  • Added a chart renderer to NetSurf.


Thoughts around calc()

Currently the tlsa/calc branch contains our work-to-date

Remaining work


In theory we could make the calculation bytecode be stored as a lwc_string, which means we already have mechanisms for deduplication, identity checking, etc. in libcss.

  1. Maybe update generator to construct valid/invalid UNIT types for each property as a table for use later.
    • This would involve repeating the validation expressions present in LENGTH_UNIT:() in properties.gen or perhaps reworking that bit too.
    • This is probably an array, indexed by property, whose values are a bitfield of permitted unit types.
  2. Implementing the cascade
    • Mostly in the common code.
    • Should be able to type-check here (property-specific part).
    • In theory type-check could happen in the parser, but once var() gets involved it'll have to be in the cascade, so we may as well put it here from the start.
  3. Reworking the computed style to have a calc section
    • By this, we mean that the computed styles should have a representation which means "Use calculation N" in the current packed content, and then in the less compact struct we can have calculation bytecode for each unique calculation needed to support the style.
    • Also consider how this impacts computed style internment / sharing.
  4. Rework API for computed styles to support client functions so that calc can run
    • This is were we implement doing the calculation.
    • May need care in the case of invalid results in calc
    • May permit simplification of things like percentage units.
    • Maybe the context structure should carry simple values like available width/height viewport width/height, etc. But have a callback for things like relative font sizes etc.
    • Probably change so all widths emerge from libcss in px.
  5. Write selection tests involving calc()
    • Will involve fixing dump_computed.h to the new API

After all that, NetSurf needs updating to the new API, which should simplify the CSS client code in NetSurf quite a bit.

Next time

  • Undecided.