Firefox suffers middle-aged bloat
It would appear that Firefox, that venerable browser that was the first one to give Microsoft a true kick in its complacency, is suffering from some middle-aged bloat.Â In a report by H-Online it's said that the open-source browser's code is now so large and complex that it can no longer be properly compiled for release.
The problem stems from a process called "Profile-Guided Optimisation" that is used, in two passes, to compile the code.Â In the first pass profile information about the browser's run-time behaviour is generated while the compilation is taking place.Â This "profile" data is then used to create an optimised browser in the second compilation pass.Â This process, which was adopted by Mozilla four years ago, improved the browser's performance by 10%.
Now though the 32-bit builds of Firefox, which are used by 90% of all Firefox users fail because the compiler software requires more than 3Gb of memory, which isn't supported by the 32-bit operating systems required to compile the code.
Seemingly the problem is caused by the specific compiler software Mozilla use with H-Online saying a move to Microsoft's Visual Studio 2010 would solve the problem while inevitably causing minor embarrassment for Mozilla.
Mozilla's engineers are discussing several options, one of which is to move some code from within the browser itself to external dynamic libraries.Â This however would only save around 300Kb.Â Another solution would be to find a way to compile the 32-bit version in a 64-bit host operating system (something that the move to Visual Studio would apparently solve).
This isn't the first time Mozilla has encountered a compiler memory problem.Â In early 2010 a 2Gb memory limit caused a similar problem.Â This was overcome however and there's no reason to assume it won't be overcome this time too.
We're not going to see Firefox go away, even for a short while, because of this problem.Â The browser will continue to be released on schedule, but Mozilla's engineers will need to find a new way to compile the code while keeping their operation completely open-source.Advertisement