The browser wars are as active as ever, with WebKit, V8, and Edge all reaching major milestones in their never-ending battle to keep up with the demands of modern JavaScript.
The team behind WebKit announced that it has reached 100% ES6 (ES2015) compatibility on the Kangax Compatibility Table; the first such achievement. WebKit is the basis for Apple's Safari web browser. Their latest browser preview, Safari Technical Preview 4 has itself reached 99% compatibility.
Juriy Zaytsev (AKA Kangax) said that WebKit's recent progress was a bit of a surprise:
They've been lagging behind for a long time; almost entire last year. Then accelerated very quickly and yes, almost out of the blue. We started getting PR's from WebKit developers with updates showing them adding more and more features. Now they reached 100% pretty much at the same time as Chrome, except that Chrome has been working on it for a longer time; WebKit's progress was just steeper.
In other news, the V8 team (the JavaScript engine behind Chrome and Node.js), have implemented async/await. While Microsoft was first to release a browser preview with async/await available, V8's usage in Node.js gives it an even broader reach beyond the browser. Developers can already use async/await in their code if they're using a transpiler like TypeScript, but a native V8 implementation would obviate the need to transpile.
Not to be outdone, Microsoft has updated their Edge preview browser to offer ES6 modules. The static nature of ES6 modules lets browsers perform lookups quickly. Microsoft describes the benefits as:
The spec syntactically restricts all declarations to the global scope in the module body (no imports/exports in if-statement, nested function, eval, etc.), so all module imports and exports can be determined during parsing and will not change in execution.
In addition, the Edge preview also includes all of the proposed ES2016 features (though there are only two such features).
ES6 modules have not yet been implemented by WebKit. That feature is not in the compatibility tables because "it's difficult to test them in an automatic manner and the spec is still not finalized," says Zaytsev. So while WebKit can claim 100% on the Kangax compatibility table, that doesn't necessarily mean they're 100% ES2015 compliant.
It's not clear when all of these advancements will land in public releases.