Friday, August 19, 2016

TenFourFox 45 beta 2: not yet

So far the TenFourFox 45 beta is doing very well. There have been no major performance regressions overall (Amazon Music notwithstanding, which I'll get to presently) and actually overall opinion is that 45 seems much more responsive than 38. On that score, you'll like beta 2 even more when I get it out: I raided some more performance-related Firefox 46 and 47 patches and backported them too, further improving scrolling performance by reducing unnecessary memory allocation and also substantially reducing garbage collection overhead. There are also some minor tweaks to the JavaScript JIT, including a gimme I should have done long ago where we use single-precision FPU instructions instead of double-precision plus a rounding step. This doesn't make a big difference for most scripts, but a few, particularly those with floating point arrays, will benefit from the reduction in code size and slight improvement in speed.

Unfortunately, while this also makes Amazon Music's delay on starting and switching tracks better, it's still noticeably regressed compared to 38. In addition, I'm hitting an assertion with YouTube on certain, though not all, videos over a certain minimum length; in the release builds it just seizes up at that point and refuses to play the video further. Some fiddling in the debugger indicates it might be related to what Chris Trusch was reporting about frameskipping not working right in 45. If I'm really lucky all this is related and I can fix them all by fixing that root problem. None of these are showstoppers but that YouTube assertion is currently my highest priority to fix for the next beta; I have not solved it yet though I may be able to wallpaper it. I'm aiming for beta 2 this coming week.

On the localization front we have French, German and Japanese translations, the latter from the usual group that operates separately from Chris T's work in issue 42. I'd like to get a couple more in the can before our planned release on or about September 13. If you can help, please sign up.

Wednesday, August 10, 2016

And now for something completely different: what you missed by not going to Vintage Computer Festival West XI

With the exception of this man,
you all missed out by not coming to the reincarnated Vintage Computer Festival West. You had a chance to meet me and my beloved Tomy Tutor (which you can emulate on a Power Mac or Intel Mac). You had a chance to see other inferior exhibits. You didn't. So let me now make you feel bad about what you missed out on.

You could have seen the other great exhibits at the Computer History Museum,

the complete Tomy Tutor family, hosted by my lovely wife and me
that corrupted young minds from a very early age
(for which I won a special award for Most Complete and 2nd place overall in the Microcomputer category),
seen a really big MOS 6502 recreation,
played Maze War,
solved differential equations the old fashioned way,
realized that in Soviet Russia computer uses you,
given yourself terrible eyestrain,
used a very credible MacPaint clone on a Tandy Color Computer,
messed with Steve Chamberlain's mind,
played with an unusual Un*x workstation powered by the similarly unusual (and architecturally troublesome) Intel i860,
marveled at the very first Amiga 1000 (serial #1),
attempted to steal an Apple I,
snuck onto Infinite Loop on the way back south,
and got hustled off by Apple security for plastering "Ready for PowerPC upgrade" stickers all over the MacBooks in the company store.

But you didn't. And now it's too late.*

*Well, you could always come next year.

Wednesday, August 3, 2016

45.3 beta 1 available

For better or worse, I bring you fire TenFourFox 45.3 beta 1 (downloads, hashes, release notes).

Like pretty much every major ESR jump from before, some sites will be faster and some sites will be slower. The biggest new change is that we are now building the full Intl API with ICU support (issue 304). We were able to get away without it in 31 and 38 due to various hacked-in stubs but now too much in the browser (let alone add-ons) requires it. To avoid issue 266 we build a shared ICU and shared data file which will degrade startup time while they get searched and loaded along with all the others. There are also new UI features in the browser such as search suggestions (which you can disable) that add overhead, and certain layout and rendering operations are more heavyweight than they were in earlier releases. I've tried to load in some later performance updates to counter this last issue, but they don't erase the delta completely. On the plus side, however, as mentioned previously JavaScript JIT performance jumped 20% between 38 and 45, and low-level graphics performance and software pixel pushing is faster which manifests in better animation performance and smoother scrolling.

Remaining issues include Amazon Music failing to advance tracks in playlists (the JIT has been exonerated, so I'm still spinning my wheels here), disabling the last remnants of signed extensions (which I philosophically disagree with) and changing the update notification source. Otherwise it seems to function very well once it's loaded everything and got most of the browser chrome in the JIT. The browser is tested on my usual lab machines, the 16GB monster Quad G5, a 1.5GB 1.33GHz iBook G4, a 1.25GB 1GHz iMac G4 15" and a 2GB 450MHz Sawtooth G4, all running Tiger. TenFourFoxBox appears to work with no changes needed but you may want to keep 38.10 around for right now if you are using foxboxes heavily, just in case (please report issues as you find them).

On the build side, pretty much the process is the same as 38 except that gcc 4.8 is now required. The MacPorts build of gcc is what I use, and I'd like to hear if other builds from our other unofficial package maintainers also work. The hacked strip7 unfortunately is still needed for stripping release binaries to handle the variant N_SECTs in the object files. One irregularity is that gcc 4.8 can't distinguish Objective-C messages from C++11 lambdas, or rather, that Objective-C++ has priority over lambdas, so that you can't reliably use both language features in the same file. This occurs in exactly one place in the entire code base, in code we don't support anyway, so it's #ifdefed off. If your local changes run afoul of this, try adding #define GCC_SUCKS_MOOSE_WANG (yes, really, I was a bit peeved that day) and see if it builds with that, or put the C++11 lambdas into another file and have your Objective-C++ call it instead. The build instructions are updated and available now, and with luck our esteemed colleague in the Land of the Rising Sun will be able to build Tenfourbird on the 45 base as well. Also, as you will see, the G3 version built just fine and will still be supported in 45 and thereafter.

Localizers should be aware of two new files, TenFourFox.dtd and TenFourFox.properties, which will be the locale basis for features I am considering or planning to release. I'd rather have translations for features I decide against implementing than not having strings for features I do implement, so almost nothing in those two files (which are roughly the same strings in different places) is being used right this second; that said, however, the idea is to roll out features using these strings during 45's lifetime as we move from source parity to feature parity and this will enable me to do so more quickly. If you would like to contribute to the localization effort (we really appreciate it), Chris T wrangles the cats in issue 42. The aim is to have substantially the same languages available for 38 available for 45 at or near the time of release in about six weeks. Your help is invaluable in this effort.

Finally, let's give 38 a rousing round of applause for being a solid, long lived branch release as it rides off into the ESR sunset. Its end also means the end of one of the oddest chapters in Firefox history, Debian Iceweasel, which has now reverted to being "just" Firefox as of 45ESR. Although both we and they rebranded ourselves because of various changes to Firefox we were making, we'll still be keeping our name because we really do change the feature set and make various platform-specific changes Mozilla would probably find unacceptable otherwise. Plus it gives you guys something to still complain about, along with the icon. :)

Don't file Github tickets on beta issues; post them in the comments. Please be kind. This was literally months of work. Thanks and let's start banging the bugs out.

Sunday, July 31, 2016

38.10.0 available

TenFourFox 38.10.0 is now available for testing (downloads, hashes, release notes). This brings TenFourFox 38.x to security parity with 45.3; again, if you are using our patches downstream, keep in mind I only backport the security fixes relevant to our standard configuration. As always, it becomes the release version Monday evening Pacific.

I'm still trying to investigate what's wrong with Amazon Music in TenFourFox 45, but everything else appears to be working. Watch for beta 1 later this week regardless.

Also, this makes me happy. Its name is Eric.

Tuesday, July 26, 2016

And now for something completely different: Join me at Vintage Computer Festival XI

A programming note: My wife and I will be at the revised, resurrected Vintage Computer Festival XI August 6 and 7 in beautiful Mountain View, CA at the Computer History Museum (just down the street from the ominous godless Googleplex). I'll be demonstrating my very first home computer, the Tomy Tutor (a weird partial clone of the Texas Instruments 99/4A), and its Japanese relatives. Come by, enjoy the other less interesting exhibits, and bask in the nostalgic glow when 64K RAM was enough and cassette tape was king.

I'm typing this in a G5-optimized build of 45 and it seems to perform pretty well. JavaScript benches over 20% faster than 38 due to improvements in the JIT (and possibly some marginal improvement from gcc 4.8), and this is before I start doing further work on PowerPC-specific improvements which will be rolled out during 45's lifetime. Plus, the AltiVec code survived without bustage in our custom VP8, UTF-8 and JPEG backends, and I backported some graphics performance patches from Firefox 48 that improve throughput further. There's still a few glitches to be investigated; I spent most of tonight figuring out why I got a big black window when going to fullscreen mode (it turned out to be several code regressions introduced by Mozilla removing old APIs), and Amazon Music still has some weirdness moving from track to track. It's very likely there will be other such issues lurking next week when you get to play with it, but that's what a beta cycle is for.

38.10 will be built over the weekend after I'm done doing the backports from 45.3. Stay tuned for that.

Saturday, July 23, 2016

TenFourFox 45 is more of a thing

Since the initial liftoff of TenFourFox 45 earlier this week, much progress has been made and this blog post, ceremonially, is being typed in it. I ticked off most of the basic tests including printing, YouTube, social media will eat itself, webcam support, HTML5 audio/video, canvas animations, font support, forums, maps, Gmail, blogging and the major UI components and fixed a number of critical bugs and assertions, and now the browser is basically usable and able to function usefully. Still left to do is collecting the TenFourFox-specific strings into their own DTD for the localizers to translate (which will include the future features I intend to add during the feature parity phase) and porting our MP3 audio support forward, and then once that's working compiling some opt builds and testing the G5 JavaScript JIT pathways and the AltiVec acceleration code. After that it'll finally be time for the first beta once I'm confident enough to start dogfooding it myself. We're a little behind on the beta cycle, but I'm hoping to have 45 beta 1 ready shortly after the release of 38.10 on August 2nd (the final 38 release, barring a serious showstopper with 45), a second beta around the three week mark, and 45 final ready for general use by the next scheduled release on September 13th.

A couple folks have asked if there will still be a G3 version and I am pleased to announce the answer will very likely be yes; the JavaScript JIT in 45 does not mandate SIMD features in the host CPU, so I don't see any technical reason why not (for that matter, the debug build I'm typing this on isn't AltiVec accelerated either). Still, if you're bravely rocking a Yosemite in 2016 you might want to think about a G4 for that ZIF socket.

I've been slack on some other general interest posts such as the Power Mac security rollup and the state of the user base, but I intend to write them when 45 gets a little more stabilized since there have been some recurring requests from a few of you. Watch for those soon also.

Thursday, July 21, 2016