Firefox 39 for developers
=========================

Firefox 39 was released on July 2, 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:

* *WebIDE* now supports debugging Firefox OS devices over Wi-Fi
* *WebIDE* now supports Cordova projects
* Animations view: rewind, fast-forward, and jump to a specific time
* The cubic Bézier curve editor now includes 31 presets
* Drag and drop elements in the Page Inspector
* Web console command history is now persisted across sessions
* $\_ console command to print the last result evaluated
* Better box model highlighting for inline elements

All devtools bugs fixed between Firefox 38 and Firefox 39.

### CSS

* Support of the `<string>` type on `list-style-type`, as well as its shorthand property `list-style` has been implemented (Firefox bug 1144607).
* CSS Scroll Snapping has been implemented (Firefox bug 945584 and Firefox bug 1138658).
* Cascading of CSS Animations and CSS Transitions has been rewritten to match the latest specification (Firefox bug 1125455).
* Support for vertical scripts, with the `writing-mode` is now turned on by default on Nightly and Developer Edition, but not on Firefox Beta and Firefox Release (Firefox bug 1099032). Note that implementation is not yet complete and some widgets, like tables, will not obey to all values.
* CSS `filter` acts like position: relative + overflow: hidden (Firefox bug 1125767).
### HTML

* A new ARIA role, `switch`, is now supported (Firefox bug 1136563).
* Support for `<link rel="preconnect">` allowing to anticipate a future connection without revealing any information has been implemented (Firefox bug 1135160).
### JavaScript

* The `RegExp` constructor no longer throws when the first argument is a `RegExp` and the second `flags` argument is present (Firefox bug 1108949).
* The `Object.prototype.__noSuchMethod__` property is now deprecated and throws a console warning (see Firefox bug 1140428 and this platform announcement).
* The implementation of the `Proxy` object has been updated to comply more with the ES2015 specification:
    + The `defineProperty` and `set` handlers now need to explicitly return `true` to be successful, otherwise a `TypeError` exception will be thrown in strict mode (Firefox bug 1132522).
    + If the `window` object is set as the target, those handlers will now throw a `TypeError` (Firefox bug 828137).
* When using arrow functions (`=>`), a line terminator (`\n`) is no longer allowed after arrow function arguments (`() \n => {}`) (Firefox bug 1141392).
* `RegExp.prototype.toString` is now a generic function (Firefox bug 1079919).
* The non-standard `flags` argument of `String.prototype.match()`, `String.prototype.search()`, and `String.prototype.replace()` is now deprecated and throws a console warning (Firefox bug 1142351).
* The try/catch behavior of `Object.assign()` has been removed to conform with the latest ES2015 draft (Firefox bug 1103344).
### Interfaces/APIs/DOM

* The experimental `CanvasRenderingContext2D.addHitRegion()` method now accepts a `path` option, which allows you to add hit regions to `Path2D` objects (Firefox bug 1129147).
* New methods have been added to manipulate `FormData` objects (Firefox bug 1085283) and `FormData` is now supported in Web workers (Firefox bug 739173).
* The non-standard `XMLHttpRequest.sendAsBinary()` method has been removed.
 Refer to the Sending and Receiving Binary Data documentation for alternatives (Firefox bug 853162).
* Progress in our experimental implementation of Web Animations: `AnimationPlayer.startTime` is now writable (Firefox bug 1073379).
* Progress in our experimental implementation of Service Workers: `Cache` and `CacheStorage` interfaces are now implemented (Firefox bug 940273).
* The experimental Fetch API has been activated by default (Firefox bug 1133861).
* Progress in our experimental implementation of WebGL2: `WebGLSync` is now implemented (Firefox bug 1048721).
* Support for `MouseEvent.offsetX` and `MouseEvent.offsetY` have been added on desktop (Firefox bug 69787, but not on Firefox for Android or Firefox OS (they will be added in Firefox 43)).
### MathML

*No change.*

### SVG

*No change.*

### Audio/Video

*No change.*

### Miscellaneous

* WOFF2 fonts support is now turned on by default in release version of Firefox (Beta and Release, in addition of Nightly and Developer Edition) (Firefox bug 1084026).
* The `-remote` command-line option has been removed (Firefox bug 1080319).
* Support for new Unicode 8.0 skin tone emoji (Firefox bug 1153460).
Networking
----------

* Support for SSLv3 has been completely removed (Firefox bug 1106470).
Security
--------

*No change.*

Changes for add-on and Mozilla developers
-----------------------------------------

*No change.*

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

* Firefox 38 for developers
* Firefox 37 for developers
* 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