converted from Google Code

Cameron Kaiser 2015-08-24 18:05:28 -07:00
parent 71f9c9d568
commit 31fcd27d25

26
TechNotes.md Normal file

@ -0,0 +1,26 @@
TenFourFox "10.4Fx" is designed to be as close to Mozilla sources as possible, for as long as possible (see [[our Parity page|Parity]] 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 only partially supports the Mozilla IPC system, and only insofar as it is needed to build. The actual IPC internals only work between threads and not processes. Electrolysis multi-process support is not planned due to limitations of the core operating system.
* 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 our document on [[plugin non-support|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](/classilla/tenfourfox/issues/28)). The baseline C version is still used for the G3 build, which lacks VMX.
* 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. 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).
* 10.4Fx offers JavaScript just-in-time compilation with its custom PowerPC backends.
* Versions from 4.0b9 ending with 9.0 defaulted to a custom PowerPC-enabled nanojit for JavaScript acceleration through tracejit/TraceMonkey ([issue 15](/classilla/tenfourfox/issues/15)) using code written for Tamarin by Adobe. This compiler was gradually decommissioned in 10.x, and completely disabled in 10.0.6.
* Versions from 9.0 ending with 24.0 used its own PowerPC method compiler for JavaScript acceleration through methodjit/JaegerMonkey ([issue 96](/classilla/tenfourfox/issues/96)); it became the default compiler in 10.4Fx 10.x, and later fully supported type inference. Methodjit support ended with Firefox 24.
* Versions from 24.0 ending with 38.0 used PPCBC, a PowerPC-specialized form of Baseline Compiler ([issue 224](/classilla/tenfourfox/issues/224), [issue 245](/classilla/tenfourfox/issues/245)). PPCBC introduced improved type guard code and used some components of the previous methodjit macroassembler for regular expressions (through the end of 31.x) and general code generation, but did not support the full IonMonkey compiler.
* Versions from 38.0 on use IonPower, a PowerPC-specialized form of IonMonkey ([issue 178](/classilla/tenfourfox/issues/178)). IonPower uses the PPCBC Baseline Compiler improvements and adds other PowerPC-specific performance modifications to `irregexp` and other compiler subsystems. It does not support `asm.js` due to concerns over its utility on big-endian platforms, but is able to run `asm.js` code in the regular compiler and supports all other features of IonMonkey.
* All text rendering in 10.4Fx uses Apple Type Services (ATS) and 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, may not have correct ligatures or glyph substitution or reordering depending on if HarfBuz can interpret AAT information encoded in the fonts that come standard with OS X. As a result, 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](/classilla/tenfourfox/issues/5).
Because of the underlying use of ATS for font instantiation and enumeration, certain fonts that may be otherwise compatible with CoreText are filtered using a built-in series of blocklists if they trip bugs in ATS. Starting in 38.0, the browser also implements a font directory cache of installed fonts for higher performance during enumeration.
* Bitmap-only fonts cannot be rendered by HarfBuzz. 17.0 and up filter them out and select a fallback.