Last week in WebKit:
page, are you still there?
Another busy week in WebKit. The refactoring craze is calming down, and people are focusing on making WebKit fast and rock solid.
New behaviors
A great change this week was Simon Fraser unprefixing the Page Visibility API. If you want to try, the feature is enabled on the WebKit Nightly builds.
Some other change and interesting bug fixes for webpages:
- Filip Pizlo fixed !(0/0) in DFG. If like me you wonder what the expression evaluate to, 0/0 is NaN in JavaScript, and !NaN is true.
- Another interesting/weird fix by Filip was the evaluation of (-2^31/-1)|0.
- Robert Hogan changed how text with nowrap and ellipsis layout in the presence of a floating object. Previously, the line width would be computed up to the floating object, which is incorrect with nowrap. Now the line will extend to the end of the box, and the ellipsis computed accordingly. That behavior is not particularly useful but at least is it consistent with the case without ellipsis and follows the specification (and matches Firefox’s behavior.)
- Mihai Tica updated the implementation of background blending to match the latest specification. Instead of applying the blend operation with the pixels underneath the element, the blend now only applies on the background color and background images below the currently rendered image.
- Claudio Saavedra continues his work on CSS Variables. This week, he made sure the prefix used when using CSS Variables is “-webkit-var“ (it was previously case insensitive, “-WebKit-var” was okay to define variables). The variable name itself is still case sensitive.
Engine engineering
As usual, there were performance improvements this week. Some of them:
- Mark Rowe changed the WebProcess flags when coming out of process suppression to improve responsiveness.
- Simon Fraser improved the scrolling performance of the new Flickr website. This case is interesting: when a frame has elements with a fixed background image, the engine needs to use a slower scrolling mode to repaint the content over the image with every frame. Flickr was hitting a bug where WebKit did not detect when the element with a fixed background image was removed from the document, thus staying in the slower mode.
- Ádám Kallai enabled JavaScriptCore’s parallel Garbage Collector for Qt. This will nicely improve JavaScript performance on QtWebKit.
In addition to the performance improvements and bug fixes, there were some architecture changes.
- Andreas Kling is refactoring Node and Element to clean the responsibilities between the two classes.
- Xueqing Huang fixed the clipboard code of the Windows port, moving it to the new infrastructure Darin finished last week.
The WebKitten of the Week is Simon Fraser for pushing the unprefixing of Page Visibility API (and making Flickr scrolling super fast.)