This list is for WebKit work that is about improving performance, infrastructure and/or the maintainability of the codebase. This is a list of high-priority projects that have minimal dependence on web standards bodies and on buy-in from other WebKit ports.
If you decide to take on one of these projects put your name at the beginning like [ ojan ] and move the line to the "Completed Projects" section once the project is done. Some of the bigger projects could use multiple people working on them.
Talk to Ojan if you have questions about any of these or want to add more things to this list. If you discover other new projects that would fit well here we should add them!
- Split RenderBlock into two classes. Create a base class for a box that is a container of other boxes and is the appropriate superclass for RenderBlock, RenderFlexibleBox, RenderGrid, RenderTable, RenderDeprecatedFlexibleBox. The new RenderBlock will just be about dealing with laying out lineboxes and inlines.
- Kill RenderArena. In the past, this has come with a 1-2% performance regression on page cycler tests. The hard part is finding a way to do it without a significant perf hit. A good starter bug here would be https://bugs.webkit.org/show_bug.cgi?id=87523.
- Add COMPILE_ASSERTS for the size of all object with bitfields and all other objects that we create a lot of.
- Add histograms for measuring the cost of doing a second layout when we go from not needing a scrollbar to needing a scrollbar. Maybe we can invert the heuristic to assume that we will need a scrollbar and pay the second layout cost for cases where we don’t need one.
- Make appendChild O(1) when possible
- [META] RoboHornet (and RoboHornet Pro) related performance issues: https://bugs.webkit.org/show_bug.cgi?id=98798
- - tag-based collections are invalidated on every add/remove of an element (25%+ win for RoboHornetPro) wkb.ug/98823
- Improve performance of Dromaeo and dom_perf bencharks. For example, <https://bugs.webkit.org/show_bug.cgi?id=99197> makes JSC go 40% faster on dom-traverse. Can we do something similar for V8?
- Should report private memory on the perf bots: http://crbug.com/163280
- Improve memory usage of the following benchmarks:
- Create (and then optimize) benchmarks that accurately represent memory usage in gmail, docs, etc.
- Improve performance test suites:
- Add more debugging tools to content_shell, e.g. apple’s debugging menu has a bunch of handy things like a live view of the rendertree.
- Switch chromium windows bots back to using Apache: https://bugs.webkit.org/show_bug.cgi?id=101373
- Improve garden-o-matic:
- Add a tool to garden-o-matic/flakiness dashboard/code review tool to make it possible to easily view the diff of an expected result to another platform's expected file (e.g. diff between platform/chromium/foo-expected.txt and platform/mac/foo-expected.txt).
- Rebaseline tests from the results.html page: https://bugs.webkit.org/show_bug.cgi?id=86797