Node v0.10.23 (Stable)
blog.nodejs.org
blog.nodejs.org
Played around a bit with the generator functions and being able to replace straight callbacks with yields made the code so much cleaner and more readable.
Unfortunately, interoperability with callback/promise based libraries is a bit clunky.
Here's a talk my co-founder Alex gave on it: http://youtu.be/pmyDJnEza6A
- June 2014, Editorially complete (STH: we said June in the meeting, but July makes more sense, since we don't have to submit to the GA until September, IIUC)
- December 2014, ECMA approval
https://github.com/rwaldron/tc39-notes/blob/48c5d285bf8bf0c4...
Furthermore, where I work we do lots of high performance Javascript code and some of the conventions in the code CoffeeScript outputs is extremely wasteful when performing lots of calculations, such as calcing matrix multiplications per requestAnimationFrame. It simply produces far too many unnecessary expressions to evaluate. I would not be surprised if it reduces frame rate to half or a quarter of what you can achieve with pure JavaScript.
Yes, the JavaScript CoffeeScript produces often uses a more performant structure here and there than what many developers would naturally code. However most CoffeeScripters I've met have never really learned JavaScript well enough to understand how many cycles it throws away unnecessarily.
If someone writes CoffeeScript code that doesn't have to be fast, then more power to them for choosing a language they are happy with and feel productive. However, if they're writing a single page web app in CoffeeScript and wondering why it is dog-ass slow, CoffeeScript is going to be one of the contributing factors. It probably won't be the biggest factor, but it certainly won't be negligible.
Besides, I thought we were talking about server-side JS, where a native CoffeeScript implementation is a completely reasonable proposition.
[1] https://github.com/brixen/poetics [2] http://benchmarksgame.alioth.debian.org/u32/which-programs-a...
"In 1999, Slackware's release number jumped from 4 to 7. Patrick Volkerding explained this as a marketing effort to show that Slackware was as up-to-date as other Linux distributions, many of which had release numbers of 6 at the time, and Volkerding expected them to reach version 7 by the time of the jump."
While I support a de facto standard around the meaning of version numbers, you must judge a project's version number by the versioning rules the development team communicates. By the Semantic Versioning Specification's own guidelines, Node.js should be at least at v1.0.0, but the developers have decided against it. Therefore, when judging the stability and maturity of Node.js by the version number alone, you can only compare it to previous releases of Node.js.
For example, the streams API hasn't been deemed stable. The specific build is stable, but it's possible that the interface may radically change in the near future.
Have they at least committed to some kind of date range for a stable API?
It's kind of silly to worry about because all the various node.js libraries that so many people depend upon are either weekend fads that get abandoned, or moving at the same speeds and likewise breaking compatibility.
The team claims to have turned the corner. relevant comment from @isaacs: https://www.youtube.com/watch?v=82hJbjqbIt4#t=120
> Have they at least committed to some kind of date range for a stable API?
@isaacs mentioned 2014 once. From the same talk, https://www.youtube.com/watch?v=82hJbjqbIt4#t=730
It's still handy for Grunt and Bower though!
You do need a stable base to build upon. Not quicksand.
http://nodejs.org/api/documentation.html
While semver is great for getting an overview of the stability of the API interface for a project, I think their guide is a great complement in that it helps people determine the stability of specific interfaces that someone might want to use. This is increasingly valuable as the API surface of a project becomes quite large (which is common for a framework).