The Pale Moon Project - Customly optimized and built Firefox browsers for Windows Operating Systems

Pale Moon: Technical Details

So, you want more details about the browser? I'll be more than happy to explain:


Features/disabled features

This browser aims to strike a balance between features and speed. As such, a choice has been made to consciously disable a few features that are not commonly used by the largest group of users. If you require any of the disabled features, then this browser is not for you! Please check the Firefox page to get an official build instead, in that case.

The Pale Moon browser has the following features:
  • Specifically optimized for current processors. It makes use of the enhanced instruction sets of newer CPUs - as a result, this browser will not run on particularly old systems.
  • Stability: experience fewer crashes
  • Support for Scalable Vector Graphics (SVG) and Canvas, both vector-based types of graphics.
  • Support for Firefox Extensions (add-ons) and Themes.
  • Support for Personas.
  • CSS Downloadable Font support (including WOFF).
  • HTML5, CSS3 and advanced DOM support.
  • 100% Firefox Sourced! This means you get the reliability and stability of the Firefox browser code, and the wide array of Firefox options and features.
  • Significant speed increases for scripting and page rendering compared to Firefox.
  • Uses a little less memory than the official builds because of the disabled features (listed below)
  • There have been multiple reports of certain web sites being displayed correctly in Pale Moon, that were problematic in Firefox - I have not been able to personally confirm this.
The following features have been disabled by design:
  • Accessibility features. Most people don't have a need for accessibility features. This cuts down some on the input complexity, and increases speed, but will, obviously, not be suitable for people who need these features.
  • Parental controls. Pale Moon aims to be a fast browser for general use, not a "secured family browser". The design impact of parental controls as introduced in Firefox 3.0 and later is significant, and has had serious implications for building the browser. As such, parental controls have been disabled.
  • A few miscellaneous things like the crashreporter, since they require server-side components that are not in place at palemoon.org.

Supported processors

The Pale Moon browser is specifically optimized for current processors and uses instructions exclusively available in more modern processors. This means it will not run on PCs that are particularly old by today's standards, and is likely to display errors or refuse to start on systems with unsupported or poorly supported CPUs.
Requirements for the regular Pale Moon browser are, in short: a 7th or later generation CPU with SSE2 support.
Since many people will not know off-hand what their CPU is capable of or what generation it is, here is a run-down of a number of popular CPUs and if they are supported. In case of doubt if your CPU is supported or not, please find a CPU information tool like CPU-z or Crystal CPU-ID to check your CPU's capacities.

The web installer will attempt to automatically detect your processor and offer the appropriate package(s) for download.

This table might be incomplete, or have errors:

Processor
Supported?
Version 3.x
Version 9.x
386 / 486 / Pentium / Pentium II
NO
NO
Pentium III
YES NO
Pentium IV
YES
YES
Pentium-M / Celeron-M
YES
YES
Pentium-D / Celeron-D
YES
YES
Celeron
Maybe, although likely.
Use a CPU info tool!
Maybe:
< 1.7 GHz not likely,
>= 1.7 GHz likely.
Use a CPU info tool!
AMD Athlon (1st generation) / Thunderbird
NO
NO
AMD Athlon XP/MP
YES NO
AMD Opteron / Athlon64 / Turion64
YES
YES
AMD Sempron
YES Maybe:
Socket 462: NO
Socket 754/939: YES
All multi-core processors:
Intel Core/C2D/C2Q/i3/i5/i7/etc.
AMD Athlon II X2/X3/X4/etc.
AMD Phenom/II etc.
YES
YES


Speed comparison

I have compared scripting speeds with some well-known speed tests to get some detailed specifications of Pale Moon versus Firefox.

Please note:
Pale Moon is globally optimized, and these tests only cover and compare part of the browser functionality. Similar performance increases can be expected for other parts of the browser, and will stack with the results shown here.

