Slashdot Mirror


Firefox Too Big To Link On 32-bit Windows

An anonymous reader writes "Firefox has gotten so large that it cannot be compiled with PGO on a 32-bit linker anymore, due to the virtual memory limitation of 3 GB. This problem had happened last year with 2 GB, which was worked around by adding a/3GB switch to the Windows build servers. Now the problem is back, and things aren't quite that simple anymore." This only affects the inbound branch, but from the looks of it new code is no longer being accepted until they can trim things from the build to make it work again. The long term solution is to build the 32-bit binaries on a 64-bit system.

131 of 753 comments (clear)

  1. Trying to do too much by bobcat7677 · · Score: 5, Insightful

    And this would be the point where the fact that the Firefox devs have been trying to do too much with a "browser" becomes beyond blatantly obvious. Firefox team: get your stuff together or you will die a slow death of attrition.

    1. Re:Trying to do too much by dn15 · · Score: 5, Funny

      And this would be the point where the fact that the Firefox devs have been trying to do too much with a "browser" becomes beyond blatantly obvious.

      Firefox is a great operating system, if only it included a decent browser :P

    2. Re:Trying to do too much by jlebar · · Score: 5, Informative

      Chrome doesn't even try to build with PGO, last time I checked.

      http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/533e94237691e2f6

    3. Re:Trying to do too much by Grizzley9 · · Score: 3, Interesting

      I'd already have switched to Chrome if not for FF's Live Bookmarks. Reading a bunch of different sites, multiple times a day it makes for an easy scan of story titles to see if anything is worth looking at. Otherwise I'd switched long ago and was sad Chrome didn't come with it. I don't want to manage a dedicated app.

    4. Re:Trying to do too much by maztuhblastah · · Score: 4, Informative

      An excellent takeaway from this article.

      Unfortunately, it's completely incorrect. TFA is talking about the build process on a 32-bit host, specifically that VS builds using profile-guided optimization require more memory than is available in the address space *DURING THE BUILD PROCESS*, not an issue encountered by the resulting binary.

      I know you want a chance to get in a quick dig at Firefox, but this isn't the article for that.

    5. Re:Trying to do too much by lpp · · Score: 5, Insightful

      I think it's still indicative of the problem GP mentions. The more code you are trying to pull in, the larger the footprint during the build process. You don't see a 'Hello world' program requiring a 3GB+ build footprint do you? No, because it's not doing enough to warrant that. Likewise, Firefox apparently *is* trying to do a lot. More than it used to at any rate.

    6. Re:Trying to do too much by Unoriginal_Nickname · · Score: 5, Insightful

      Thank you for posting this. Filling the virtual address space of the linker probably does indicate some problems with the Firefox source code - crazy big translation units, for example - but it doesn't imply anything about the size or quality of the resulting binary.

      I thought people on this site were supposed to know something about computers.

    7. Re:Trying to do too much by Anonymous Coward · · Score: 2, Insightful

      It's more an indication that compiler writers are taking advantage of the huge amount of memory available for optimization techniques that take a lot of RAM. This is actually a GOOD thing. The bad thing is if it takes RAM while it's running.

    8. Re:Trying to do too much by BZ · · Score: 5, Informative

      Define "too much"?

      It's been over a year since Chrome had to turn off PGO altogether and move to 64-bit builders even without PGO, because they ran into this same problem.

      So maybe your issue is with the fact that all "browsers" as you call them are trying to do too much? They should drop the fast graphics and jits and video and audio support and all that jazz, right?

    9. Re:Trying to do too much by BZ · · Score: 5, Insightful

      The "translation unit" involved here is the whole binary. We're talking about link-time code generation with profile-guided optimization, not regular compiles.

      So it doesn't indicate much of anything about the Firefox source code other than general overall quantity of code being compiled...

    10. Re:Trying to do too much by maztuhblastah · · Score: 5, Informative

      I think it's still indicative of the problem GP mentions. The more code you are trying to pull in, the larger the footprint during the build process. You don't see a 'Hello world' program requiring a 3GB+ build footprint do you? No, because it's not doing enough to warrant that. Likewise, Firefox apparently *is* trying to do a lot. More than it used to at any rate.

      Well you're right in that Firefox does need a hell rather large amount of RAM to build... but it's not just them; all browsers are trying to do a lot nowadays.

      Chrome doesn't exactly have light build requirements either. In fact, the Chromium project already seems to have dropped 32-bit build environments:

      A 64 bit OS is highly recommended as building on 32 bit OS is constantly becoming harder, is a lot slower and is not actively maintained.

      (From "Build Instructions (Windows) - Build Environment")

      That's why I think that the parent poster's implication that it's due to Firefox becoming "bloated" is basically hogwash. Browsers are more complex than they were in the mid-90s. That's what happens when you add 10+ years of new formats and technologies that must be supported for a browser to be considered "usable". Directing one's ire at Firefox is unwarranted, IMHO.

    11. Re:Trying to do too much by BZ · · Score: 5, Informative

      > And that is to make lots of parts be separately loaded
      > modules

      This actually leads to pretty serious performance penalties because of the way that web specs tend to interdepend on each other. It also loses you optimization opportunities.

      Pieces of functionality that are not interdependent with other stuff (e.g. audio and video backends, webgl) are in fact either in separate libraries or being moved there.

      For the other stuff, there did use to be more modules. It turned out that in practice most users needed them at startup (to show the browser itself and restore their tabs), so the only thing multiple modules got you was a slower startup and slower runtime code.

      It's not an accident that both Firefox and Chrome ship almost all their code in a single library (binary in the case of Chrome). It turns out that for web browsers specifically this works somewhat better than the alternatives.

      Oh, I just checked and looks like Opera also also links all its code into a single library, at least on Mac.

      And Safari links all the core WebKit code into a single library.

      Not sure what IE does nowadays, but last I checked mshtml.dll in fact included all the actual browser bits.

      Now it may be that all the people involved in all these projects can't design worth anything. Or maybe they did some measurements that you haven't done and found that this approach works better....

    12. Re:Trying to do too much by Tolkien · · Score: 5, Informative

      PGO = Profile Guided Optimization. It allows the optimizing compiler/linker to figure out for itself exactly what the critical execution path(s) of the program (the code that runs most frequently) is/are by requiring the user to execute the code with this special pgo-instrumentation of the compiled code as many times as required to cover typical use-cases, and optimize the code based around the execution paths taken. Profile guided optimization is a strictly optional step which can be used to improve program performance (potentially) more or better than the generalized optimizer (/Ox compiler option with MSVC) can. Fuck. Posting this is undoing my moderations. Oh well.

    13. Re:Trying to do too much by ceoyoyo · · Score: 3, Insightful

      Just because Chrome is bloated too doesn't mean Firefox isn't.

    14. Re:Trying to do too much by St.Creed · · Score: 3, Funny

      Don't worry, I've modded you up!

      Oh, wait...

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    15. Re:Trying to do too much by BZ · · Score: 2

      > Does it really need PGO to speed up a function call?

      Depends on how often it has to be called. PGO can in fact speed up function calls (e.g. by inlining; MSVC with PGO will inline virtual methods in many cases).

      > Or even if the display routines store up all links in a
      > page then send them to a history function which
      > returns all the ones that have been visited

      That doesn't work for handling dynamic style changes (which includes style recomputation on any mutation to the DOM). It might be OK for completely static pages, but those are very rare on the web today.

      > Of course, if such a small modification does make
      > a large performance hit, then you have to wonder
      > what the code paths are like.

      You don't have to wonder. The consistent thing with any style system related code is that it will get run a _lot_, because the number of times it's run is O(number of nodes * number of mutations * number of selectors on the page). Those numbers are typically order of "thousands", "thousands", and "thousands" for normal pages, and all three end up in the tens to hundreds of thousands for complicated pages. Browsers do what they can to avoid running this code when possible, but even then it's still very hot code.

    16. Re:Trying to do too much by BZ · · Score: 2

      The XUL user interface is written in JS and XUL, not C++, so isn't part of the library in question to start with.

      The extension infrastructure is almost all written in JS, so isn't part of the library either.

  2. The code gets larger, and yet things dissapear! by Anonymous Coward · · Score: 4, Funny

    E.g. where's the status bar in recent firefoxes?

    1. Re:The code gets larger, and yet things dissapear! by cruff · · Score: 5, Informative

      I immediately added the Status-4-Evar addon to my Firefox installations, works great.

    2. Re:The code gets larger, and yet things dissapear! by webmistressrachel · · Score: 5, Insightful

      If Seamonkey adopt this silly fade-in fade-out floating toolbar-as-status-bar-replacement, that'll be the end of the Mozilla line for me. Seamonkey has always been the sensible browser for Netscape-heads from way back when since Mozilla Suite died a death and SeaMonkey came into being.

      --
      This tagline was transcoded to result in at least one smirk. If you experience failure to smirk, please consult your Gen
    3. Re:The code gets larger, and yet things dissapear! by Cinder6 · · Score: 2

      What do you plan to use otherwise? Chrome does the same thing, so you're stuck with IE and Safari.

      Honestly, I cannot fathom what is preferential about an always-open status bar. For me, the status bar was always of such situational use that the first thing I did on a new browser install was disable it. Having it auto-hide is a much better choice. It's there when you need it (which is to say, rarely), and not there when you don't (which is to say, most of the time). I guess if you really want to see a progress bar for the page load, but then I think everybody should do what Safari does and combine that with the address bar.

      (This isn't a dig at you or anyone who is upset by the lack of a persistent status bar. I am genuinely curious about why it's such a sticking point.)

      --
      If you can't convince them, convict them.
    4. Re:The code gets larger, and yet things dissapear! by icebrain · · Score: 2

      My biggest use for the status bar is for verifying where links want to send me to (I don't allow sites to change the status text). It also helps me avoid opening blank tabs when I middle-click on links that turn out to have used javascript instead of a plain old URL (I mean, seariously, people... why the hell do you need f'ing javascript to make a simple link?) Taking that away entirely is a bad move from a security standpoint.

      Popovers are distracting and sometimes require delays to be visible. The status bar stays in one place and responds instantly.

      --
      The meek may inherit the earth, but the strong shall take the stars.
    5. Re:The code gets larger, and yet things dissapear! by GameboyRMH · · Score: 2

      The plugins that used to display info on the status bar now show it on the addon bar instead.

      --
      "When information is power, privacy is freedom" - Jah-Wren Ryel
    6. Re:The code gets larger, and yet things dissapear! by ceoyoyo · · Score: 4, Interesting

      The other day a coworker walked in to ask me what I use as my browser. I said Safari. He asked why not Chrome. I told him I had Chrome installed, and used it occasionally. I couldn't remember exactly why I prefer Safari, so I started both of them up. Safari was done launching in a couple of seconds, almost before I had time to click on Chrome. We continued our discussion of why I don't use Chrome while waiting for it to launch.

      Checking the .app size... Safari is 35 MB, Chrome is about a quarter of a gig.

    7. Re:The code gets larger, and yet things dissapear! by Cinder6 · · Score: 2

      What's interesting is Chrome used to be stupid fast at startup on a Mac. The dock icon wouldn't even bounce, it was so quick. But now it takes a couple bounces, even on my new Air. Safari is definitely the better choice on a Mac, but I do fall back to Chrome every now and then (sometimes I have issues streaming Nextflix in Safari, and I don't have that problem with Chrome).

      I would imagine, though, that many of the resources Safari uses are kept in other places than the .app package, because they are essential for the OS. Maybe that's (part of) why it's so much smaller than Chrome.

      --
      If you can't convince them, convict them.
    8. Re:The code gets larger, and yet things dissapear! by unrtst · · Score: 2

      Disclaimer: I haven't used the build that lacks the status bar yet, so I'm not familiar with how it looks/works.

      I can say I do want to see it all the time. I understand the steps that a browser goes through to get and render a page, and I greatly appreciate seeing what it's working on. Is it a DNS lookup, or is it transferring data (possibly a large chunk)? And also seeing the source (ex. when loading slashdot, I see the steps that are getting ads, which is often the slowest part of the transaction but, thankfully, happens after the page content has arrived and is rendering... so I know I can ignore the fact that the page hasn't finished loading if it's just getting ads now).

      I also have a complex DNS setup at home, so seeing when that is hanging helps a lot. (I forward DNS queries for several domains to one of several servers at work over multiple VPNs... they're non-standard (host.name.companyname without any .com etc), and the company consists of about 100 subsidiaries that have been bought up and barely merged over the years, and almost all of them have their own name server and/or AD system. Most users work in an office for one of the subsidiaries, so they just use that one local DNS server that's handed to them via DHCP. On the other hand, I'm a developer that works from home, so I have to use them all, and I also don't want my personal use queries hitting their servers, since this is also my personal computer).

      I dislike the way Chromes status bar works because it's too distracting. Our eyes pick up peripheral movement very very well, so that popover always grabs my eyes for an instant. It's annoying. I prefer a fixed bar, because I can then choose to look at it when I want, and the info is always readily available if I want to see it. The black text changing on a grey background does not cause as harsh of a visual change, so my eyes don't instantly pop there when it changes, and that's a good thing (IMO).

    9. Re:The code gets larger, and yet things dissapear! by vasi · · Score: 3, Informative

      Chrome has to ship its version of WebKit in the .app, while Safari puts its WebKit in /System . Comparing .app sizes is a rather unfair comparison.

      --
      "Hey, who took the cork off my lunch?" -- W. C. Fields
  3. interaction of two things by Trepidity · · Score: 5, Informative

    Size of the Firefox codebase is one factor of course, but the amount of RAM needed by Visual Studio to compile code with all optimizations turned on (especially PGO, which is extra RAM-intensive at the compilation stage) is also a major factor. Notice that this only happens in the 32-bit Visual Studio builds specifically.

    1. Re:interaction of two things by LanceUppercut · · Score: 3, Informative

      That's just doesn't make any sense. The amount of RAM is not a factor at all. The problem at hand is caused by the amount of _address_ _space_ required, not the amount of RAM. That's a completely different issue. I hope you understand the difference between the RAM and the address space. And the culprit is not VS or Microsoft compiler. The culprit is the rampant massive-scale global namespace pollution, which has been taking place in FF source code for quite a while. Someone was indulging recklessly in Linus-Torvalds-style coding practices. The result is perfectly logical.

    2. Re:interaction of two things by 3p1ph4ny · · Score: 4, Informative

      Sure, except that (especially in C++ code with templates) VS uses FAR less memory than the GNU toolchain when compiling the same code. This isn't a VS problem, it's a Firefox problem.

    3. Re:interaction of two things by tibit · · Score: 3, Interesting

      Nope. It is the MS linker problem. It's not about memory usage, it's about stupidly memmapping ALL of the input files during startup. So it's very simple to check if you may have a problem: add up the size of all the .obj files. If it's above 1-1.5G or so, it won't fit as linker needs address space for its own transient data and you need to boot with the /3g switch. If it's above 2G or so, then even the /3g switch won't help you -- you need a 64 bit host.

      --
      A successful API design takes a mixture of software design and pedagogy.
  4. Too big to link by Pope · · Score: 5, Funny

    Firefox devs requesting immediate RAM bailout.

    --
    It doesn't mean much now, it's built for the future.
    1. Re:Too big to link by TheGratefulNet · · Score: 5, Funny

      Occupy Swap Space, 2011!

      be there, or be nullified!

      --

      --
      "It is now safe to switch off your computer."
  5. Big deal by GameboyRMH · · Score: 5, Funny

    It takes 16GB to compile Android.

    --
    "When information is power, privacy is freedom" - Jah-Wren Ryel
    1. Re:Big deal by kikito · · Score: 2

      "You might as well compare apples with a car."

      Not a great analogy. Apple might release a car one day.

    2. Re:Big deal by geminidomino · · Score: 2

      Pretty sure the Prius has the Apple-fan car market buttoned up pretty well at this point.

    3. Re:Big deal by GameboyRMH · · Score: 4, Interesting

      Looks like they're having similar problems:

      https://code.google.com/p/chromium/issues/detail?id=21932

      --
      "When information is power, privacy is freedom" - Jah-Wren Ryel
    4. Re:Big deal by GameboyRMH · · Score: 4, Informative

      Oh, also, it looks like he was trying to say that compiling Chromium with PGO would use at least 9GB of RAM but he hit Shift too early

      --
      "When information is power, privacy is freedom" - Jah-Wren Ryel
    5. Re:Big deal by Cro+Magnon · · Score: 2

      Argh, I meant BIGGER than Windows!

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    6. Re:Big deal by Derek+Pomery · · Score: 2

      Specifically, GameboyRMH here is referring to comment #10
      https://code.google.com/p/chromium/issues/detail?id=21932#c10

      --
      -- perl -e'print pack"H*","6e656d6f406d38792e6f7267"' /. ate my old sig. Bastards.
  6. Re:Wow by MacTO · · Score: 3, Insightful

    Some of us actually think that using a web browser is more important than compiling a web browser.

    Seriously. My resource usage rarely goes about 1 GB with multiple applications open. These days, the hard drive is a far bigger bottle neck than RAM. Well, unless you're compiling Firefox it appears.

  7. Time to move on, perhaps? by pla · · Score: 2, Insightful

    The long term solution is to build the 32-bit binaries on a 64-bit system.

    No, the long-term solution involves freezing the 32-bit version as an eternal final-state "stable" branch, and moving on to the 64-bit world.

    Yes, most people still run 32-bit hardware. And yes, most likely someone would maintain 32-bit backports of FireFox for years to come. But the Mozilla foundation needs to direct their efforts on the reality of the present, not cripple themselves in the interests of backward compatibility.

    FWIW, I write this as someone who would primarily use that 32-bit backport at the moment. But I don't expect Mozilla to support my aging XP boxen any more than I expect them to support the Timex Sinclair 1000 or Atari ST I have stashed in the bottom of a closet somewhere.

    1. Re:Time to move on, perhaps? by Ephemeriis · · Score: 2

      Yes, most people still run 32-bit hardware.

      Pretty much anything purchased in the last few years is going to be 64-bit capable.

      If you're running 32-bit, it probably isn't the hardware holding you back. It's probably your software.

      I'm still having to reload machines with 32-bit Windows XP because we've got software that won't support anything else.

      --
      "Work is the curse of the drinking classes." -Oscar Wilde
    2. Re:Time to move on, perhaps? by ampathee · · Score: 2

      If "most people still run 32-bit hardware", then surely the "reality of the present" is that 32-bit builds are needed.

      If Mozilla abandons 32-bit builds, then whoever eventually steps up to maintain these unofficial 32-bit builds will have the same problem. And all the 32-bit users who go to getfirefox.com will get turned away to some random 3rd party site? I'm sure that will help firefox's popularity.

      As you say yourself, 32-bit Windows is far from obsolete. So it would be pretty retarded to just abandon the platform because of a build issue.

    3. Re:Time to move on, perhaps? by jlebar · · Score: 4, Informative

      No, the long-term solution involves freezing the 32-bit version as an eternal final-state "stable" branch, and moving on to the 64-bit world.

      Um.

      Some 90% of our users are on 32-bit Windows. Just because *you're* not one of them doesn't mean that they don't matter.

      It's nice that you don't expect us to support your aging XP boxes, but I think you'd find you're the minority in this respect.

      (Also, all phones are 32-bit, and will be for at least the next few years.)

    4. Re:Time to move on, perhaps? by pclminion · · Score: 2, Insightful

      No, the long-term solution involves freezing the 32-bit version as an eternal final-state "stable" branch, and moving on to the 64-bit world.

      Hahaha! Uh, no.

      1. The MSVC compiler is a 32-bit program. Sure, it can compile 64-bit code, but it is itself 32-bit, so using a 64-bit OS doesn't even help you. cl.exe is a 32-bit process. Always.

      2. All of Windows is compiled with that compiler. ALL OF WINDOWS. That means there is NOTHING in Windows that requires this much VM in order to build. So Firefox is more bloated than ANY component within Windows.

      Seriously, anybody with the slightest clue about how software works should realize that this is the symptom of some incredibly deep-rooted problems within the architecture of Firefox.

    5. Re:Time to move on, perhaps? by plover · · Score: 5, Informative

      No, you missed a fact.
      Visual Studio 2005 is a 32-bit app on any Windows platform.
      Visual Studio 2010 is a 32-bit app when running on a 32-bit platform.
      Mozilla builds on 32-bit platforms can no longer support the PGO linker.

      Visual Studio 2010 is a 64-bit app on a 64-bit platform.
      Mozilla builds on 64-bit platforms can PGO link just fine.
      When Visual Studio 64-bit compiles a 32-bit app, that app can run only on XP SP2 or later.
      Mozilla has millions of users on pre-XP SP2 platforms.

      So Mozilla has a choice: change nothing but stop PGO linking the 32-bit versions (sub-optimum for 32-bit users), go forward on a 64-bit only path and disenfranchise the old users from getting any new functions, abandon them completely (which is irresponsible in terms of security), cut back on new features for all, or take an axe to the existing code. Only one is an easy choice.

      --
      John
    6. Re:Time to move on, perhaps? by peppepz · · Score: 3, Informative

      Or of Google Chrome, which hits exactly the very same problem.

    7. Re:Time to move on, perhaps? by compro01 · · Score: 2

      Atom processors are 32-bit... and they are netbooks, mostly.

      Netbook Atoms have been 64-bit since late 2008. Everything except the original diamondville single core does 64-bit.

      The only current atoms that don't do 64-bit are the ultra-low-power Z series, which are for UMPCs and tablets.

      --
      upon the advice of my lawyer, i have no sig at this time
    8. Re:Time to move on, perhaps? by dreemernj · · Score: 3, Insightful

      Possibly not. But part of the reason is that it is not possible to set 64-bit IE9 as the default browser on Windows Vista or 7.

      That, and no official releases of 64bit Firefox, Chrome, (Safari?) or Opera for Windows. So it's really a team effort to keep 64bit browsing off Windows.

      --
      1 (short ton / firkin) = 89.1432354 slugs / keg
    9. Re:Time to move on, perhaps? by Mashiki · · Score: 2

      That's 90% of your users. Though steam says that nearly 45% of their users are using a 64bit OS, and it's increasing at a rate of 1% a month.

      --
      Om, nomnomnom...
    10. Re:Time to move on, perhaps? by X0563511 · · Score: 2

      Special.

      Third choice: not using a broken toolchain.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    11. Re:Time to move on, perhaps? by jlebar · · Score: 5, Informative

      I am a Mozilla guy.

      There's an official 64-bit version for Linux. We've been shipping that since before I can remember. There are also nightly builds for 64-bit Windows, but we're not shipping these even as Aurora at the moment.

      64-bit Linux isn't listed on most of our download pages. I'd argue it should be there, but I'm not in charge. :)

      Anyway, here are links to get all the builds we produce:

      Nightly builds: http://nightly.mozilla.org/ (has win-64 builds)
      Aurora builds: http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-aurora/
      Beta builds: http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/9.0b6-candidates/build1/ (I don't know the directory for the latest beta build, unfortunately, so you'll have to update this URL each time you go looking.)
      Release builds: http://releases.mozilla.org/pub/mozilla.org/firefox/releases/latest/

    12. Re:Time to move on, perhaps? by caseih · · Score: 3, Insightful

      If you say so, but if MS used PGO for things like MS Office, IE, or even the windows explorer shell I'm sure they'd quickly run out of RAM as well.

      So no, Firefox is not more bloated than "*ANY* component within Windows."

      Seriously, anyone with the "slightest clue" about what the article is talking about would understand that this issue is not about "deep-rooted problems" in Firefox. And as the other poster mentions, MS knows about this problem and now has 64-bit binaries of the compiler and linker now so this is less a problem. However it only addresses the issue for 64-bit apps; the 64-bit binaries don't appear capable of compiling and linking 32-bit apps, if I read this correctly.

    13. Re:Time to move on, perhaps? by spongman · · Score: 3, Informative

      The MSVC compiler is a 32-bit program

      NO:

      C:\vs10\VC\bin\amd64>link /dump /headers link.exe
      Microsoft (R) COFF/PE Dumper Version 10.00.40219.01
      Copyright (C) Microsoft Corporation. All rights reserved.

      Dump of file link.exe

      PE signature found

      File Type: EXECUTABLE IMAGE

      FILE HEADER VALUES
                              8664 machine (x64)

  8. Last paragraph in the TFA is... confusing by HellKnite · · Score: 3, Insightful

    "First tests indicate that, for example, moving parts of the WebGL implementation to one side could save 300 KB. In a test run, the newer version of Visual Studio required less memory than the one that was previously used, and 64-bit Windows offers 4 GB of address space."

    So, first of all, saving 300KB on WebGL seems like a pittance. Then, there's what appears to be the blatantly incorrect statement of 64-bit windows offering 4GB of address space - shouldn't that be way bigger, or am I stupid?

    1. Re:Last paragraph in the TFA is... confusing by DeathFromSomewhere · · Score: 4, Informative

      An individual 32 bit process (IE the visual studio linker) is limited to 4GB of addressable memory.

      http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#memory_limits

      --
      -1 overrated isn't the same thing as "I disagree".
    2. Re:Last paragraph in the TFA is... confusing by EvanED · · Score: 5, Informative

      Also MSVC only has 32-bit binaries

      Clarification: the only linker for 32-bit targets is, itself, 32-bits.

      The linker which targets 64-bit Windows is still 64 bits. If they had a 64-bit-to-32-bit cross compiler (they have the reverse, but not 64-to-32) that would solve Mozilla's problem. (Well, for some definition of "their problem.")

    3. Re:Last paragraph in the TFA is... confusing by Fred+Or+Alive · · Score: 4, Informative

      32 bit programmes (with the large address aware flag set) get 4GB of address space on 64 bit Windows, compared to 2GB / 3GB on 32 bit Windows.

      --
      10 PRINT "LOOK AROUND YOU ";
      20 GOTO 10
    4. Re:Last paragraph in the TFA is... confusing by Nethemas+the+Great · · Score: 3, Informative

      Actually, 4GB of address space on a 64bit Windows is correct with respect to Visual Studio and more specifically the linker since it is only 32bit. Microsoft--even with the crippled (for C++) Visual Studio 2010--has never released a 64bit version.

      --
      Two of my imaginary friends reproduced once ... with negative results.
  9. Bloat by ElmoGonzo · · Score: 2

    Sheesh. I can remember when we had to keep the size of the completed application small enough to fit on a 360K bootable floppy.

  10. Re:Wow by Anonymous Coward · · Score: 5, Funny

    He was just trying to say that 1080p gives him a big endian.

  11. Re:whose bloat by Anonymous Coward · · Score: 3, Insightful

    No, no it doesn't, but I'm impressed, turning this against MS instead of complaining about the real culprit, kudos.

  12. Re:Are you serious? by masternerdguy · · Score: 5, Funny

    I guess that America's obesity problem has extended to software.

    --
    To offset political mods, replace Flamebait with Insightful.
  13. Re:whose bloat by EvanED · · Score: 5, Informative

    Speaking of someone who regularly does large C++ builds, MSVS is nowhere near a bad culprit here. The linker is essentially doing code generation -- link time optimization. Why? Because LTO gives a substantial performance benefit. The profile-guided optimization mentioned in the summary gets them about 10% over even doing non-profile-guided LTO.

    One project I've worked on has single files which cause GCC to take over 6 GB to compile when you compile with -O2. Who's bloated now?

    (Takeaway: broadly speaking, MSVS is actually very competitive, at least compared with GCC, when comparing similar settings.)

  14. I don't understand the issue by msobkow · · Score: 5, Insightful

    It sounds like a build-tool chain problem, not an issue with the eventual binary produced for Firefox.

    Why not just run the 64-bit tools on a 64-bit platform and have them output 32-bit code, the same as can be done by virtually any cross-platform compiler system. I can't imagine worrying about the fact that I can't run the builds on an outdated 32-bit OS as long as I can produce the binaries for such platforms.

    I shudder to think what it would have been like to develop for some of the military communications systems I worked on for my first job if we had to run the compilers on that pathetically slow mil-spec Sperry AN-UYK system (magnetic core memory -- talk about slowing down the CPU! But it's radiation hard!) We only tested on the Sperry -- all builds and editing were done on a VAX.

    In modern terms, could you imagine having to run your editors and compilers on an iDevice instead of OS/X?

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:I don't understand the issue by tepples · · Score: 2

      In modern terms, could you imagine having to run your editors and compilers on an iDevice instead of OS/X?

      That depends on how long Apple will continue to sell the MacBook Air instead of replacing it with a high-end iPad, but the purported death of the PC is another topic for another day.

    2. Re:I don't understand the issue by BZ · · Score: 2

      > Why not just run the 64-bit tools on a
      > 64-bit platform

      There is no 64-bit version of the MSVC linker, and no plans for one according to public statements from Microsoft.

      One can run the 32-bit linker on a 64-bit Windows, which gives you 4GB of address space to play with. That's the medium-term solution for Mozilla, but it does require updating the entire Windows build farm to 64-bit Windows and shaking out any compat issues that result. Doable, but will take a few weeks probably.

    3. Re:I don't understand the issue by EvanED · · Score: 5, Informative

      There is no 64-bit version of the MSVC linker

      Clarification (I've posted this a few times): there's no 64-bit version of MSVC that targets 32 bits. There is a 64-bit version which targets 64 bits, but that doesn't help the current situation.

  15. Re:Well done by Anonymous Coward · · Score: 2, Insightful

    There's something seriously wrong when a browser hits a 3GB linker limit.
    Imho, the only sane solution is to delete most of the code. It's been crap for years anyway.

    Did you ever try compiling Chromium before you made that statement?

  16. Re:whose bloat by tepples · · Score: 5, Interesting

    You're right. As anyone who's read C++ FQA by Yossi Kreinin might guess, C++ itself could be one of the culprits.

  17. The problem is VS's PGO architecture by jlebar · · Score: 5, Informative

    Summary should read: Visual Studio is too teh suck to link Firefox on Windows with PGO.

    Firefox links just fine with VS, if you don't use PGO. The problem is that Visual Studio's PGO routine loads all our object files in at once, then uses a ton of memory on top of that. And the linker for 32-bit programs is itself a 32-bit program; if there were a 64-bit x86-32 linker, we wouldn't have this problem. But so far, Microsoft has not given any indication that they will release a 64-bit to x86-32 cross-compiler.

    Note that Chrome doesn't build with PGO at all, last time I checked.

    http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/533e94237691e2f6

    Note: Visual Studio 2010 seems to help a bit, but not much. We use VS 2005 because it's the last version whose CRT supports Windows 2000 and Windows XP before Service Pack 2.

    1. Re:The problem is VS's PGO architecture by thsths · · Score: 2

      > We use VS 2005 because it's the last version whose CRT supports Windows 2000 and Windows XP before Service Pack 2.

      That's all very nice, but if you run an obsolete and out of support OS, why would you want to run the latest browser? Those users should be more than happy with Firefox 3.6.

    2. Re:The problem is VS's PGO architecture by askldjd · · Score: 5, Informative

      Parent is right. The software product I work on also used PGO at one point. Our software is roughly 2-3 million lines of C++ code, and links with 40-50 external libraries. Under Window XP, VS2008 could not link our product with PGO turned on. Before you complain about the bloat of FF, please understand that PGO uses many many times more memory than just compiling a regular release build. This is a Visual Studio linker problem, not FF problem.

  18. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  19. Re:whose bloat by kikito · · Score: 2

    "One project I've worked on has single files which cause GCC to take over 6 GB to compile when you compile with -O2. Who's bloated now?"

    emm ... those single project files?

  20. Re:VS 2005? by Tridus · · Score: 5, Insightful

    Seems ironic that the FF team is using stuff from seven years and two major versions ago while at the same time bemoaning that anybody might want to keep a version of Firefox for more then 6 weeks - especially enterprise users.

    Interesting how they don't practice what they preach.

    --
    -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
  21. Re:VS 2005? by luserSPAZ · · Score: 2

    Nope, the issue is still present in Visual C++ 2010. We're planning on switching to that soon, but we either have to work around its lack of support for Windows 2000 / Windows XP pre-SP2, or declare those platforms (and a few million users) unsupported.

  22. Compare Chrome. Is it a plug-in, app, or OS? by tepples · · Score: 4, Informative

    Let's guess Firefox for Windows is about the size of Google Chrome for Windows because it does about as much. But an HTML5 browser almost has to be an operating system by itself, containing a GUI layout engine (for CSS), a JIT-compiling virtual machine (for JavaScript), a window manager (tabbed document interface), a memory manager (RAM and disk caches), and a task scheduler (for scripts in one tab and scripts in another tab). Is Chrome a plug-in, a single application, or an operating system?

  23. Re:whose bloat by ohnocitizen · · Score: 5, Funny

    I don't know if the blame is so easy to place. It is kind of like watching one fat guy explain to another why they can't sit on the same bench.

  24. Not FF's fault by Anonymous Coward · · Score: 4, Informative

    The software product I work on also used PGO at one point. Our software is roughly 2-3 million lines of C++ code, and links with 40-50 external libraries. Under Window XP, VS2008 could not link our product with PGO turned on.

    Before you complain about the bloat of FF, please understand that PGO uses many many times more memory than just compiling a regular release build. This is a Visual Studio linker problem, not FF problem.

  25. Re:whose bloat by luserSPAZ · · Score: 2, Interesting

    Yes, but you can get a 32->64 cross-GCC toolchain easily. You can't get one of those from Microsoft, so you're stuck with a maximum of 4GB of address space if you run the 32-bit toolchain on a 64-bit Windows system.

  26. I still play 8-bit video games by tepples · · Score: 2

    I still play 8-bit video games, and the memory card adapter I use to play them has an 8-bit OS.

  27. Re:VS 2005? by ledow · · Score: 2

    What, exactly, would be wrong with just using gcc for all platforms, like an awful lot of projects do? What's VC++ doing for Firefox that can't be done any other way?

  28. Old timer chimes in by Okian+Warrior · · Score: 4, Insightful

    Back in my day we didn't have gigabyte memory and disk space was at a premium.

    It might seem a bit strange now, but back in the good 'ol days we used to have to break up a project into separate components, just in order to compile it!

    This is where your interface and API design skills came in handy. If you could partition some piece of the project off into it's own DLL, you could effectively break up the project into smaller pieces that could be individually compiled.

    That's where the name DLL came from originally: "Dynamic link library". You didn't need to have all the code read into memory when you first executed the application - less commonly used features wouldn't get loaded until they were actually asked for.

    It's not like it is nowadays, where you actually need all the code to be available all the time. "Rich user experience" they call it.

    I suppose it's just the future overtakin' us. Them good old days is gone forever.

    1. Re:Old timer chimes in by jlebar · · Score: 4, Informative

      It might seem a bit strange now, but back in the good 'ol days we used to have to break up a project into separate components, just in order to compile it!

      Yep, we used to do this. Then we merged them together, because it greatly improves the startup speed of Firefox.

      We have a lot of smart people working on this stuff, believe it or not.

    2. Re:Old timer chimes in by steelfood · · Score: 2

      I suppose it's just the future overtakin' us.

      No, it's just waste due to an overabundance of resources. It happens all the time, whenever and wherever the amount of resources effectively becomes unlimited.

      Back in the day, people hand-optimized assembly to squeeze as much program as they could into the memory they were given. Now, people run it through a compiler with some optimization switches and call it a day.

      While there's nothing wrong with the latter, the skill required to do the former is both lost, and made irrelevant because the resources "saved" is not worth the time investment needed to do the optimizations. By the same way of thinking, an overabundance of any resource produces the same result.

      --
      "If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
  29. Re:Wow by phantomfive · · Score: 2

    there aren't any other than Acrobat that support layers that can be turned on or off at runtime (which have been supported by Adobe Acrobat since, I believe, v6 or so).

    Why would you want to do that? I've never seen this feature used (I'm not saying it doesn't have a use, just that I can't conceive of one).

    --
    "First they came for the slanderers and i said nothing."
  30. Re:whose bloat by Talderas · · Score: 5, Funny

    Can we turn this into a competitive sport? Please?

    --
    "Lack of speed can be overcome. In the worst case by patience." --Znork
  31. Re:Oh, now we admit it is getting bloated by PsychoSlashDot · · Score: 5, Insightful

    Requirements to run Firefox and resources required to compile Firefox aren't the same thing at all. Your attempt to conflate the two suggests you're stupid and don't know what you're talking about.

    I'd say it nicer but then I'd risk not hitting +5 Funny.

    --
    "Oh no... he found the .sig setting."
  32. Re:Wow by plover · · Score: 5, Insightful

    No, it has nothing to do with running Firefox. It has everything to do with running Visual Studio's linker.

    This matters only to Firefox developers.

    Not that they shouldn't care, mind you, as that is some seriously monolithic code. But it won't make any difference to Joe Sixpack.

    --
    John
  33. Re:whose bloat by EvanED · · Score: 3, Insightful

    Templates out the wazoo. Don't blame me, I didn't design it. (Or write most of it; I'm only tangentially related nowadays.)

    Point being, there are features which, while valuable, are costly. I blame our source, our fondness of templates, and the compilation consequences that templates almost necessitate way more than I blame GCC for having a poor implementation of templates.

    But similarly, going "stupid bloaty MSVC, it shouldn't support this feature which can give double-digit percentage speedup because it takes a lot of memory" is stupid. LTO is costly -- period. It's just very worth it.

  34. Re:Wow by Anonymous Coward · · Score: 2, Informative

    Old gripe about window-to-the-whole-world is old. And we're talking about builds, not in-use resource consumption... where it behaves just like every other browser.

  35. Re:VS 2005? by pz · · Score: 4, Interesting

    I can't speak to Firefox specifically, but in my hands, for my project, VC++ produces code that is VASTLY superior to gcc. With gcc, I can often get significant speedup by hand-optimizing code; with VC++, my bog-simple code gets automatically optimized better than my most aggressive manual efforts. Like it or not, Microsoft has the currently best compiler.

    --

    Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
  36. Re:VS 2005? by jlebar · · Score: 5, Informative

    Point taken.

    But FYI: We use VS2005 because it's the last version whose CRT supports Windows XP before SP2 and Windows 2000.

    We would love to upgrade, and are in fact devoting a lot of engineering time towards figuring out if we can upgrade while maintaining compatibility.

  37. Its the compiler, stupid. by DrYak · · Score: 5, Informative

    Or just, yknow, stop running a bloated resource hog of an INTERNET BROWSER.

    Read TFA agin. Oh, I know this is /.
    So read the summary again.

    it cannot be compiled with PGO on a 32-bit linker anymore, due to the virtual memory limitation of 3 GB

    It is the compiler which is having ressource problems. The profile-guided optimiser needs more than 3GB to be able to do its optimisations. And apparently, the Windows its running on can't do PAE to use more than 3GB neither.

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
    1. Re:Its the compiler, stupid. by cjb909 · · Score: 5, Informative

      It is the compiler which is having ressource problems. The profile-guided optimiser needs more than 3GB to be able to do its optimisations. And apparently, the Windows its running on can't do PAE to use more than 3GB neither.

      PAE allows 32-Bit computers to use more than 4GB of ram, but it doesn't allow Windows to assign more than 3GB to any single process.

    2. Re:Its the compiler, stupid. by petermgreen · · Score: 2

      More specifically windows requires non-overlapping kernel and user address spaces. So does a regular linux kernel.

      There were patches for linux ( http://lwn.net/Articles/39283/ ) that implemented a "4G/4G" system with independent user and kernel address spaces but afaict interest in them was largely lost as most newer systems became x64 capable . I doubt anything similar exists for windows.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  38. Re:Wow by peppepz · · Score: 4, Insightful

    And how is this connected to the amount of memory required to link Firefox?

  39. That's doubly insane! by aglider · · Score: 2

    It's insane that a compiler, any compiler, needs 3+GB to "just" link a whatever big number of object files into an executable.
    It's insane that a single piece of software cannot be linked in a 32bit environment. That is, a Windows32 environment, as it can be linked into a 32bit Linux environment.
    How much insanity nowadays!

    --
    Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
  40. Re:VS 2005? by ledow · · Score: 3, Interesting

    Then I find that more worrying than anything. The firefox code is literally so bad that not only do they have to do profile-guided optimisation but must have an optimal compiler with all the options turned up in order to get it to run like the stunned sloth that it does on my systems?

    It just reeks of horrendous code. Makes me wonder what the hell all those other large open-source projects are doing that's so much better than the Firefox code that they can outperform it using "only" the sub-optimal gcc.

  41. Re:No PAE?! by cjb909 · · Score: 3, Insightful

    You mean some people still run a 32-bit OS?

    Not only that, but apparently Windows cannot use PAE - Physical Address Extension to address more than 4GB (according to the WP entry, PAE is supported, but the 4GB limit is still enforced - due to some obscure licensing problems).

    The problem is with virtual memory. A process still uses 32bit memory addresses to reference memory. This means that a process can still only address 4GB of memory. If you were to use more than 32bit memory addresses to get more memory, suddenly you aren't a 32-bit OS anymore.

    PAE only helps the OS be able to manage more than 4GB of memory.

  42. Re:Wow by mingot · · Score: 4, Funny

    He was gonna answer that question but he took and arrow to the knee.

  43. Re:Wow by GuldKalle · · Score: 2

    People keep saying stuff like this, but in my experience it's just not true. Right now I'm clocking Firefox at 596,900 kB commit + 75,000 kB for the plugin-container.
    I have never seen it above 1 GB, although I've only sampled maybe once/month.
    Are you using another measuring technique than I, or are you just trolling?

    --
    What?
  44. Re:Wow by Jahf · · Score: 2

    This isn't about RUNNING Firefox, but compiling/linking it. I guarantee Skyrim takes more than 500GB under that context.

    However, yes, Firefox has become exceedingly bloated.

    --
    It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
  45. Too funny reading these comments by caseih · · Score: 5, Insightful

    Folks are crawling all over each other to show how ignorant they are. "I ditched firefox for Chrome cause it's lighter!" only to ignore the fact that Chrome also has the same problem with the PGO thing running out of RAM so they don't even bother with trying those optimizations anymore. "Geez Firefox needs more RAM than the kernel to compile? Something's wrong!" Yes if the Linux kernel was built with PGO on VS 32-bit it probably would run out of RAM there too. Then there's the guy that claims this PGO problem is evidence that the Firefox devs need to go back to remedial school. I'm sure he could do it far better (and avoid the PGO linking optimization running out of memory too!).

    Hilarious reading. At least I choose to laugh rather than cry at people's inability to read and understand the issues here.

    1. Re:Too funny reading these comments by ledow · · Score: 3, Interesting

      I think you miss the subtext that some of us have. If you HAVE to enable PGO in order to get a decent speed out of your binary in the first place (and that's the ONLY way you think you get that increase), then your code isn't that great in the first place (i.e. you are using lots of inefficient methods on the most-used paths of your code).

      The problem isn't DIRECTLY related to the size/quality of the codebase but the fact that they don't even CONSIDER turning off PGO because of the performance drop means they have no idea how to tune the underlying code without using PGO (and PGO-optimised code will NOT necessarily result in the best possible code for any particular user at all!)

  46. Re:Linux PAE by EvanED · · Score: 3, Informative

    You need to go re-read your source on PAE (or tell them to reread their source).

    PAE does not increase the memory space available to a single process, so your statement that "So GCC *could* use 6GB on a 32bits machine" is absolutely false. What PAE allows is multiple processes to, in total, take more than 4 GB. (So you could have a 32-bit machine with 6 GB of RAM and have, e.g., two GCC processes, each taking 3 GB with no paging.)

  47. Re:VS 2005? by DigitAl56K · · Score: 4, Informative

    One of the biggest problems with newer versions is the runtimes using EncodePointer/DecodePointer, which aren't available pre-SP2.

    Try this:
    * Install VS2010
    * In your project configuration(s), under Configuration Properties->General, set "Platform Toolset" to "v90".

    I can use this configuration with VS2010 and the latest Windows SDK and get binaries that work on XP pre-SP2.

  48. Re:Eg? by BZ · · Score: 4, Insightful

    > 1) What the hell are you doing with your code to be
    > that large?

    How large? It's a few million lines of C++ code, just like every other browser. What it's doing is implementing all the stuff people want to do on the web.

    > 2) What the fuck is your linker doing to do that?

    Please read up on link-time code generation.

    > 3) Why the hell didn't you see this coming and
    > prune LONG before you hit the 3Gb limit if you
    > already hit the 2Gb limit once already?

    This is an excellent question that I too am asking.

    > 4) What's the problem with compiling on 64-bit
    > computers only,

    None, except updating a large build farm from 32-bit to 64-bit can't happen overnight. Needs some staging, testing, etc.

    > You're honestly telling me that Firefox is more
    > complicated and needs more memory to compile
    > than, say, LibreOffice?

    Have you tried to compile LibreOffice with LTO and PGO turned on?

    > The Linux kernel?

    Quite possibly. The kernel is C, not C++; C++ is a lot more of a pain for compilers to deal with.

    The whole point of LTO is that you optimize your entire binary as a single object, no matter how your code is structured. It requires more memory, but can produce faster code because the compiler is able to make optimizations it can't make otherwise.

    Whether that's "crappy" is a matter of your priorities, of course. 10-25% performance improvement tends to be a high priority for web browsers, though perhaps not for KDE or LibreOffice.

  49. Re:No PAE?! by petermgreen · · Score: 4, Informative

    Not only that, but apparently Windows cannot use PAE - Physical Address Extension [wikipedia.org] to address more than 4GB

    Sure it can, you just have to either pay for a server edition or hack the restriction out of the kernel.

    But more physical address space doesn't help here, the problem here is virtual address space for running an effective but memory hungry profile guided whole program optimisation process. Nromally 32-bit windows has a maximum of 2GB virtual memory per process (and this is one big process we are dealing with). This can be increased to 3GB at the cost of reducing the kernel address space to 1GB.

    Going to a 64-bit OS (which allows 4GB of virtual address space for 32-bit processes) will buy them a little bit of time but it's not a long term soloution. Really they need a 64 to 32 cross toolchain (which according to other posts here MS do not offer) if they want to keep using profile guided optimisation as the codebase grows.

    --
    note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  50. Re:Wow by Anonymous Coward · · Score: 2, Insightful

    Even more unfortunate that 3/4 of the whole discussion will be "Re: Wow" as everybody dogpiles unrelated replies onto the frist post, because we all know that for mod points, it's not what you post but where you post it.

  51. Re:Wow by Aighearach · · Score: 2

    Why would you choose slackware and then seek technical help? Are you sure you're their target user?

  52. Re:Wow by BatGnat · · Score: 3, Funny

    You insensitive clod, I only have a 286 with 640kb, they told me I didn't need any more than that!

  53. Size of build != Size of executable by pslam · · Score: 2

    This is basic stuff to anyone who actually maintains a build, but Slashdot hasn't been a forum mostly populated by engineers for a number of years, now.

    This appears to be due to link-time optimization blowing up the resident memory size of the linker, taking it past 3GB (which is already a non-standard hack the 32 bit build has had to do). Firefox is large, yes, but this has nothing to do with the final binary - which appears to be about 100MB total including all libraries in the Aurora builds.

    I used to routinely run out of 32 bit address space compiling executables for a 64MB embedded ARM platform. This was due to symbol bloat, not executable size (which was 8MB). I also ran out of space compiling for a DSP with 288KB of RAM and 1MB flash, but that was mostly piss poor tools (Tasking). In fact, doesn't Chrome and even the Android sources already require building on a 64 bit host?

    1. Re:Size of build != Size of executable by dreemernj · · Score: 2

      I think Android requires 64 bit. I think Chromium highly suggests 64 bit and it won't work with PGO. And those optimizations are where the FF devs are hitting the wall.

      I'm surprised FF could still build with PGO on 32bit Windows with the 3gb switch. It seems like the project is large enough and complicated enough that it should have had problems with this a while ago. I can only guess they've modularized the code quite a bit already to try and fight it.

      At least they can still use this toolchain on 64bit Windows and get 4gb of address space there. It should buy them some time. Hopefully, they'll get some breathing room and hold out until 64bit browsers for Windows are more common. The 64bit FF nightlies seem very quick and stable to me. I am looking forward to an official release of them. And, maybe after that, Windows will get 64bit Chrome and Opera as well.

      --
      1 (short ton / firkin) = 89.1432354 slugs / keg
  54. Re:Wow by sexconker · · Score: 2

    Blame MS.

    The sane option for windows from vista on would have been to deny users the choice and install a 64bit os if the hardware supports it.

    Personally I have run 64 bit since xp, although you can only call that a test, vista 64 was ready for all.

    Yes I know, the 1 in 16384 people that insist on having some old POC device. Well they can keep an old machine around for it if it is that important.

    The better option would have been to deny users the choice and only offer 64-bit builds of Vista and 7.
    "But it doesn't work with my 14 year old scanner!!!" Then keep using Windows XP?

    There were already growing pains with Vista (shitty GPU drivers from AMD and Nvidia, a new audio framework, and users not being administrator by default), so it would have been the perfect time to force everyone to move to x64. They couldn't force people to switch with 7 because they wanted to get people off of Vista ASAP (even though Vista itself was fine). Oh well, hindsight is 20/20 and what not.

    It would be cool if there was a solution to properly handle a 32-bit driver in a 64-bit host environment, but there isn't. (Is there? Even if you use a 32-bit VM on a 64-bit host, you can't do shit.)

  55. Re:VS 2005? by jlebar · · Score: 3, Informative

    I think what he was trying to say -- in the meanest possible way -- is that the setting you chose tells VS to use the old compiler and linker. It doesn't switch out the CRT -- it switches out the whole toolchain. So using that setting is no different from where we are now, afaik.

  56. Re:Wow by icebraining · · Score: 2

    Iceweasel, 35 tabs open, 1 week uptime, 352MB of resident memory ;)

  57. Re:I know I'm pointing out the obvious here... by DeathFromSomewhere · · Score: 2

    Damn kids and their PGO giving double digit perf increases! Get off my lawn!

    --
    -1 overrated isn't the same thing as "I disagree".
  58. Re:Wow by TheRealMindChild · · Score: 2

    It would be cool if there was a solution to properly handle a 32-bit driver in a 64-bit host environment, but there isn't. (Is there? Even if you use a 32-bit VM on a 64-bit host, you can't do shit.)

    In the beginning, Microsoft used Thunking to be able to use 16-bit drivers (and other DLLs) on a 32-bit system (Windows 95). This halted in Windows 98 (driver wise) due to horrible stability problems. Eventually, Microsoft moved to Windows on Windows (WOW) which provided an adequate environment for 16-bit apps to run on 32-bit Windows NT. However, if you have a 64-bit version of Windows, you don't have WOW, but WOW64, which runs 32-bit apps on 64-bit Windows, and has no support for 16-bit Windows applications.

    --

    "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
  59. Fork it by Zoxed · · Score: 2

    I have an idea: why not fork Firefox and create a leaner/faster just-a-browser and cut out all the excess junk.
    And it could be named after some sort of animal or bird that comes out of ashes maybe ?

  60. Re:VS 2005? by ceoyoyo · · Score: 2

    Ah, that's why Firefox is so slow but everyone insists it's not that bad. They're all Windows users!

  61. Re:Wow by Anonymous Coward · · Score: 3, Informative

    Making the usage of Firefox fast is the whole point of PGO, a process that uses up orders of magnitude more when compiling and linking an executable than without PGO. So, in order to get the fastest speeds out of the Firefox binary, the Firefox build process optimizes and uses lots of RAM in the process. The problem is that the MSVC linker is 32-bits, so the *linker* is running out of memory ONLY WHEN FIREFOX IS COMPILING AND OPTIMIZING. The executable that is generated is not as large, does not use as much memory, and is faster than if Firefox was built with a "straight" boring old build process.

    The whole point of this exercise is to save assholes like you more time by making your browser faster and more responsive so you can post snarky criticisms of Firefox (without understanding the problem) faster.

    Your welcome, asshole.

  62. Re:whose bloat by roca · · Score: 2

    You can't. Microsoft simply doesn't offer a 64-bit linker that can produce 32-bit code.

  63. Re:No PAE?! by msobkow · · Score: 2

    Microsoft doesn't offer a 64-bit compiler that cross-compiles to 32-bit. Fine, I can accept that. But there are other compilers one could use:

    http://software.intel.com/en-us/articles/intel-compilers/ is still reputed to produce the tightest, fastest WinXX executables available.

    http://www.embarcadero.com/products/cbuilder (formerly Borland C++)

    The venerable http://gcc.gnu.org/

    http://www.ghs.com/products/optimizingC++EC++Compilers.html (though it looks like GHC might no longer target Windows at all)

    --
    I do not fail; I succeed at finding out what does not work.
  64. Re:I know I'm pointing out the obvious here... by Kommet · · Score: 2

    And the trolly troll is trolling.

    Unless you regularly compile optimized builds of Chrome, Opera, Safari, or IE, kindly STFU.

  65. Re:Wow by anubi · · Score: 2

    I still get calls to support industrial processes driven by DOS based machines.

    I am an old guy, raised with these beasts. I know the innards of these things like the back of my hand.

    The harbinger of death seemed to be a dearth of disk drives compatible with old DOS machines. Even my stream of disk drives from the recycler is drying up. But it looks like SanDisk and Syba have pulled me and my customer's arse out of the fire again.

    Its hard to throw away an enormous expensive piece of machinery because its controller ( which has been doing exactly what it needed to do for 25 years ) isn't supported anymore.

    --
    "Prove all things; hold fast that which is good." [KJV: I Thessalonians 5:21]

  66. Re:Not always that easy by plover · · Score: 2

    You want scary? At $CLINIC we use, they run Windows NT 4.0 on their ultrasonic diagnostic equipment, because the system was certified only with that OS at whatever the patch level was when they tested it. While that may seem innocuous, the damn thing is on the freakin' network, because the doctors want to email images to their patients!

    I sure don't want me or my family to be the ones to have to file the lawsuit when a "zombie" actually causes someone to die from a faulty diagnosis, or because some machinery failed due to a DDoS attack originating on their network.

    --
    John
  67. Re:Wow by TheRaven64 · · Score: 4, Insightful

    Not that they shouldn't care, mind you, as that is some seriously monolithic code.

    They're talking about using link-time optimisation (LTO). That means that you compile each compilation unit to an intermediate representation and then run optimisations on the whole program. This takes a staggering amount of memory (which is why no one bothered with it off high-end workstations with very expensive compilers until very recently), but can sometimes be worth it. It actually helps modularity, because you can keep your source code nicely separated into independent components without worrying about efficiency, and you can do better data hiding.

    As a trivial example, consider an accessor method. Something like getFoo() { return foo; }. Without LTO, you'd want to put the declaration of the class and this method in the header so that every compilation unit could separately inline it. This reduces modularity, but it saves you the cost of a function call just to access a field in a structure. With LTO, you can make the class opaque (if you're a C++ junkie, using the Pimpl pattern, if you're a C programmer by just not declaring the struct in the header). You'll get a single copy of the function emitted, and then the link-time optimiser will inline it everywhere.

    --
    I am TheRaven on Soylent News
  68. Re:Wow by TheRaven64 · · Score: 2

    There is no advantage to running 64bit LINUX....FTFY

    Not true at all. There are several advantages to running code compiled for x86-64 instead of for x86. If you're on *NIX, then one of the big ones is that x86-64 has rip-relative addressing, while x86 lacks eip-relative addressing. In position-independent code, this means that any call to a static function or access to a static variable is cheaper. Windows doesn't use position-independent code for DLLs on 32-bit (it tries to load them at a fixed address and performs load-time relocations if it can't), so that's not a problem, but on *NIX.

    There are other advantages. One of the big ones is that anything targeting x86-64 will default to using SSE for floating point instead of x87. This is generally at least slightly faster in the silicon, but it's also much easier to generate good SSE code for the register-register SSE coprocessor (with lots of registers!) than for the stack-based x87 (with only a handful).

    Then, of course, there's the fact that you have a lot more general-purpose registers with x86-64, so you need far fewer stack spills to do the same thing.

    --
    I am TheRaven on Soylent News