Node v0.12.0 (Stable)
blog.nodejs.org
blog.nodejs.org
Anyways, I've already switched to iojs. I'm sharing part of my code between server and client and it has become increasingly painful to work around the lack of progress on the nodejs side of the network.
How? And why is it a problem with node but not iojss?
io.js uses the current version of V8. node uses an outdated one.
Makes life easier if your code is being executed in the same engine, with the same version. Everything that works in one, works on the other.
I'm using:
io.js v1.1.0
npm v2.4.1
node-gyp v1.0.2
https://github.com/iojs/io.js/issues/456#issuecomment-730639...
As a native module owner, I made mine work right away and it was work that I needed to do anyway for Node compatibility because changes in v0.11.13/15 broke me as well.
[0] https://docs.google.com/document/d/1g8JFi8T_oAE_7uAri7Njtig7...
Barring a merge back into node.js (which could still happen), I don't see myself going back for new projects.
For one, it's a fork, not a new product -- so it carries all the old development from node.
Second, it got all the best contributors from the node community.
So, while it might not be a standard yet in numbers, it's very well poised to be.
As far as "big sites", several are starting to roll out io.js deployments. Most places don't blog about every upgrade to every internal piece of infrastructure. If you're doing the SOA thing properly, you can start rolling out io.js for new services without removing the versions of node used for other stuff.
At npm, we have some io.js, lots of node 0.10, erlang, java, spidermonkey, python, redis, postgres, etc. It's pretty common to use different stuff side by side in little servers that talk to one another. Less dramatic to talk about than pretending your'e gonna make some big switch-over though.
You don't see many people using `node.http.cat()` any more, for example. And yet the community survived ;)
Open source projects generally don't follow the same versioning conventions as closed source projects, as they don't require you to fork over money for each sharp version.
Also, software can rarely ever be said to be "complete", even theoretically. Only very small programs can be written once and be said to fulfil their purpose from then on. For larger programs and systems, the needs and requirements is usually something you try to approximate with ever increasing precision. But usually needs and requirements is a moving target as well, making this task perpetual.
This conspires to make 1.0 more of a marketing decision than to map to any real "completeness". I've seen whole program rewrites in a 0.01 change of an open source project. Similarly I've seen projects bumped to 1.0 with very little ceremony simply because it's been used in production for 8 years now, and why the hell not?
We are also pleased to report that this release of Node.js has tests passing on all of our supported platforms. On the one hand, this seems obvious (what are tests for if not to verify before you release it?!), but this is actually the first release of Node.js that has operated under this constraint. Requiring that all tests pass before releasing Node.js marks an important development for the project, and is essential for building a solid path moving forward.
It's unclear what the divergence will be in the future, but the emphasis of the node.js team on stability may or may not be shared by io.js -- and in particular, this may be reflected in things like the V8 version, changes in which tend to subtly break esoteric things on different platforms. Inasmuch as the divergence represents different operating principles (i.e., enterprise-grade stability vs. bleeding edge), it may well be helpful -- and I think it's entirely conceivable that the projects will develop a symbiotic relationship moving forward.
Also, are these tests public? How many does iojs pass/fail?
Rod Vagg has a project called NAN[0] to try and allow node modules to compile across node versions.
Edit: Also, you should probably mention that you work for Joyent.
Software does tend to remain stable if you never make any changes to it, but that's not necessarily the right path.
Oh well, if nothing else, this whole io.js thing has set fire to joyent. It's nice to see something happening at last.
I guess competition is a good thing.
The last thing you want is to get some weird errors because of a bug in the latest V8 engine. Those bugs tend to never show in development, and is not found in unit testing. But will show up in production when you have thousands of people using it. And there's often nothing you can do about them, then maybe downgrading, or wait for the next Node.JS version.
Quite frankly, as a casual node user myself, I'm sticking with node v0.10 for the time being. I want to see how everything shakes out, and my site runs okay for now.
It's not like 0.x universally means "not production ready" and you know better to school them.
The version number only has a meaning within the culture of a specific project. For node, they decided to keep using the 0.x release number long after the product was mature for production use.
I hope they have enough Timothy J Fontaines.