Version 3.5 and 3.6 showed an overall performance increase of about 25% over Mozilla builds.

New tests were performed for version 7.0.1. A brief summary of the results can be found below. The tests were performed on Windows XP SP2 on a 2.4 GHz (single core) machine.

For the purpose of these tests, the Firefox compatibility flag was disabled, so the tests could differentiate the two browsers (hence unknown or a number for the browser ID). For normal use, however, this flag is enabled by default to prevent websites checking on the useragent from throwing fits (and potentially breaking by presenting IE code or pages meant for mobile browsing) because Pale Moon is not known to the web page programmers.

1. Dromaeo/Sunspider

These tests show an even match between Firefox and Pale Moon, with some tests in favor of Firefox and some in favor of Pale Moon, but overall balancing out (a very small edge fore Pale Moon on average, but rather insignificant) which was to be expected. With the highly optimized Javascript JIT (Just-In-Time) compiler present in the Firefox source, any pure javascript functions will be about as fast as they can possibly be in either browser, and not influenced by browser-wide optimizations done.

This also means that other popular pure-JavaScript benchmark tests like Webkit Sunspider, Mozilla's Kraken benchmark, and similar, will most likely show no or hardly any significant differences between Firefox and Pale Moon


Firefox/7.0.1Pale Moon/7.0.1
Total Score:259.44runs/s ±1.34%261.64runs/s ±1.23%
3D Mesh Transformation383.13runs/s ±10.43%414.91runs/s ±3.74%
3D Raytrace152.17runs/s ±2.48%160.33runs/s ±3.35%
AES Encryption/Decryption169.61runs/s ±5.73%173.79runs/s ±5.00%
Arrays712.88runs/s ±2.33%739.84runs/s ±1.14%
Base 64 Encoding and Decoding851.59runs/s ±3.03%822.17runs/s ±4.39%
Bitwise And599.48runs/s ±0.35%1110.20runs/s ±0.50%
Code Evaluation622.45runs/s ±3.01%614.04runs/s ±3.54%
Compute Bits in Byte2690.60runs/s ±0.96%2675.60runs/s ±0.51%
Compute Bits in Byte (2)424.66runs/s ±0.10%378.82runs/s ±0.13%
DNA Sequence Alignment1018.29runs/s ±2.12%1006.30runs/s ±2.16%
DNA Sequence Counting189.94runs/s ±1.59%184.73runs/s ±4.03%
Date Formatting394.84runs/s ±2.91%408.76runs/s ±1.94%
Date Formatting (2)358.99runs/s ±0.70%379.58runs/s ±2.33%
DeltaBlue Constraint Solving377.10runs/s ±5.06%399.56runs/s ±6.81%
Fannkuch477.61runs/s ±1.15%486.31runs/s ±0.74%
MD5 Hashing1079.09runs/s ±0.88%1121.00runs/s ±0.73%
N-Body Rotation and Gravity405.49runs/s ±83.06%440.79runs/s ±88.66%
Partial Sum Calculation1051.60runs/s ±0.27%1242.80runs/s ±1.68%
Prime Number Computation165.10runs/s ±1.16%167.80runs/s ±1.39%
Prime Number Computation (2)651.54runs/s ±0.46%648.35runs/s ±2.91%
RSA Encryption/Decryption165.76runs/s ±1.82%161.51runs/s ±4.89%
RayTracer28.98runs/s ±4.28%28.51runs/s ±3.53%
Recursive Number Calculation914.71runs/s ±0.45%912.29runs/s ±0.46%
Regular Expressions75.67runs/s ±0.72%73.61runs/s ±0.50%
Richards Benchmarks1174.40runs/s ±0.57%1126.60runs/s ±0.66%
Rotating 3D Cube302.04runs/s ±6.35%314.03runs/s ±6.44%
SHA1 Hashing2498.60runs/s ±1.03%2530.40runs/s ±0.28%
Script Unpacking50.85runs/s ±6.18%51.45runs/s ±3.97%
Spectral Norm of a Matrix436.54runs/s ±0.74%380.42runs/s ±2.24%
String Parsing and Searching37.21runs/s ±1.44%37.42runs/s ±1.12%
Strings779.46runs/s ±1.85%788.33runs/s ±1.63%
Tag Cloud Creation260.54runs/s ±7.15%262.73runs/s ±3.66%
Traversing Binary Trees264.77runs/s ±0.80%270.40runs/s ±4.41%
Trigonometric Calculation695.80runs/s ±0.50%1014.00runs/s ±0.31%
Validate User Input242.84runs/s ±1.46%262.84runs/s ±3.72%
Total Score:259.44runs/s ±1.34%261.64runs/s ±1.23%

