The committee and the process
To understand the progress made in 2015 (for ES7), we should first understand the phases which every feature passed through before becoming standard (see Table 1).
There are only two new features in ES7 — Array.prototype.includes() and Exponentiation operator. Compared to the size of ES6, the next version is very tiny. But, thats not all. Many new features have also progressed to the definition stage during 2015.
This method returns a Boolean based on whether an element is present in the array or not — true if present, false if not. Finding an element could be achieved even before this method, by using indexOf().
The command used before ES7 was released is:
[ES5, ES6, ES7].indexOf(ES6)>-1; // true
The command used after ES7 has been released is:
[ES5, ES6, ES7].includes(ES6); // true
Like many other features includes() improves readability.
Exponentiation operator **
Before the release of ES7, we used the Math.pow() operator for the exponentiation operation. Now a new operator ** has been introduced:
js> 2**3 8
Features at the candidate stage
There could be some amount of disappointment with the ES7 version. But there is much progress on the big features. Table 2 gives the features that have reached the candidate stage. These features will more likely make it into the next version, and are being refined based on feedback from developers and browser vendors.
SIMD stands for Single Instruction Multiple Data. Before understanding it, lets first look at Single Instruction Single Data (SISD).
SISD is adding two scalars (individual values) in a single operation. To add four pairs of values, you need to perform the operation four times. In case of SIMD, you operate on vectors (array) of four values each. You can add two sets of four values in a single operation. From the example given in Figure 1, this might look very trivial. But its applications and benefits are many.
Vector arithmetic improves performance and also saves power on devices. The applications that benefit are 3D graphics, cryptography, signal processing, etc. From a Web development point of view, it improves WebGL, HTML5 Canvas rendering, animation and ASM.js.
Here are the SIMD APIs:
SIMD.Float32x4() is the constructor to define array of values. Note that it takes only 4 values. var x = SIMD.Float32x4(1.0, 1.5, 2.0,2.5); var y = SIMD.Float32x4(5.0, 5.5, 10.0, 10.5);
You can perform the addition operation using a single method that takes two vectors.
var z = SIMD.Float32x4.add(x,y);
Value of z is [6.0, 7.0, 12.0, 13.0]
Next month, we will continue to explore the features of ES6, including Promises, Iterators and Generators.
 ECMAScript – current proposals and future champions: https://github.com/tc39/ecma262
 TC39 Process, which explains the stages in detail: https://tc39.github.io/process-document/
 ES2016 features – Array.prototype.includes(): http://www.2ality.com/2016/02/array-prototype-includes.html
 ES2016 features – exponentiation operator: http://www.2ality.com/2016/02/exponentiation-operator.html
 SIMD article on Intel open source website: https://01.org/node/1495