The CSS engine is slow, bloated and overdesigned for its current usage. I'm the primary developer working on the CSS engine over the last 10 years, so I think I know what I'm taking about.
After increasing the test coverage in the 4.40 release to catch regression I plan to re-work the CSS engine in 4.41 to make it faster and easier to maintain.
Highlights of the planned changes:
- flatten engine/helper hierarchies (~-2,000 LOC, low risk)
- replace W3C DOM mirror with POJOs/records (~-3,500 LOC, medium risk)
- replace SAC parser layer, keep Batik directly (~-2,000 LOC, medium risk)
- collapse property-handler dispatch, deprecate extension point (~-2,500 LOC, high risk)
- merge css.swt.theme into css.swt (~-200 LOC, medium risk)
The exsting CSS styling will remain the same just the internal handling will be re-worked. I expect also a much faster execution time of the re-worked CSS engine, which I also will measure.
The above should reduce the CSS code by around 30% more if you remove the added lines for the additional tests. CSS engine is internal API, so no API breaking changes.
The CSS engine is slow, bloated and overdesigned for its current usage. I'm the primary developer working on the CSS engine over the last 10 years, so I think I know what I'm taking about.
After increasing the test coverage in the 4.40 release to catch regression I plan to re-work the CSS engine in 4.41 to make it faster and easier to maintain.
Highlights of the planned changes:
The exsting CSS styling will remain the same just the internal handling will be re-worked. I expect also a much faster execution time of the re-worked CSS engine, which I also will measure.
The above should reduce the CSS code by around 30% more if you remove the added lines for the additional tests. CSS engine is internal API, so no API breaking changes.