I have been writing a few patches recently, mostly related to moving parts of main-thread I/O off the main-thread and few related to the JS engine, mostly associated with the ES6 spec. Though I am still learning and picking up things, it has been quite a good experience so far.
- Already merged are the String.prototype.repeat (Bug 815431) and the iterator methods of Sets (Bug 869996), fixing minor deviations of iterator Map, Sets and Array prototypes from the spec (Bug 875433).
- I am working on implementing Map#forEach and Set#forEach (Bug 866847) and Array.from and Array.of (Bug 866849). Self-hosting has been the choice in these cases, it has turned out to be pretty good, though I sometimes miss the flexibility of C++.
- I had also undertaken the work to self-host Array.sort (Bug 715181). Though I am kind of lagging behind in this, but still I have managed to implement Tim Sort in JS (I fear it to be very much a broken implementation – because half the browser including devtools stop working), run it through benchmarks on JSPerf, and the results have been pretty impressive and I am getting drastic speed boosts. But need to spend some time on this so that it is spec complaint and the tests stop failing.
- In working on async I/O I came across this key manager of the URL Classifier module, that was using blocking I/O. I am converting it to off the main thread I/O with OS.File (Bug 867776, 879724). It was some pretty old code and I had to spend some time figuring out what to do for the test cases.
- Among other things I worked on fixing a bug on PopupNotifications (Bug 864895), making the Alarm API preserve a few more milliseconds (Bug 877888), removing AudioBufferSourceNode.gain (Bug 880265).
But my schedule is a bit tight now, with my intern going on as well. I don’t plan to pickup new bugs any time soon. On the other hand I have started working on Google Summer of Code project (Bug 335448) and its going to be a while before I bring the module to a basic working stage, and I have been sneak-peeking into the bug for doing a read-ahead on Linux every now and then (Bug 865387).