Firefox 37 for developers
=========================

Firefox 37 was released on March 31st, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.

Changes for Web developers
--------------------------

### Developer Tools

Highlights:

* Security panel in the Network Monitor
* Animations panel in the Page Inspector
* *Support for running a custom build step in WebIDE*

All devtools bugs fixed between Firefox 36 and Firefox 37.

### CSS

* `display: contents` is now activated by default (Firefox bug 1102374 and Firefox bug 1105369).
* CSS multi-column layout is now working on elements with `display: table-caption` (Firefox bug 1109571).
* Relative positioning (`position: relative`) of table cells has been implemented (Firefox bug 35168).
* The quirks mode behavior of `empty-cells` has been removed: it now defaults to `show` like in standard mode (Firefox bug 1020400).
### HTML

* The value `<a rel="noreferrer">` now also works when the link is opened in new tab (Firefox bug 1031264).
* The `'.'` followed by the extension is now allowed in `<input accept>`: when used, a file selector filters with this given extension to be proposed to the user (Firefox bug 826176).
### JavaScript

* The `Map`, `Set`, `WeakMap` and `WeakSet` constructors now ignore null iterable (Firefox bug 1092538).
* The `Map`, `Set`, `WeakMap` and `WeakSet` constructors now supports monkey-patched `prototype.set` or `prototype.add` (Firefox bug 804279).
* The Non-standard `String.prototype.quote()` method has been removed (Firefox bug 1103181).
* The `RegExp.prototype.flags` property has been implemented (Firefox bug 1108467).
* Several `Array` methods have been implemented for typed arrays as well:
    + The `every()` and `some()` methods (Firefox bug 1116390).
    + The `find()` and `findIndex()` methods (Firefox bug 1078975).
    + The `fill()` method (Firefox bug 1113722).
    + The `indexOf()` and `lastIndexOf()` methods (Firefox bug 1107601).
    + The `join()` method (Firefox bug 1115817).
    + The `reduce()` and `reduceRight()` methods (Firefox bug 1117350).
    + The `reverse()` method (Firefox bug 1111516).
    + The `keys()`, `values()`, and `entries()` methods (Firefox bug 1119217).
* The ES2015 `Proxy` enumerate trap for `for...in` statements is implemented (Firefox bug 783829).
* The `configurable` attribute of the `Function.length` property is now `true` per the ES2015 specification (Firefox bug 911142).
* The development of ParallelJS (PJS) has been discontinued due to the limited future prospects, little attention and code complexity. The experimental implementation that had been enabled only on the Nightly channel, including the `Array.prototype.mapPar`, `filterPar` and `reducePar` methods, has been completely removed.
### Interfaces/APIs/DOM

* The `StereoPannerNode` Web Audio node has been implemented (Firefox bug 1100349).
* The `Promise`-based version of `OfflineAudioContext` is now available (Firefox bug 1087944).
* The experimental, not activated by default, implementation of Service Workers progresses: `ServiceWorkerGlobalScope.update()` has been implemented Firefox bug 1065366.
* The IndexedDB API can now be used in Web workers (Firefox bug 701634).
* Our experimental implementation of WebGL 2.0 is going forward!
    + The `WebGL2RenderingContext.getBufferSubData()` method has been implemented to provide access to Buffer Objects (Firefox bug 1048731).
* In keeping with the evolving WebRTC specification, we have deprecated `RTCIceServer.url` in favor of `RTCIceServer.urls`, which lets you specify more than one URL for a given ICE server.
* Some key names of `KeyboardEvent.key` are changed for conforming the latest DOM Level 3 Events spec. See the tables of `KeyboardEvent.key` values in MDN. The green cells are new values. And purple values are still unstable. Be careful if you use them (meta bug for these changes is Firefox bug 900372).
* The `console` interface is now working on `ServiceWorker` and `SharedWorker`. It was previously available but not working (Firefox bug 1058644).
* The value of `KeyboardEvent.key` was incorrectly being reported as `"RomanCharacters"` when the `英数` (`Eisu`) key was pressed. Now it correctly returns `"Eisu"`.
### MathML

*No change.*

### SVG

* SVG2's `<marker orient="auto-start-reverse">` has been implemented (Firefox bug 1107584).
### Audio/Video

*No change.*

Networking
----------

* WebSockets now supports the `permessage` compression method, if the server does support it (Firefox bug 792831).
Security
--------

* The usage of weak protocols or ciphers, like SSL 3.0 and RC4, are now logged in the console, to warn sites that are using it (Firefox bug 1092835).
* The CSP 1.1 `referrer` directive is now supported (Firefox bug 965727).
Changes for add-on and Mozilla developers
-----------------------------------------

### Add-on SDK

*No change.*

### XUL

*No change.*

Older versions
--------------

* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers
* Firefox 14 for developers
* Firefox 13 for developers
* Firefox 12 for developers
* Firefox 11 for developers
* Firefox 10 for developers
* Firefox 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers
* Firefox 6 for developers