The next major upgrade to the JavaScript platform, tentatively named ECMAScript 6, is set to feature modularisation along with other improvements aimed at providing developers with more convenience and security.

Detailed this week in a presentation at the HTML5 Dev Conf event in San Francisco, the ECMAScript upgrade is being eyed for a 2013 release, said presenter David Herman, a senior researcher at Mozilla Research who has participated in the development of the specification at ECMA International. Focusing on JavaScript at an HTML5 technical conference makes perfect sense,  Herman explained. "The two are pretty much impossible to separate. HTML5 is really about the new APIs and capabilities of the web platform and JavaScript is the language of the Web platform, so you can't use HTML5 without JavaScript and JavaScript is useless without the Web APIs, so the two need each other."

Modularisation enables reuse of JavaScript code so developers can share what they have written for reuse in other applications. "I think it's safe to say that the module system is the most important feature in the next version of JavaScript," Herman said. "Modules make it possible for people to share code."

Binary data support

The roadmap for JavaScript improvements is "pretty exciting," said developer Ishika Paul, senior software engineer at Paul lauded improvements such as modularisation, and she links JavaScript's evolution to HTML5 and the new generation of the Web.

Also eyed for version 6 is binary data support, which enables activities such as reading a binary file or binary network protocol. "You could do things like read the contents of a PDF file" without being forced to represent items as strings, said Herman. Binary data capabilities are useful in data-intensive applications and can provide memory and possibly time savings, he added.

Private key capabilities in the ECMAScript upgrade can enhance security for developers, who will be able to hide information to prevent malicious or unintentional intrusion into parts of a program, said Herman. "It's a basic engineering construct that you see in most programming languages, and JavaScript really doesn't have much for doing that."  


Performance benefits

A new generators capability in version 6 will make it easier to express a sequence of events in web programs. Generators boost asynchronous programs, Herman said. Another new capability, string interpolation, will enable variables to be embedded inside a string. Adding a sanitiser to a string prevents the injection of malicious code. ECMAScript 6 will gain additional programming conveniences, such as syntax improvements, as well.  

ECMA is considering including classes in ECMAScript at some point, which would provide engineering benefits for structuring a program. Additionally, a proxies capability is being eyed for a future ECMAScript implementation that would let developers "play with the underlying semantics of JavaScript objects," Herman said. This can be useful for frameworks experimenting with different styles of software engineering or re-implementing existing Web APIs such as DOM (Document Object Model).  Mozilla's dom.js project re-implements the DOM library in JavaScript instead of C++, using proxies, said Herman. "There could be real performance benefits."

New features of JavaScript can be added via a transpiler to browsers that don't officially support them. Mozilla has a project called Narcissus that could feature a transpiler but does not yet do so.