Tuesday, April 29, 2014

Oh, you big lug, have some Australis. You deserve it.

Why should only people with Intel Macs enjoy the new shiny? You deserve some Australis too, even if it's only mostly-working Australis. So let's kick off our first official unstable release post-24 -- it's been a long time coming.

Since Mozilla is making some more substantial code changes between 29 and 31 (more on that in a minute), it's not really profitable to spend time fixing code that's likely just to get broken all over again, and I really want some test coverage on 10.5 systems since they are the majority of TenFourFox users despite the browser's focus. That means you get to play with Australis as well. We support almost all of the features of "real" Australis, including the hamburger menu, swoopy tabs and the secret unicorn. If you turn the title bar on, which I finally had to do because I miss the title bar, it's now very workable. I don't hate it. I don't love it, but I don't hate it. If you don't hate it either, my work here is done.

Please note there is only a 7450 and G5 build, mostly because this is intended for 10.5 testing; if you have a 7400 system, you can of course run the 7450 build with a mild penalty. G3 owners, you'll get some love on the next unstable cycle.

29 is, as mentioned, somewhat faster overall than 24. The big reason for this is Mozilla's continued conversion towards Azure, their lighter-than-Thebes-over-Cairo graphics architecture, which is now called Moz2D. For example, compositing is a lot faster because there's a lot less slinging of layers and interconversion, so pages can scroll faster (further helped by the delayed decoding of off-screen images in this version) and animation is smoother. Plus, with Off-Main-Thread Compositing (OMTC), the compositing will occur on a background thread, which performs very well on dual CPUs and of course the Quad which can schedule the work on another core. It also implements an improvement to garbage collection called exact rooting, which is a bit faster by itself, but will improve even more when true generational garbage collection comes to TenFourFox in 31. Finally, I added our own tweaks to reduce the GC load and improve the incremental garbage collection timeslice discussed in previous entries, and also rescheduled the PowerPC OS X xptcall assembly language code for better SPR usage, especially on G5.

Unfortunately, the Moz2D change also introduced several bugs ranging from minor to major severity -- as mentioned, our biggest problem is that canvases stay static. This does not affect many sites, but the sites it does affect tend to be high-profile and the bug is very noticeable on them because major portions of the page simply don't draw (such as the new Google Maps). All the Tier-1 ports support some manner of hardware acceleration and IPC and we don't; our canvas problem is a failure in basic layers used where no acceleration is possible. Although the bug is probably Mozilla's, we're probably going to be the ones who have to fix it because really only oddball Tier-3 ports like us excessively depend on basic layer compositing. Also, since the browser now preferentially deals in native-ordered graphics surfaces, and all the Tier-1 ports are little-endian, we'll likely encounter many endian issues with slinging bitmaps around (the SVG filters problem and the "blue" canvas snapshots were two of these I've corrected for 29 but may need to be revisited/re-repaired in 31). Sadly, Linux/PPC isn't likely to fix these first because they're still out of commission due to bug 961488, and the Moz2D code is changing so dramatically that I'm just going to start over with a 31 aurora and try to fix that rather than fix something (29) that's just going to change again. Since 24 doesn't end support until 31.2, I have 31a, 31b, 31.0 and 31.1 to get it right.

The other bug is that we still don't support audio or video-with-audio correctly in getUserMedia after the most recent update to WebRTC, but this is not a showstopper and will not delay release; video-without-audio works fine for things such as snapshots anyway, which is the most common use case right now. The problem seems due to an audio service thread that's prematurely dying off, so it should be fixable once I figure out what's killing it.

For this test, I am mostly interested in display failures in the default chrome (i.e., the part of the browser that isn't the web page), using the default theme. TenFourFox Australis should look mostly like the native one in Firefox 10.6+ with the major difference being we flat-shade most of the chrome for performance and visual continuity reasons, and we are still using the intermediate shade of grey for active windows we've used since TenFourFox 8. Otherwise, there shouldn't be much difference in the native Mac theme, if any. (Issue 247 still occurs with Personas, but this already affected 24 so it's not really a regression, and no one seems to be complaining about it since the window controls can be hovered and still work.)

The traffic light buttons should look proper on 10.5, should be shifted down to meet the tabs in the default window configuration, and the window widgets should all act as you expect them to. If you turn the titlebar back on, then it should "just work" and the traffic light buttons should go back to their usual location. There is a trivial issue where when the window animates, the traffic light buttons briefly don't repaint, but they do come back and I don't consider this worth fixing right now. I see no reason why this code should behave differently on Leopard, but if what you end up seeing looks wrong to you, please please please check it against the screenshots for 10.6 before filing a report -- I have a lot of work to get through to get 31 off the ground and trivially refutable reports slow me down. But if it really does look wrong, take a screenshot -- uncompressed TIFF or minimally compressed PNG, cropped to the offending area so we don't run out of attachment quota -- and post it to issue 267 with an explanation. It needs to be uncompressed because I may use your screenshot to take pixel measurements, so please do not post JPEGs.