[Link to live results]

2. Dromaeo/DOM Core

DOM (Document Object Model) is the meat and potatoes of modern, dynamic web pages. Here, Pale Moon shows a clear pair of heels (+19.7%) on Firefox when dealing with these kinds of pages:


Firefox/7.0.1Pale Moon/7.0.1
Total Score:556.80runs/s ±2.17%666.26runs/s ±1.38%
DOM Attributes299.69runs/s ±3.69%362.77runs/s ±1.23%
DOM Modification146.75runs/s ±1.72%182.05runs/s ±2.12%
DOM Query5067.75runs/s ±1.87%6031.64runs/s ±1.42%
DOM Traversal108.91runs/s ±1.99%124.27runs/s ±0.89%
Total Score:556.80runs/s ±2.17%666.26runs/s ±1.38%

[link to live results]

3. Dromaeo/CSS selector engines

Putting it all together, using javascript, DOM, some widely used web interface libraries and queries. Once again, green across the board for Pale Moon (+24.2%), showing the potential for reading, processing and rendering complex, dynamic web pages quicker:


Firefox/7.0.1Pale Moon/7.0.1
Total Score:2627.30runs/s ±2.34%3263.42runs/s ±1.80%
DOM Query (Dojo)1837.18runs/s ±1.39%3096.10runs/s ±0.98%
DOM Query (ExtJS)6001.12runs/s ±2.70%6883.02runs/s ±2.65%
DOM Query (Mootools)2490.46runs/s ±2.19%2601.11runs/s ±2.10%
DOM Query (Prototype)1961.36runs/s ±1.43%3084.03runs/s ±0.75%
DOM Query (Yahoo UI)1983.21runs/s ±4.87%2162.63runs/s ±3.49%
DOM Query (jQuery)2988.95runs/s ±2.75%3252.94runs/s ±2.26%
Total Score:2627.30runs/s ±2.34%3263.42runs/s ±1.80%

[link to live results]

4. Peacekeeper

Another popular speed test with eye candy, Peacekeeper, also gives Pale Moon the upper hand in every aspect of the score created. This test is known to not be extremely reliable, however, since it also relies very much on the CPU speed, system load, graphics hardware and other system-specific parameters, but gives at least somewhat of an indication of rendering speed and some scripting functions.


Peacekeeper Firefox detailsPeacekeeper Pale Moon details

Important note: Unfortunately, synthetic tests are rather subjective and not a proper measure of overall browser performance and operation.

If you know of a good, unbiased, overall browser speed test to help me test other parts of the browser in a real-world situation, please use the feedback form to let me know and I can look into it. Note: I'm only interested in tests that are unbiased and actually test the browser, not heavily dependent on the hardware or testing only a small facet of browser operation. So far it's been mostly subjective reports, but consistent, that Pale Moon feels significantly faster and snappier when used, which is of course the main goal, since the browser is after all something you personally use, and you don't perform synthetic tests in your head to measure performance. That being said, getting some extra quantifiable data would be nice.


How different is this browser from Firefox?

The differences are small, but significant.

