tenfourfox/TechnicalDifferences.md
2015-08-09 17:46:48 -04:00

5.2 KiB

TenFourFox "10.4Fx" is designed to be as close to Mozilla sources as possible, for as long as possible (see SupportLevels for how we plan to deal with the inevitable code divergence). In general, pretty much anything that applies to Firefox applies to 10.4Fx. However, because of limitations in earlier versions of OS X that we still support, there are some omissions and changes in features that should be noted by users and porters, and 10.4Fx also adds new PowerPC-specific features that are unique.

  • 10.4Fx, as of 5.0, does currently support the Mozilla IPC system, but only insofar as it is needed to build. The actual IPC internals only work between threads and not processes.

  • Because of increasingly poor plugin support on Tiger and PowerPC, plugins ship disabled in 10.4Fx 6.0, and no longer function at all in 19.0 and up. This is both for reasons of security (particularly with Flash) and the use of incompatible later OS X APIs. Bug reports related to plugins will not be accepted. See PluginsNoLongerSupported.

  • 10.4Fx, as of 4.0.1pre, uses a modified libvpx with AltiVec to accelerate WebM video playback instead of the baseline C version in 4.0 and earlier versions (issue 28). The baseline C version is still used for the G3 build, which lacks VMX. It is the only browser known to use this code.

  • OpenGL support is presently disabled in 10.4Fx. This is Apple's fault, as Mozilla requires non-power-of-two texture sizes, which require OpenGL 2. Unfortunately, PPC Tiger does not support OpenGL 2 at all, and only a subset of cards support it in PPC Leopard (the really irritating part is that Intel Tiger does have OpenGL 2, and OpenGL 2 came out in 2004!). It may be enabled in the future for those handful of configurations on Leopard, but this won't benefit the majority of users. Note that many graphics features will work just fine; they just won't be hardware-accelerated.

  • Because there is no OpenGL 2, there is no WebGL. The Linux version of Firefox has a fallback to libOSMesa, which is a software OpenGL rendering library, and we are hoping to abuse that for our purposes. Some work has been done on porting this to 10.4 without the X11 dependencies so that it is a pure renderer suitable for this task, but it is currently not working. The libOSMesa that is built-in to 10.4 cannot be used, because it is not OpenGL 2 (10.5's may be useable, but this is not yet explored or enabled).

  • As of 4.0 beta 9, 10.4Fx offers JavaScript just-in-time compilation with its custom PowerPC backends.

    • Versions 4.0b9 through 9.0 defaulted to a custom PowerPC-enabled nanojit for JavaScript acceleration through tracejit/TraceMonkey (issue 15) using code written for Tamarin by Adobe. This compiler was gradually decommissioned in 10.x, and completely disabled in 10.0.6.
    • As of 9.0 RC, 10.4Fx introduced its own PowerPC method compiler for JavaScript acceleration through methodjit/JaegerMonkey (issue 96); it became the default compiler in 10.4Fx 10, and later fully supported type inference. Methodjit support ended with Firefox 24. Parts of this compiler are still used for YARR regular expression support.
    • 10.4Fx does not yet support IonMonkey, but a port is in progress (issue 178). However, 10.4Fx does support PPCBC, a PowerPC-specialized form of BaselineCompiler (issue 224, issue 245).
  • All text rendering in 10.4Fx uses HarfBuzz, an OpenType font shaper. While some portions of code leverage Tiger's private CoreText framework (yes, CoreText is in Tiger too), Tiger's CoreText does not support enough font features to allow Mozilla's built-in CoreText shaper to function correctly. HarfBuzz actually works just fine for the vast majority of cases, and appears to be faster overall to boot, so this is a net win. However, installed fonts and scripts that require Apple Advanced Typography features to correctly render, such as Indic and Arabic fonts, will not have correct ligatures or glyph substitution or reordering. This is because HarfBuzz cannot interpret AAT information encoded in the fonts that come standard with OS X, and Tiger CoreText does not provide enough support for controlling individual glyph positions to provide a fallback. Although the characters will appear on-screen, they may not be linked or ordered properly. If the site provides an OpenType-equivalent, however, some scripts may be able to display correctly (and more will work correctly in the future). Most European and other Asian characters and scripts obviously work fine, of course. For more information, see issue 5.

  • Bitmap-only fonts cannot be rendered by HarfBuzz. 17.0 and up filter them out and select a fallback.

  • For reasons of UI/UX harmony, certain UI elements are preserved in 10.4Fx that are not in Firefox 4 and later, such as Check For Updates under the Application menu. These smaller changes are unlikely to be noticed by add-ons.