If you notice rendering defects in web content, however, make sure it is not an HTML5 canvas first (right-click and select Inspect Element). If it's a canvas, please don't spam me with more reports; I don't need any more test cases, I've got plenty. If it's not, please verify it against Firefox 29 on 10.6+, Linux/Linux PPC or Windows, and file appropriately on Google Code if the bug is only in TenFourFox, just as you should be doing ordinarily.

You might want to use the Profile Manager to create a special 29-only profile until I think it's ready to completely replace 24.5.0. Right now, it isn't really, even though it's very close. Download from SourceForge.

As soon as I'm done with my final exam for this class, I'll start on 31 aurora, and we'll climb the summit again for another year of TenFourFox support. We're gonna make it! We're gonna make it!

18 comments:

  1. Downloaded 29-7450 and played with it for a while. The browser seems speedy (except for much slower webm playback on Youtube) and stable overall, definitely usable.

    Some 10.5 screenshots with default settings plus one of my own settings (title bar switched on, note that the rounded window corners are drawn correctly):
    http://www.sendspace.com/file/ntx6pg
    Everything looks okay to me so far.

    Other notes:
    29 doesn't exhibit the full-CPU-load bug on the Facebook newsfeed page. Good.

    The add-on bar is gone, so some extensions (that were originally written for the status bar) have no place to draw their buttons. Hoping for updates or alternatives.

    I'm going to refrain from using add-ons that restore the old look for now, except something that can hide the (useless on OS X) menu and bookmark list buttons. We do have a menu bar, and we intend to keep it :-)

    ReplyDelete
    Replies
    1. The titlebar-on window frame code goes through a substantially different path much more similar to the old interface. The 10.6 version, at least on my Mac mini, still shows similar corners with the titlebar off, so I still don't think it's *our* bug.

      One of the AltiVec files doesn't have a direct replacement in the new libvpx. On the G5 it doesn't seem to matter, but I guess it might on lower-spec machines. I'll look at that and maybe check the loop filter to make sure it didn't somehow get turned back on full.

      Delete
  2. Do we support pdf.js? Because it's pretty broken in 29 (content missing on the first page of each document, mostly page 1 is just empty). Works fine in FF29/WinXP.

    ReplyDelete
    Replies
    1. We don't, but the problem here is also canvas-related (pdf.js uses canvas elements to draw the page), so when that's fixed it should just work.

      Delete
  3. Typing in text fields (like the one I'm typing in right now) is missing keyboard bindings (alt+delete to backward-delete a word; and cmd+right/left arrow for jumping to end/start of the line). I can't say if this is our problem or if it's the same on FF/10.6.

    ReplyDelete
    Replies
    1. I'll look into it, but it sounds like our bug.

      Delete
  4. After using 29 for a longer period of time, I can say that it's stable (hasn't crashed once), and memory management seems to be improved. It can now go down from >1 GB ram usage to ~400 or 500 MB in a matter of seconds with few or no stalls. Very large images load much faster. The UI is very responsive. There are still some rough edges (literally and metaphorically), and if they're fixed, this will make a very fine default browser.

    ReplyDelete
  5. QTE seems not to work in 29. Choices are there in context menu but never get the first pop up that details the file name.

    ReplyDelete
  6. I've developed a saturated processor with 4 pinned tabs: Gmail, facebook, Google Voice & Google Calendars. Do you want me to do anything to help?

    ReplyDelete
  7. There's something that looks like a memory leak that causes rapidly increasing ram usage (about 1 MB/second) and full CPU load even with no window open. I'm still investigating what triggers it (some website/action, or add-on), but it happened several times already. It can only be cured by re-starting the browser.

    ReplyDelete
  8. Looks like as soon as you click on one of the QTE choices in the right click context menu you're off to the races!......(The Kentucky Oaks today & The Kentucky Derby tomorrow) Also the QTE shows the right click context menu options near all the time even though no video is there.

    ReplyDelete
  9. ..& you don't have to restart....just disable QTE & wallah! The processor is set free!

    ReplyDelete
    Replies
    1. Confirmed for the CPU, but this doesn't cause the memory leak. Must be a different problem.

      Delete
    2. It never happened again since I disabled the QTE. Maybe it is the same problem after all.

      Delete
  10. What should these be in 29?

    javascript.options.mem.gc_incremental;True
    javascript.options.mem.gc_incremental_slice_ms;100
    browser.sessionstore.interval;20000
    browser.sessionstore.max_tabs_undo;2
    browser.sessionstore.max_windows_undo;2

    I had to set some back to these default settings which were changed in previous testing.

    ReplyDelete
    Replies
    1. That's exactly the defaults, I'd try using these first for testing this build (esp. the increment values). Personally I don't need to restore additional windows (I alway use just one), and I need to have more tabs restored, so I set this to 6.

      Delete
  11. I don't know if this is intentional or coincidental, but 29 uses far less memory than any version of Fx/TFF in recent memory.

    This pleases my G4 greatly!

    ReplyDelete

Due to an increased frequency of spam, comments are now subject to moderation.