HTML5 Zone is brought to you in partnership with:

Dr. Axel Rauschmayer is a freelance software engineer, blogger and educator, located in Munich, Germany. Axel is a DZone MVB and is not an employee of DZone and has posted 246 posts at DZone. You can read more from them at their website. View Full User Profile

Google’s Traceur: compile ECMAScript.next to JavaScript on the fly

05.07.2011
| 3563 views |
  • submit to reddit
Google’s Traceur allows you to use ECMAScript.next features right now: Write ECMAScript.next code and use a special script type. Then the first script you load is Traceur which ensures that all your new code is compiled to JavaScript on the fly.

Getting started
<html>
  <head>
    <script src="http://traceur-compiler.googlecode.com/.../traceur.js"
        type="text/javascript"></script> 
    <script src="http://traceur-compiler.googlecode.com/.../bootstrap.js"
        type="text/javascript"></script>
    <script type="text/traceur">
        // Your ECMAScript.next code goes here
    </script>
  </head>
  ...
</html>

Supported features

Highlights (details: see language features):

  • Inheritance: classes, traits
  • Modules
  • Iterators, for-each loop, generators, deferred functions
  • Block-scoped let bindings
  • Destructuring assignment
  • Parameter handling: default values, rest parameters, spread operator

Caveats

Brendan Eich mentioned Traceur in his JSConf.US presentation. And he was unhappy about a few details. You should also read Alex Russell’s response to his complaints.

  • The project raises concerns about openwashing: Is Google’s actual agenda behind this open source project to control where ECMAScript.next is going? Probably not, but the following points set a tone that is slightly off.
  • Traceur has been created in secret, without involving TC39, and then presented for maximum “wow” effect at JSConf (Eich calls this “delayed open source” which can be a means of control). In contrast, Mozilla’s Narcissus has always been developed in the open, to foster discussion with the community.
  • Some features are different from current ES.next proposals. This risks forking the community.
  • The JSConf Traceur slides are Chrome-only, neither (mobile) Safari nor Firefox works. Alex Russell’s explanation: “As for the slides, that looks to be a bug in Traceur support for FF which we’re still sorting through.” But the problem exists on Safari, too, which does not bode well for cross-browser compatibility.

Let’s hope these are just initial issues, because Traceur is a cool project. This kind of on-the-fly compiling is the way to ensure a smooth transition from ECMAScript 5 to ECMAScript.next.

Related reading

References
Published at DZone with permission of Axel Rauschmayer, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)