JS Evolution

stage-0, stage-1, stage -2  ?

ES6, ES2015, ES2017, ES7, ES8, ESNEXT

What about ES1, ES2, ES3 and ES4 ?

Buzz words:

You’ll never know where you’re going until you know where you’re coming from

- <Insert some cool English writer name >

May 1995 - Mocha was born 

to Brendan Eich of Netscape in 10 days

At 4 months of age - they gave it a official name: LiveScript

Still wasn't popular at school so on December 1995 changed the name to sound similar to the coolest kid in town "Java"Script

That worked !

 

Even though Javascript didn't even have basic stuff like switch statements at that time !

Marketting FTW !!

Others Browsers also wanted it NOW!

August 1996 - Now Microsoft implemented their own version of Javascript - `JScript`

November 1996, Netscape submitted JavaScript to European Computer Manufacturers Association (ECMA) International for Standardization and Technical Committee (TC39)  was formed

1997 - ES 1 - First Edition (ECMA-262)

1998 - ES 2 - ISO standardised version

1999 - ES 3  - Major release -

[Got Switch statements, Regex, Nested Functions]

During early 2000s - ES 4 ( JavaScript 2)  work began.

Netscape went down .. Microsoft didn't listen  anymore and implemented its own features .. There was chaos

...

...

Libraries like JQuery released .. concepts like ajax was introduced for first time

7 - 8 Years

Main Issue with ES4  

 

It was so ambitious that it had backward incompatible changes 

 

So some termed it as "Breaking the Web" version

2009 - But ES4 was abandoned and ES5 was released with minor features. 

Google, Opera, Mozilla vs   Microsoft, Yahoo

Team ES4

Team ES3.1

ES5 was released -  basically ES3.1

1999 - ES3

It was 2009 (nearly 10 years)

and it got a minor upgrade ? Cmon!!!

ES5 contained

In early 2000s, ES4 was supposed to have

 TC39 started work on new major release that would be a scaled back version of the ambitious ES4

This was called Harmony - because of the situation at that time

It was later known as ES6 and was released on late 2014

TC39 decided that they will do yearly release in June from now on and hence they called ES6ES2015 ← June 2015

After 2009

5 years

ES2015 - ES6 

ES2016 - ES7 

ES2017 - ES8

  • Promises
  • classes
  • modules - import, export
  • arrow functions
  • generators
  • Array method includes()
  • exponent operator:  2**3 = 8

ESNext - Ongoing next release name

  • async/await
  • Shared Array Buffers for sharing data with service workers - Basically multithreaded support (service worker)

Took 5 yrs

Stages of proposal 

Stage-0 (strawman)

Stage-1 (proposal​)​

Stage-2 (draft)

Stage-3 (candidate)

Stage-4 (Finished)

Free form ideas, must come from T39 member or T39 contributor

 

Must come from T39 member, identify potential issues, small implementation via polyfills or demos

 

Formal proposal,  proper implementation required, now this will most likely will be added to JS

 

Something like beta soft,  feedback on implementation required from users

 

Sign off and inclusion in the next JS version

ES2018  Status ?

https://github.com/tc39/proposals

  • Object rest/spread
  • Async iteration (for loops for async stuff)
  • Promise.finally
  • Dynamic import()
  • Private methods and properties for classes
  • common global for browsers, node, etc

 

and more ..............

Transpilers - Compile to lower version

Polyfills - Adds feature support by adding some extra JS code to the browser

Google Traceur,  Babel

Babel

References

http://www.benmvp.com/learning-es6-history-of-ecmascript/

https://en.wikipedia.org/wiki/ECMAScript

https://medium.com/komenco/what-to-expect-from-javascript-es2017-the-async-edition-618e28819711

Made with Slides.com