Browser and JavaScript engines and versions

There are many browsers but there is only a handset of rendering engines and these are the base for all browsers. This is of course good to keep in mind when testing for browser compability.

These are the main rendering engines used today:

And these are the JavaScript engines:

JavaScript (EcmaScript) versions

JavaScript is a modern programming language that was misunderstood for many years. Douglas Crockford wrote the article JavaScript: The World's Most Misunderstood Programming Language in 2011 reasoning around why he thinks this has been the case. The official name for JavaScript is actually EcmaScript, often abbreviated ES.

EcmaScript 5.1 (ES5) was a main update that was released in 2011 that enhanced JavsScript in many ways. I'm using the added Array functions all the time and getters/setters are used in the data binding implementation. Object.create is used easily implement proper inheritance and Object.keys makes it possible to list the properties of an object.

It is safe to use most ES5 features if you're not concerned with old browers like IE6/7/8. The combined market share for IE6/7/8 varies from time to time but is currently (July 2015) around 5%. The cost for supporting this 5% of users is dramatic. You should probably assume that JavaScript 5.1 is supported by your users browser unless you have an un-proportional large amount of users sitting with old browsers.

EcmaScript Edition 6 (ES6), also called Harmony was released in June 2015. es6-features.org provides a good summary of the new features. Implementation of Harmony is far from complete in all browsers. These features must be used with care for some time to come. You can use Traceur iframe you want to start using ES6 already now.

Features for EcmaScript 7 were listed already before EcmaScript 6 was apporved. One feature I'm looking forward to is Object.observe. It will make data-binding a breeze.