Sunday, September 29, 2013

24.0 might actually work out after all

I am very relieved to announce that TenFourFox 24.0 builds and links, and after a couple of tweaks does get through the low-level initialization into basic XUL and an event loop (I haven't tested it further yet since I want to back up my profile and a few other things first). A lot of hacking was required for 24's initial underlying work for Australis, including adding HIToolbox equivalents for more dependencies on CoreUI (not in 10.4) and I'm a little worried at how incredibly divergent our already weird widget code is becoming. I also had to do some surgery on the guts of the profiler, which doesn't work right in 10.4 but is becoming an increasingly large part of Mozilla's telemetry initiative and has to be worked around just to get the app to even start.

Speaking of Australis, Mozilla's planned new super-sexy interface for Firefox, its continued tardiness has become the big sniggering joke of the web browser blog circuit. It was supposed to land in 25, but that obviously slipped (I'm using 25 beta at work, and it's "regular Firefox"); it doesn't appear to have made it into 26 aurora either, so maybe we'll finally see it in Firefox 27. Maybe. Mozilla isn't really saying and I'm not sure where the hold-up is since most of the performance regressions we care about have been mitigated. Australis is one of those must-reach goals, like having some sort of JIT; whenever it lands, if we can't move forward, that's it for the port. I'm hoping it lands in 27, and then we can do some feasibility studies and roll back to 24 if needed.

In light of 24.0 actually building and linking, regular readers will wonder where the phase 4 announcement is (passes all tests) for PPCBC, our new baseline JavaScript JIT implementation after Mozilla removed methodjit in Firefox 23. Well, there isn't one -- it's still failing three of them. One is stubbed out with a tweak to the compiler itself since I suspect the underlying problem is actually a Mozilla bug I can't track down yet, and the second is that endian issue I've previously mentioned with asm.js which is pointless to fix since those sorts of scripts are usually hopelessly little-endian dependent anyway (methodjit doesn't pass it either). The third one does concern me a bit; it's an issue where we can overflow our JIT branching with really unlikely chains of try/catch blocks. It's not a security issue and the code necessary is terribly pathological, but it is a reliable crash, and I have to think of a way to repair it that won't drag the browser down. I don't think we need it to launch, though.

Once the last few JavaScript issues are shaken down and the widget code is verified to be working again, the last thing is to look at getting jemalloc back if the memory issues we discovered in the 22.1 test release are still present. It really does help (when it works) on multi-CPU systems on 10.4, even though you, my testing audience, found little improvement in single-CPU systems or on 10.5. The drawbacks are at least well understood, but if the memory leak still manifests we'll still have to rely on the default and slower built-in OS X allocator.

This will be tight for a beta, but at least we have two full cycles to get it right since 24 final will not be out until the 24.0.2/26 timeframe, six weeks after our final 17.0.10 release. Watch this space for more.

Because of all the widget work Australis is containing, I'm considering pulling the trigger on not allowing TenFourFox to link against the 10.5 SDK anymore. This has not been well-tested since at least 19 or earlier and it is quite possible it no longer works (Tobias' AuroraFox for 10.5 was actually a separate set of patches with Leopard-specific code, not what TenFourFox uses). You would still be able to build and run TenFourFox on 10.5, of course; you would just have to link it against the 10.4 SDK, which would become the only supported target. This would allow me to simplify a great deal of the code and improve maintainability when we split our widget and skin code off the mainline. If this is going to desperately break someone, speak now; my idea is to make 24-stable the last release series where linking against the 10.5 SDK remains even only theoretically supported.

No comments:

Post a Comment

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