Project |
Status |
ETA (weeks)
|
Incremental Cycle Collection (ICC)
|
- rebased over other ongoing CC work
- investigating and fixing leakiness and crashes
|
Q3
|
Keep JS-accessible APIs from blocking the main thread
|
- done:
- Async mozStorage connections
- Module loader for chrome workers
- Various tweaks to OS.File
- in progress:
- Workers
- Refactoring OS.File for module loader
- ETA: End of July for the next batch
- ETA: End of August for everything, unless something high-priority happens
- Storage
- Closing async mozthreadStorage connections off the main
- APIs
- Async downloads API for JavaScript
- Async module for detecting crashes
- Refactorings
- Improving asynchronousness + performance of SessionRestore startup
- blocked on reviews by ttaubert, who has some other regressions and other work to complete
- Adapting various modules to new-style Promise
- Making mozStorage clients async
- To begin
- Investigate DOM Promise
- ETA: End of August, unless something higher priority happens
- Port modules to async mozStorage connection
|
Workers: End Aug, mozthreadStorage: End July
|
Profiler Backend for Mobile
|
- done:
- Multi-thread support for GUI (Anton Kovalyov)
- Multi-thread support for backend (BenWa + others?)
- Java profiling on Android (BenWa?)
- Native unwind for ARM/Android using EXIDX (in nightlies) at circa 200Hz / 100MB
- In progress:
- Improve breakpad unwind performance for EXIDX and CFI (jseward) <- Android and possibly Linux
- Have an in-principle plan, but don't know how hard it will be to implement
- Reduce mem use for EXIDX/CFI unwind. Closely related to previous point.
- Fix stability problems related to breakpad/faulty.lib interface (glandium, bug 887685)
- glandium holds the token on this; not sure how hard it will be to fix
- Other stuff we should consider
|
Breakpad unwind speedups: late august.
|
Reducing time to first paint - Phase 1
|
The project hasn't reached the 10% improvement goal, partly because of regressions and partly because Vladan's time hasn't been devoted exclusively to this project. Retargeting for the end of July.
- done:
- set up an environment to collect consistent startup times, fixed Mozilla code that triggered stat-ing of plugins at startup, elminated loading of feclient.dll on startup
- todo:
- reduce number of DLLs loaded at startup
- revisit decision to prefetch gkmedias.dll to dependentlibs.list (it gets read on startup)
- Improve SafeBrowsing behavior on startup (after firstpaint)
- new way to do startup crash detection that avoids main thread fsyncs
|
End of July
|
Replace Addon Manager SQLITE with JSON file
|
- All core work is done and either reviewed or up for review
- Try builds exposed a small number of platform-specific test failures; fixes for those should be done this week
- Waiting for reviews on several key patches.
|
AddonRepository should land in the next few days, XPIProvider hopefully within a couple of weeks
|
Smooth Tab Animation
|
- Newtab preload turned on by tim.
- Talos tab animation test: in progress (works, needs refinements - will leave some to v2).
- Scroll smoothness test: in progress (works, looking for better metric to correlete to smoothness).
|
|
Network Cache Rewrite
|
- Testing on old iMac and Samsung with Android.
- Blog post with results from testing and optimizing on this hardware http://www.janbambas.cz/new-firefox-http-cache-backend-implementation/
- Stuff not mentioned in the post:
- shutdown time regression due to closing all the files before data has been written
- gum needs to merge with m-c to get rid of a page reload crash on Android
- Notes:
- There is clearly a regression for cold cached load. Block files perform much better. We may consider to create bundle files and not just single files per entry. Needs definitely more discussion and testing.
- I'm using the event tracer to check on how stuff behaves - it's priceless to me! I can see that time to first paint is kinda volatile. It triggers randomly from 5 seconds to 30 seconds when doing a cold cached load (see the post). We may need similar resource scheduling as we have for network also in the cache code. Also, there could be a bug in thread implementation. Sometimes events are just hanging in the queue and not being triggered for e.g. 13 seconds, but that is a theory since I may not monitor all events happening on the given thread. More work on the cache I/O thread is definitely needed. Maybe just the better scheduling will revert that large regression.
|
Q4
|
Remove localStorage From Browser Pages
|
- removed usage from all about: pages
- currently investigating possible regression of about:home (bug 890409)
- made patch to disallow using DOM Storage in about: page
|
End of July
|
Complete Asynchronous History API
|
- investigating an history regression caused by the new GetPlacesInfo API (bug 892454)
- Mano working on consumers conversion from GetPageTitle to GetPlacesInfo
- Writing a new Places transactions manager to take async into account for undo/redo of bookmarks
- restarting the work on RemovePlaces
|
Mid Sept
|
Reduce Impact Of Bookmarks Backups On Shutdown
|
|
Late Sept
|
Reduce Storage Connections Main-Thread Operations
|
- Yoric working on off-main-thread asyncClose, blocked on complex database close sequence causing leaks. Investigation ongoing
- Marco working on conversion of autocomplete to the async API, to avoid jank on first locationbar search
- Note: Consumers need to be converted after API is complete.
|
API: End July
|
Asynchronous Places Annotations
|
- Mock of the API filed, Mano will implement prototype module
- on hold while working on GetPlacesInfo consumers conversion
- Note: Consumers need to be converted after API is complete.
|
Components: Late Sept
|
Improve Text Performance
|
- Lots of fixes came in with bug 863248 - new shaping engine with a bunch of perf fixes
- More to come from bug 834609 (improve talos tests to be less noisy wrt text), bug 885689 (checks to ensure rtl text doesn't regress perf for ltr text) and others
- need to start with metrics so that we can prioritize bugs
- jdagget, jq, simon on this project
|
Q3
|
Downloads API rewrite
|
- Work completed:
- Support for serializing to JSON file and file format definition (bug 835885, bug 851454)
- Methods to remove downloads when the related history entry is removed (bug 836485)
- Support for the becauseBlocked property on DownloadError (bug 852599)
- Next, only two bugs left to reach the "consumer interface complete" milestone:
- Add the ability to resume a download from where it stopped (bug 836437)
- Add methods to execute actions on completed downloads (bug 852482)
- Work to reach the "initial features" milestone (tracked in bug 881062) is proceeding in parallel
|
Mid Aug
|
Nothing to report.