JUL
17
2013

QtWebKit 2.3.2 and QtWebKit for Qt 5.1

Thursday I tagged QtWebKit 2.3.2. To avoid confusion I will present both QtWebKit for Qt 5.1 and QtWebKit 2.3.2.

The new features in QtWebKit for Qt 5.1 can be seen on http://qt-project.org/wiki/New-Features-in-Qt-5.1 . Let me expand a few interesting ones below:

Windows 64bit JIT: In QtWebKit 5.0 and QtWebKit 2.3.1 we only supported interpreted JavaScriptCore on 64bit Windows. The issue is that unlike 32bit x86, x64 has different calling conversions on Windows and Linux, so the it requires different JIT implementations to work on Win64, and on top of that. Note that x64 is still not as fast as x86 on windows or x64 on linux. Only first generation JIT has been implemented, the second generation DFG JIT is not available. This work was also cherry-picked forQtWebKit 2.3.2

MIPS JavaScriptCore: MIPS have had second level DFG JIT implemented. This work was also cherry-picked for QtWebKit 2.3.2. Note the at WebKit MIPS implementation is limited to the O32 binary format and calling convention, and requires 64bit floating-point any other MIPS configuration will default to interpreted.

Improved garbage collection: Garbage collection have been improved by implemented the activity triggered garbage collected and the incremental sweeping garbage collector. The first means that garbage collection can now be triggered by new allocations. This is more likely to keep the memory usage constant, by spending time to find garbage each time more memory are allocated. The second means that garbage collection will now run incrementally which means JS will now cause shorter CPU stalls when under pressure. Also in QtWebKit 2.3.2.

Improved font rendering: In Qt 5.1 QtWebkit now defaults to enabling font kerning Previously kerning could be enabled using '-webkit-font-kerning: normal' but doing so would incur a big performance hit because a complex font rendering path would be used (the slowl path used when complex shaping is required). In Qt 5.1 we can now renderer kerned text in the fast font rendering path, which means we can now enable it when '-webkit-font-kerning' is set to 'auto' which is default. This is Qt 5.1 only because it depends on new features added there.

Support for WOFF fonts: We have added support for the WOFF web-font format. This feature depends on the presence of the zlib library when building WebKit. This work was also cherry-picked for QtWebKit 2.3.2.

Qt 5.1 is available at http://qt-project.org/downloads

QtWebKit 2.3 for Qt 4.8 is maintained at https://gitorious.org/+qtwebkit-developers/webkit/qtwebkit-23 and the tarball 2.3.2 is https://gitorious.org/webkit/qtwebkit-23/archive-tarball/qtwebkit-2.3.2

Best wishes here from Bilbao (Akademy + QtCS)

Edit: correct tarball link

Comments

Allen, many thanks for your great work in making these WebKit improvements available to those who are not ready to move on to Qt5 yet.

Is there any chance that the 2.3 repo could be possibly made smaller? I've just cloned it from gitorious (which took nearly 3 hours), ending up with a 6.4Gb local repo including a single 3.7Gb pack object and 2.2Gb under the LayoutTests subdirectory. That's a lot of space and bandwidth for just ~250Mb of source! Unfortunately Git doesn't support partial checkouts...


By Jonathan Marten at Wed, 07/17/2013 - 16:38

@Jonathan: Allen told me that the tarball was much smaller than the git repo because it didn't contain all the tests (which are huge).

However, I can't find the tarball. The URL in the blog post gives me "This Git object is too large to be displayed in the browser Consider cloning the repository locally and look at the object there" in any browser I try. @Allen: do you have a direct link to the tarball download? Or could you put it up on ftp://upload.kde.org so that people can actually download it? Gitorious, once more, fails to deliver.


By dfaure at Wed, 07/17/2013 - 22:46

The tarball link was wrong. I have corrected it.


By Allan Sandfeld at Thu, 07/18/2013 - 09:24