First off: the source code used for actual program functions to build Pale Moon is completely unmodified, this means that whatever functionality there is in the Firefox code, will also exist in Pale Moon, with the exception of the parts of Firefox that aren't included in Pale Moon.

Secondly:
The C runtime library used for core functions like memory management has been custom-compiled and optimized for speed. Initially, a stock set of libraries was used for Pale Moon (and for Mozilla Firefox). With the later versions, Mozilla started to make custom compilations of the runtime for memory management ("jemalloc"), and Pale Moon followed suit, and went one step further by extending its CPU optimizations also to this library.

Thirdly:
Some functions have been completely disabled to cut down on input complexity (accessibility, for one), unnecessary/unused code (multiple additional modules) and to remove ActiveX functionality, a technology that is specific to Internet Explorer only (ActiveX controls don't work in a stock Firefox). This also improves stability and speed.

Fourth:
Pale Moon comes with a number of different default configuration settings than Firefox. These basic "tweaks" are done to provide you with the smoothest browsing experience as well as to be considerate towards website/service providers (e.g. by reducing the number of http and dns requests needed when browsing).

Fifth: Some configuration changes were made to the user interface in later versions, to incorporate functionality and visual elements in different locations than what was chosen by the Mozilla team. In addition, the status bar has been retained, as well as a few other user-feedback related defaults. All of these changes are still user-configurable.

Last but not least:
a stock Firefox executable is built to run on, by today's standards, ancient hardware (are you still running a first generation Pentium processor? I wouldn't think so). The build environment used for Pale Moon allows for specific optimizations in the building process that actually uses the capabilities of the computer hardware it runs on (specifically: advanced processing instructions) and gears the machine code at the assembly level specifically towards certain generations of processors, as opposed to trying to compromise for different ways of working of old (read: museum-grade) hardware. This is the biggest contributor to the speed increase seen in Pale Moon, as it impacts everyaspect of the browser, from loading pages to drawing graphics and running scripts. Synthetic tests aren't able to test against every aspect of a browser, but optimizations here are cumulative - therefore, if you see an improvement in a browser benchmark, it is a partial picture and should be considered a lower limit of improvement. Comparable improvements will be present in parts of the browser that cannot be tested by such tests.

So, overall, the differences with Firefox are mostly due to build environment and configuration of the building process, and not because the actual core program code has been changed. Program-functionality-wise, for any part of the core except those parts that are specifically disabled (either explicitly or inherently) Pale Moon is exactly the same as a Mozilla Firefox browser. That being said though, the actual resulting program (executable machine code) is significantly different from a Mozilla-built Firefox executable.

Naming of the browser

So why not just call it "Optimized Firefox", you might think? Well, the answer to that is simple: Mozilla has a trademark on the name Firefox, the Firefox Logo and related "Firefox" or "Mozilla Firefox" names and images, and does not allow any but their own builds (and very select contributed builds) to carry the name or logo for anything but personal use (distribution of own builds carrying the Firefox name or logo is strictly prohibited). The reason for this is that Mozilla wants to keep strict control over what is called "Firefox" as they want to make sure it "meets quality standards" (interpret this at will, people).
Also, Firefox is the name for the complete package as supplied and intended by the Mozilla Corporation, which this browser deviates from by excluding certain features, having a different user interface (in v4 and later) and configuring the program differently.

Using the freedom of the MPL, I have therefore branded the browser Pale Moon, to clearly identify this browser as an individual product, not related to the Mozilla Corporation or official Firefox installations. Like Mozilla, I rely on all of the contributors to this Open Source project for the supplied program code and development of new versions. The Mozilla Corporation didn't program Firefox, the community did. This also means that, like Mozilla, I retain the rights to the Pale Moon project name, graphics and logo; they may not be used elsewhere without prior permission, and only in relation to this browser, and redistribution of the binary executable code is limited by a redstribution license.

How Pale Moon has been tested

