Skip to content
This repository has been archived by the owner on Jul 1, 2024. It is now read-only.

Commit

Permalink
Add Opera 35 blog post
Browse files Browse the repository at this point in the history
  • Loading branch information
mathiasbynens committed Feb 2, 2016
1 parent 9d78cc0 commit 3fb62cd
Showing 1 changed file with 149 additions and 0 deletions.
149 changes: 149 additions & 0 deletions src/blog/_posts/2016-02-02-opera-35.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
---
title: Opera 35 released
authors:
- mathias-bynens
intro: 'Opera 35 (based on Chromium 48) for [Mac, Windows, and Linux](http://www.opera.com/computer) is out! To find out what’s new for users, see our [Desktop](http://blogs.opera.com/desktop/) blog. Here’s what it means for web developers.'
tags:
- html
- css
- javascript
- opera
license: cc-by-3.0
---

Opera 35 (based on Chromium 48) for [Mac, Windows, and Linux](http://www.opera.com/computer) is out! To find out what’s new for users, see [our Desktop blog](http://blogs.opera.com/desktop/). Here’s what it means for web developers.

## ES6: more well-known symbols

Two more [well-known symbols](https://tc39.github.io/ecma262/#sec-well-known-symbols) have been implemented:

* `Symbol.isConcatSpreadable` points to a boolean value that indicates if an object should be flattened to its array elements by `Array.prototype.concat` (`true`) or not (`false`).
* `Symbol.toPrimitive` points to a method that converts an object to a corresponding primitive value.

## CSS: improved `auto`

The [implied minimum size of a flex item](https://drafts.csswg.org/css-flexbox/#min-size-auto) (i.e. `min-width: auto` or `min-height: auto`) is now also computed correctly when `flex-basis` is not `auto`.

## CSS Writing Modes updates

The CSS properties [`text-combine-upright`](https://drafts.csswg.org/css-writing-modes-3/#text-combine-upright), [`text-orientation`](https://drafts.csswg.org/css-writing-modes-3/#text-orientation), and [`writing-mode`](https://drafts.csswg.org/css-writing-modes-3/#block-flow) are now available without the `-webkit-` prefix, and with new syntax matching the spec.

The `isolate`, `isolate-override`, and `plaintext` values for [the `unicode-bidi` CSS property](https://drafts.csswg.org/css-writing-modes-3/#unicode-bidi) can now be used without the `-webkit-` prefix. Support for the non-standard `horizontal-bt` value (as in `-webkit-writing-mode: horizontal-bt`) has been removed.

## Unprefixed CSS `font-feature-settings`

[The CSS `font-feature-settings` property](https://drafts.csswg.org/css-fonts/#font-feature-settings-prop) now works without the `-webkit-` prefix. This property provides low-level control over [OpenType font features](https://dev.opera.com/articles/state-of-web-type/#opentype-features).

The `-webkit-`-prefixed version is now deprecated and will be removed in a future release.

## CSS Font Loading API improvements

Our implementation of the `FontFaceSet` interface (e.g. `document.fonts`) is now set-like, [matching the spec](https://drafts.csswg.org/css-font-loading/#FontFaceSet-interface). This means it has `entries()`, `keys()`, and `values()` iterators, and is itself an iterator (over the individual `FontFace` entries).

Also, the `add()` and `remove()` methods don’t throw `InvalidModificationError` anymore when adding or deleting a CSS-connected font-face to the same `FontFaceSet`. Here’s an example of that:

<style>
@font-face {
font-family: Test;
src: local('Helvetica');
}
</style>
<script>
var face;
document.fonts.forEach(function(f) { face = f; });
document.fonts.add(face); // no-op
document.fonts.remove(face); // no-op, returns `false`
</script>

Previously, the above `add()` and `remove()` both threw `InvalidModificationError` exceptions.

[A demo is available.](https://googlechrome.github.io/samples/font-face-set/)

## Fetch API: `data:` and `blob:` URL scheme support

Our [Fetch API](https://fetch.spec.whatwg.org/) implementation now supports the `data:` and `blob:` URL schemes.

## IndexedDB API additions

The IndexedDB `getAll()` and `getAllKeys()` methods are now supported on the [`IDBObjectStore`](https://w3c.github.io/IndexedDB/#object-store) and [`IDBIndex`](https://w3c.github.io/IndexedDB/#index) interfaces. Additionally, [`IDBObjectStore.prototype.openKeyCursor()`](https://w3c.github.io/IndexedDB/#dom-idbobjectstore-openkeycursor) and [`IDBTransaction.prototype.objectStoreNames`](https://w3c.github.io/IndexedDB/#dom-idbtransaction-objectstorenames) have been implemented.

[A demo is available.](https://googlechrome.github.io/samples/idb-getall/)

## `MediaStreamTrack.prototype.remote`

[The `remote` property](https://w3c.github.io/mediacapture-main/getusermedia.html#widl-MediaStreamTrack-remote) on WebRTC `MediaStreamTrack` instances is now available. It can be used to determine whether a stream track is from a remote source or a local one.

## `ServiceWorkerRegistration.prototype.update()` more spec-compliant

[The `update` method on `ServiceWorkerRegistration` instances](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#service-worker-registration-update) used to always bypass the browser cache. Now, it only bypasses the browser cache if the previous update check occurred over 24 hours ago.

## `Touch` and `TouchEvent` constructors

The [`Touch`](https://w3c.github.io/touch-events/#touch-interface) and [`TouchEvent`](https://w3c.github.io/touch-events/#touchevent-interface) constructors make it easy to programmatically create `Touch` and `TouchEvent` instances from an object literal.

const t = new Touch({
'identifier': 42,
'target': document.body,
'clientX': 200,
'clientY': 200,
'screenX': 300,
'screenY': 300,
'pageX': 250,
'pageY': 250,
'radiusX': 2.5,
'radiusY': 2.5,
'rotationAngle': 10,
'force': 0.5
});


A [demo with more examples](https://output.jsbin.com/lohuwa) is available.

## `KeyboardEvent.prototype.code`

[The `code` property on `KeyboardEvent` instances](https://w3c.github.io/uievents/#widl-KeyboardEvent-code) is now implemented. The value of this property identifies the physical key that generated the keyboard event, regardless of the user’s current keyboard layout. For example, the physical `Q` key represents the symbol `q` on a QWERTY keyboard layout, but represents `a` on an AZERTY keyboard layout — but its `.code` value is `'KeyQ'` in both configurations.

[A demo is available.](https://googlechrome.github.io/samples/keyboardevent-code-attribute/)

## Web Audio API: `.connect()` chaining

The `connect` method on `AudioNode` and `AudioParam` instances now supports chaining, [as per the spec](https://webaudio.github.io/web-audio-api/#widl-AudioNode-connect-AudioNode-AudioNode-destination-unsigned-long-output-unsigned-long-input).

Before this change, you’d write code like this:

sourceNode.connect(gainNode);
sourceNode.connect(filterNode);
sourceNode.connect(destination);

Now that can be simplified as follows:

sourceNode
.connect(gainNode)
.connect(filterNode)
.connect(destination);

[A demo is available.](https://googlechrome.github.io/samples/webaudio-method-chaining/)

## Deprecated and removed features

Support for the non-standard CSS values `intrinsic` and `min-intrinsic` has been removed. Use the standardized values [`max-content`](https://drafts.csswg.org/css-sizing-3/#max-content) and [`min-content`](https://drafts.csswg.org/css-sizing-3/#min-content) instead.

Support for CSS `composite-mode: darker` has been removed since `darker` is a non-[standard](https://drafts.fxtf.org/compositing-1/#compositemode) value.

The `glyph-orientation-horizontal` and `glyph-orientation-vertical` CSS properties for SVG elements have been removed. Use [`text-orientation`](https://drafts.csswg.org/css-writing-modes-3/#text-orientation) instead, just like you would for HTML elements.

The `offsetParent`, `offsetTop`, `offsetLeft`, `offsetWidth`, and `offsetHeight` properties on `SVGElement` instances are now deprecated and will be removed in an upcoming release. Per the spec, [these properties should only exist on `HTMLElement`s](https://drafts.csswg.org/cssom-view/#extensions-to-the-htmlelement-interface). For `SVGElement`s, you can use `getBoundingClientRect()` instead.

The `getTransformToElement` method on `SVGGraphicsElement` instances has been removed, [matching the spec](https://html.spec.whatwg.org/multipage/embedded-content.html#svg-0).

The `SVGPathSeg` and `SVGPathSegList` constructors have been removed. They were part of the old SVG 1.1 spec, but have since been removed from the standard. If you rely on these APIs, you’ll be pleased to hear that [a polyfill is available for them](https://github.com/progers/pathseg).

The `getSVGDocument` method is no longer available on `HTMLFrameElement` instances. We now match the spec, which makes this method available on `HTMLEmbedElement`, `HTMLIFrameElement`, and `HTMLObjectElement` instances only.

The non-standard `item()` method on [`TextTrackList`](https://html.spec.whatwg.org/#texttracklist) and [`TextTrackCueList`](https://html.spec.whatwg.org/#texttrackcuelist) has been removed. Use `tracks[index]` instead of `tracks.item(index)`.

Following the recommendation in [RFC 7465](https://tools.ietf.org/html/rfc7465 "Prohibiting RC4 Cipher Suites"), support for the RC4 cipher has finally been removed. HTTPS connections that rely on RC4 exclusively [cannot be considered secure anymore](https://en.wikipedia.org/wiki/RC4#Security) and will therefore fail from now on.

## What’s next?

If you’re interested in experimenting with features that are in the pipeline for future versions of Opera, we recommend following [our Opera Developer stream](http://www.opera.com/developer).

0 comments on commit 3fb62cd

Please sign in to comment.