So a readable stream is an EventEmitter, but it's not recommended that you actually listen for 'data' events? (Instead you're supposed to call read()?) That seems ... counterintuitive.
Anyone know what you're supposed to do if you have code with multiple listeners for 'data' events?
If you add a listener for 'data', or call stream.resume() then it'll start flowing data as it receives it, just like v0.8 and before. The only caveat is that listening for 'end' will not automatically start the flow of data, so you do sometimes have to either call resume() or add a data listener.
In practice, it's rare that you care about the end of the stream, but not about the data coming through it, except in tests.
tl;dr Your existing programs will almost certainly Just Work.
No, it does not make sense to roll your own proxy turning read() calls into emits. You probably won't get it to go faster than it does now. Whether you use on('data') or read(), you get equivalent performance.
Given how all manner of languages, libraries and frameworks tend to massively sprawl over time, keeping the growth of core components down is a good idea.
First, it's a very nice new streams interface. Second, the core functionality can't change that much at this point if people want their old code to work. Read the discussion of streams2 and see how much thought went into avoiding breakage. http://blog.nodejs.org/2012/12/20/streams2/
´n.n.n.n´ where the dot does not represent decimal notation but a less significant variation (of the software) than the previous number. This is universally true for the first two numbers but not always for the rest.
Please don't do this; it's annoying and unnecessary. The context for untog's comment was quite clear. A lot of folks wasted time trying to clarify something for you.
This should be fairly clear given your typical version number takes the form of <integer>.<integer>.<integer> which can't possibly be mistaken for a decimal fraction.
That's not the role of the dot in ordinary decimal expansions either. There its role is to mark where the sequence transitions from positive powers of ten (to its left) to negative powers of ten (to its right).
Version 0.8 isn't version 0.80. A version number is a sequence of natural numbers, ordered lexicographically and written with periods separating elements. The version (x1, x2, ...) compares to the version (y1, y2, ...) as follows: If x1 =/= y1, then whichever of x1 and y1 is bigger decides which version is the highest. Otherwise, recurse and compare the versions (x2, x3, ...) and (y2, y3, ...).
You can think of a decimal number in the same way (well, leaving out some minor technicalities with numbers requiring infinite expansions here), but you then have to allow only numbers between 0 and 9 (inclusive) in your sequence. Let's leave out positive numbers (because otherwise we'd have to grow sequences in both directions from the decimal point, which is an annoying technicality). Then 0.12345 is simply the sequence (1, 2, 3, 4, 5), which in version notation is 0.1.2.3.4.5. On the other hand, decimal 0.80 is version 0.8.0, not version 0.80.
Really, all in all, version numbers are just decimal expansions, except that we leave out the equivalence relation that says that, for example, 10x10^1 is the same as 1x10^2. So while 0.8.0 and 0.80.0 are distinct version numbers, they collapse to the same value as real numbers (or you might want to collapse 0.80.0 to 8.0 -- it doesn't matter, that's all a matter of taste).
I'm sorry I made you angry. But leaving out versioning schemes in which 0.1 and 0.10 are in fact considered the same, and leaving out letters and stuff (which are trivially encoded in scheme you quote anyway), this is what a version number is, in its general sense.
Then again, it's not like you can store 0.1.3 as a float.
On the other hand, some version numbers can be stored as floats (kind-of, to a point): Knuth's software is versioned using approximations of irrational numbers, the more digits the later the version. TeX's current version is 3.1415926 and METAFONT's is 2.718281. Both can be stored as floats, although the respective and eventual π and e can't be.
I think you're thinking about decimal expansions, not IEEE 754 floats. Most (almost all) prospective TeX version numbers cannot be stored accurately as floats, but they can as decimal expansions.
Do you have _any_ standard to back up that claim or you're pulling that out of nowhere like the rest of the down-voter crowd? Besides, in the node.js community the semantic versioning is accepted as standard. npm is the default tool for managing packages. For reference: http://semver.org/
The claim that version numbers aren't the same as decimal expansions of real numbers? Yes, well, the link you just provided gives evidence for that. I'm not familiar with semantic versioning, but as far as I can tell, one element of it is version numbers being triples of natural numbers. Well then, at least in the case you're talking about, version numbers aren't the same as decimal expansions of real numbers.
In general, I would argue version numbers are sequences of natural numbers ordered lexicographically. That means they're not the same as decimal expansions of real numbers.
If you look at my comparison, you can see that it isn't a decimal number. I said (dropping the v prefix, that may bee to subtle for HN): 0.8 < 0.10 < 0.80. In decimal that would be: 0.8 < 0.1 < 0.8 - the comparison doesn't work this way (duh). But it isn't lexicographic sorting either. This sequence: 0.8, 0.80, 0.2, 0.20 has this lexicographic order: 0.2, 0.20, 0.8, 0.80, while a proper version ordering is to compare the stuff after the dot aka 2 < 8 < 20 < 80.
StrongLoop employs 2 node core committers, Ben Noordhuis and Bert Belder, who are also two of the most active libuv committers. (They have other folks that work there, of course, but those two also work on Node itself quite a lot.)
Joyent still is the custodian and IP owner of the Node.js project. They pay me to work on node, and also provide the project with marketing, legal, hosting, and other resources. Joyent also uses Node extensively in their technology stack, and builds tools to debug their own and their customers' production Node applications.
StrongLoop will be providing support to users of their Node Distro, which bundles v0.10 with a few battle-tested npm modules.
Joyent and StrongLoop are very different companies, and while they're not officially partners, that I'm aware of, they are certainly not competitors in any sense.
As I read it, Joyent relicenses the IP under MIT, so although they may be the IP "owner" they immediately give anyone a license to do pretty much whatever with the code.
Definitely appreciate that they pay you to work on it. Appreciate that there are new companies in the ecosystem too.
And finally someone who looks like they are going to support Node on Windows and Linux!
“For those looking for commercial support, StrongLoop (Ben Noordhuis & Bert Belder's company) has released a distribution containing node v0.10 that they will support on Windows, Mac, Red Hat/Fedora, Debian/Ubuntu and multiple cloud platforms. You can download their Node distribution here.” —http://blog.nodejs.org/2013/03/11/node-v0-10-0-stable/
Anyone know what you're supposed to do if you have code with multiple listeners for 'data' events?