Sam Ruby, Brendan Eich, and Jeremy Ashkenas on CoffeeScript and "JS-next"
intertwingly.net
intertwingly.net
All that's missing is a layer of tooling in modern browsers (Chrome, FF) that make it so you can look at CoffeeScript as if it were in the browser, and the abstraction would be pretty complete. You'll still have to precompile the stuff on your server, which sucks, but practically speaking we're not talking about anything that can't be clean and easy to use without appropriate tools. Generally speaking client side code is short and sweet, so running your system in development mode where the script compiles on the client and doing a full compile server side for production mode isn't that far off from doing a debug vs release build in the world of native apps.
I believe in evolving the core JavaScript to be more flexible, and then innovate at a level above JavaScript, like CoffeeScript (or my own http://mascaraengine.com).
ECMA should not so much focus on building more powerful abstractions (like classes, packages) into the core language, but rather on making the core more flexible. E.g. adding continuations (if possible) would be much more valuable than adding classes, because classes can already be emulated at a higher level.
Stronger support in browsers for debugging would help everyone.
All the major browser JS implementations are moving towards the same type of VM. It's just a matter of time before one of the browsers adds support for running bytecode from a <script> tag.
The web moves forward by progressive enhancement, not by grand sweeping redesigns. So I think "JS-next" will be motivated not by committees and specifications but by incremental attempts to expose technology that's already in place (modern browsers' fast JS VMs).
Using something like LLVM IR would be great, and that's what Google is doing with native client.
If we had some sort of standardized support for "original source pointers" then we could have any number of languages in the browser as first-class citizens. They would just use minified JS as their compiler target. Development and debugging could be entirely in the new languages.
This would be a relatively small change, but it would open up innumerable opportunities.
1: http://msdn.microsoft.com/en-us/library/34dk387t(VS.71).aspx
1. Most developers don't grok JavaScript. The object model (prototype-based) really throws off a lot of folks, and the fact that JavaScript can't seem to make up its mind if it's classical or prototypical doesn't help. There are numerous other problems as well made evident, and worse, by the lousy code you see floating around.
2. Fixing and improving JavaScript moves at a glacial pace due to the rate of turnover in browser versions. Chrome has it right insofar that they make upgrades automatic, easy and transparent. As always IE is a major problem, and MS' refusal to adopt a Chrome-style upgrade process isn't helping any.
Some previous discussion and counterpoints here: http://www.reddit.com/r/programming/comments/eb3xt/so_you_ki...
C# seems to have pulled this off over the years. It keeps taking ideas from other languages (I'm mostly aware of the Ruby ones) and leaping forwards. It's just a shame there's a stigma attached to it.
That single-vendor status, and the identity and reputation of the particular vendor, account for a lot of the stigma, in my opinion. This in spite of C#'s technical merits and more responsive evolution compared to, say, Java (which is also all too clearly single-vendor now, if it wasn't always).
JS evolution is on the uptick, but can Ecma TC39 keep pace while specifying the changes correctly and clearly?
That's a fantastic way of approaching web standardization.