Pale Moon builds are tested for stability before being released by having it used for day-to-day browsing. This includes but is not limited to:
  • Graphics heavy art sites
  • Static HTML sites with many elements
  • DHTML/CSS sites
  • SSL/heavy authentication sites
  • Flash sites
In addition, more rigorous testing is done by having the browser used in an autosurf setting, visiting a very wide range of pages from all over the world with greatly varying content. This is the kind of test where some other browsers tend to fall behind quickly in stability and robustness, and it is very much a real-world kind of test. Synthetic tests are OK to get some basic metrics, but in the end, people will use this browser to browse a wide variety of sites, and would prefer it not crashing, hogging all resources or slowing down to a speed similar to wading through a tarpit. Unorthodox way of testing, maybe, but certainly effective.

The Geek Corner

TMI (Too Much Information) for the average joe:
  • Build environment x86:
    • Hardware: IBM ThinkCentre A50p "black box", dedicated machine, 4GB RAM, 160GB SATA
    • Software: Windows XP Professional with 4GT tuning, MingW (Msys), Windows 7 SDK, DX SDK
  • Compiler x86:
    • MS Visual Studio 2005 SP1 (MSVC CL 8)
  • Build environment x64:
    • Hardware: Asus Athlon64, main workstation (separate partition), 2GB RAM (I really need a new PC...)
    • Software: Windows 7 64-bit, Windows 7 SDK 7.0A, DX SDK
  • Compiler x64: Visual Studio 2010 command-line x64 compiler. No PGO or jemalloc possible in this setup.
  • Optimizations: SSE2 architechture, fast floating point model for critical-path libraries, global speed-preference flags, intrinsic functions where possible. Some small variations of these could be possible depending on specific point release builds.
  • Profile Guided Optimization is used since 3.6.0.1 (except on x64) - even though this relies very heavily on the machine the browser is compiled on - which would generally not be a good measure for a browser that is used over a wide array of different systems - the overall performance increase when using a manually, carefully selected set of operations for application profiling resulted in a significant increase in performance. The downside is that I'm pushing my hardware doing this, as it is a lot more demanding on the system it's compiled on. I've had to move the compilation process to a separate machine than my own workstation. Hopefully, it will continue to serve me for a while yet, but compilation on it takes several hours at best.
  • x64 builds will have to be done on the main workstation, as the compile box is not capable of running a 64-bit host and cross-compiling Firefox is horribly broken (it simply doesn't work - the whole build process assumes that compiled tools from the source tree can also be run on the host system -- even when clearly cross-compiling for a different target and  precompiled binaries are already supplied in moz-tools). This also means that profiling cannot be done, and x64 builds will therefore not be built with PGO. Performance impact of this is significant but balanced out mostly by the advantages of running natively on a 64-bit O.S.
  • Source used: See FTP ftp://ftp.mozilla.org/pub/firefox/releases/[version]
    The edited version 5.0 source tree (7-zip packed, 52MB) can be downloaded via Ge.tt [here]
    The edited version 6.0 source tree (7-zip packed, 50MB) can be downloaded via Ge.tt [here]
    The edited version 7.0 source tree (7-zip packed, 51MB) can be downloaded via Ge.tt [here]
    The edited version 8.0 source tree (7-zip packed, 52MB) can be downloaded via Ge.tt [here]
    The edited version 9.0 source tree (7-zip packed, 54MB) can be downloaded via Ge.tt [here]
    The edited version 9.1 source tree (7-zip packed, 54MB) can be downloaded via Ge.tt [here]
    v 3.x: Source tree for 3.6.27 (7-zip packed, 38MB) can be downloaded via Ge.tt [here]
    v 4.x: Download changed source files (edits only)

Firefox, Mozilla Firefox and Mozilla are registered trademarks of the Mozilla Corporation.
Site and contents © 2009-2012 Moonchild Productions - All rights reserved
Pale Moon's distribution is subject to the following redistribution policy