Friday, April 20, 2012

12.0 available (10.0.4 to follow)

I don't know what's going on with ESR 10.0.4 (there is no tagged build as of this writing), but 12 is signed off and has build tags, so we're shipping. I will build ESR 10 tomorrow regardless of whether there are build tags or not because we need to get basic testing by you, the basic testing basic audience, basically before we basically ship.

As promised, TenFourFox 12 contains a CoreGraphics backend to Azure, the 2D API Mozilla is developing to improve graphics performance. Azure right now is only used for canvas elements, but this is in more places than you'd think (for example, pdf.js, the JavaScript PDF reader, uses canvas and this backend is noticeably faster), so the improvement is more than you might suspect. The shipped backend with regular Firefox requires features of 10.5, but fortunately most of the features have undocumented private API versions in 10.4, particularly the compositing operators, so the port was relatively straightforward in that respect. It also relies on CGGradient, which is a CoreGraphics convenience interface to CGShading that was introduced in 10.5; we use Chad Weider's public domain CTGradient object instead to act as a gradient-style veneer over CGShading and then a custom Objective-C++ glue object to connect Mozilla's C++ interface to CTGradient's Objective-C interface. Finally, the regular Fx backend uses CGContextShowGlyphsAtPositions to display text, which is not in 10.4's CoreGraphics or private CoreText, so we just use a loop and good old CGContextShowGlyphsAtPoint (CGContextShowGlyphsWithAdvances is not suitable for a variety of reasons, not least being std::vector doesn't act quite right in 10.4). The only leftover bug on our part is a strange edge case with gradients where a terminal alpha-only stop can leave a strange dark fringe and I suspect this is actually a bug in CTGradient.

You will notice one particular difference between Cairo-based canvas and Azure CG canvas, depending on the fonts you have installed and their supported faces. If your Helvetica, say, lacks an italic, then if you ask for italic in that font you'll just get roman, whereas Cairo would try to simulate it. Strictly speaking I think CG has the correct behaviour here, and actually the CG backend works better with weird fonts in pdf.js as well that don't even display with Cairo.

Using CoreGraphics also introduces a modicum of hardware acceleration, which works on both 10.4 and 10.5. Stretching the canvas (such as in this GameBoy emulator when you press ESC) uses hardware to stretch it rather than software, and certain other CoreGraphics operations can also be accelerated by the graphics card. The proof is in the benchmarks. Not only compare TenFourFox 12 against 11, but try turning gfx.canvas.azure.enabled off and see what it does to your Peacekeeper scores. CoreGraphics accelerates these operations up to 60%. I can't wait for them to expand it to other components in the graphics stack, particularly SVG and HTML5 video blitting.

Other than that, 12 is a pretty blah release. There are some new CSS and DOM properties, but that's really it. Memory usage seems a bit worse due to a new font shape cache they are using, but this improves text-heavy pages, so it's hard to call it a bad tradeoff. The big changes in tab control and SPDY-by-default don't start appearing until Fx13.

In TenFourFox-specific news, this release improves XPCOM performance from JavaScript by simplifying the PowerPC assembly used for xptcall. It's a marginal win, but it's a win everywhere (issue 137). Java is also now disabled by default again, even if you have ignored my professional advice and turned on plugins, as reported by Chris (issue 141). This last fix will also occur in 10.0.4ESR stable, and the stable release will also have the blocklist disabled.

Release notes and architecture builds (watch for 10.0.4 probably tomorrow evening Pacific):

11 comments:

  1. http://postimage.org/image/6wnafxypn/

    ReplyDelete
  2. Heck of an update - it feels faster and pretty darn stable on my dual-core G5.

    Is there a roadmap for Azure?

    ReplyDelete
  3. On the Acid3 test at http://acid3.acidtests.org/ there's a letter x with a purple background in the upper right corner. This wasn't there in TenFourFox 11.

    ReplyDelete
  4. The X in Acid 3 is still there when I turn off Azure. FF 12.0b6 on Windows XP doesn't show it. Can't tell if it's a FF Mac problem or a TFF problem.

    Regarding canvas I can report a 56% speed improvement in Peacekeeper with Azure.

    ReplyDelete
  5. I've noticed YouTube HTML5 video is much jerkier in TFF 12.

    ReplyDelete
  6. It's our bug. It's a problem loading the Ahem font. Issue 146. 10 is not affected.

    As far as HTML 5 video, I haven't noticed much difference, but I'm on a quad, so it's harder to judge.

    ReplyDelete
  7. About html5: From my cursory experience I noticed that in 12, audio is even more fluid, and video even more of a slideshow (G4 1.3 GHz). Looks like Mozilla may have changed the settings again.

    ReplyDelete
  8. This comment has been removed by the author.

    ReplyDelete
  9. Lookie what I found. There is something new in 12: Set browser.newtabpage.enabled to true, and type about:newtab in the url bar :-) Completely stolen from Safari, incl. the pins, but may be useful for some people.

    ReplyDelete
  10. Heya guys, thx for your efforts on keeping PPC alive! Just one question, I'm maintaining my fathers older Yikes G4 and he's not really any good with english but somehow I could not get the language pack to work.

    With TenFourBird 10.0.4 I heard it should be possible to install the xpi language packs of the official ESR intel- mac release, I could install it but it didn't do anything.

    On TenFourFox 12 I tried all kinds of things from older language patches to manually editing stuff I could not getting it to work, did I miss anything, I've read the hints at issue 61 and 42 but to no avail :(

    ReplyDelete

Due to an increased frequency of spam, comments are now subject to moderation.