Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Node version 0.8.0
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  13 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Isaac Schlueter  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 11:01 am
From: Isaac Schlueter <i...@izs.me>
Date: Mon, 25 Jun 2012 08:01:13 -0700
Local: Mon, Jun 25 2012 11:01 am
Subject: Node version 0.8.0
I am thrilled to announce the arrival of a new stable version of Node.js.

Compared with the v0.6 releases of Node, this release brings
significant improvements in many key performance metrics, as well as
cleanup in several core APIs, and the addition of new debugging
features.

## tl;dr

With version 0.8.0:

1. Node got a lot faster.
2. Node got more stable.
3. You can do stuff with file descriptors again.
4. The [cluster module](http://nodejs.org/api/cluster.html) is much
more awesome.
5. The [domain module](http://nodejs.org/api/domain.html) was added.
6. The repl is better.
7. The build system changed from waf to gyp.
8. [Some other stuff changed,
too.](https://github.com/joyent/node/wiki/API-changes-between-v0.6-and-v0.8)
9. Scroll to the bottom for the links to install it.

## Performance

This version brings a few key enhancements in V8 and libuv that result
in significantly improved throughput.

All of these benchmarks were run on my OS X laptop, but the results
are typical of what we're seeing on SmartOS, Linux, and Windows.

```
# io.js

# 0.6.19, writes
Wrote 1024 byte buffers: 19.428793471925395 mB/s
Wrote 4096 byte buffers: 59.737156511350065 mB/s
Wrote 16384 byte buffers: 83.97010664203543 mB/s
Wrote 65536 byte buffers: 97.4184120798831 mB/s

# 0.8.0, writes
Wrote 1024 byte buffers: 61.236987140232706 mB/s
Wrote 4096 byte buffers: 109.05125408942203 mB/s
Wrote 16384 byte buffers: 182.18254691200585 mB/s
Wrote 65536 byte buffers: 181.91740949608877 mB/s

# v0.6.19, reads
Read 1024 byte buffers: 29.96883241428914 mB/s
Read 4096 byte buffers: 62.34413965087282 mB/s
Read 16384 byte buffers: 165.7550140891762 mB/s
Read 65536 byte buffers: 266.73779674579885 mB/s

# v0.8.0, reads
Read 1024 byte buffers: 57.63688760806916 mB/s
Read 4096 byte buffers: 136.7801942278758 mB/s
Read 16384 byte buffers: 244.8579823702253 mB/s
Read 65536 byte buffers: 302.2974607013301 mB/s
```

The difference is not small. If you are writing network programs with
node, and pushing a lot of traffic, you will notice this improvement.

The speed of reading files got quite a bit faster as well:

```
# v0.6.19
read the file 110948 times (higher is better)
90141.32 ns per read (lower is better)
11093.69 reads per sec (higher is better)

# v0.8.0
read the file 158193 times (higher is better)
63217.16 ns per read (lower is better)
15818.48 reads per sec (higher is better)
```

And of course, the ubiquitous 'hello, world' http server benchmark got
significantly faster, especially for large message sizes:

```
$ TYPE=bytes LENGTH=123 bash benchmark/http.sh  2>&1 | grep Req
# 0.6.19
Requests per second:    3317.24 [#/sec] (mean)
# 0.8.0
Requests per second:    3795.34 [#/sec] (mean)

$ TYPE=bytes LENGTH=1024 bash benchmark/http.sh  2>&1 | grep Req
# v0.6.19
Requests per second:    3258.42 [#/sec] (mean)
# 0.8.0
Requests per second:    3585.62 [#/sec] (mean)

$ TYPE=bytes LENGTH=123456 bash benchmark/http.sh  2>&1 | grep Req
# v0.6.19
Requests per second:    218.51 [#/sec] (mean)
# 0.8.0
Requests per second:    749.17 [#/sec] (mean)
```

The difference with Unicode responses is even more pronounced:

```
$ TYPE=unicode LENGTH=1024 bash benchmark/http.sh  2>&1 | grep Req
# v0.6.19
Requests per second:    3228.23 [#/sec] (mean)
# v0.8.0
Requests per second:    3317.60 [#/sec] (mean)

$ TYPE=unicode LENGTH=12345 bash benchmark/http.sh  2>&1 | grep Req
# v0.6.19
Requests per second:    1703.96 [#/sec] (mean)
# v0.8.0
Requests per second:    2431.61 [#/sec] (mean)

$ TYPE=unicode LENGTH=55555 bash benchmark/http.sh  2>&1 | grep Req
#v0.6.19
Requests per second:    161.65 [#/sec] (mean)
#v0.8.0
Requests per second:    980.38 [#/sec] (mean)

$ TYPE=unicode LENGTH=99999 bash benchmark/http.sh  2>&1 | grep Req
# v0.6.19
^C  # lost patience after a few hours
# v0.8.0
Requests per second:    252.69 [#/sec] (mean)
```

The more bytes you're pushing, and the more work you're doing, the
more win you'll see with node 0.8 over 0.6.

The vast majority of the performance boost is due to improvements in
V8. They've been very responsive to the needs of the Node.js project.
A lot of Node's success is due to being built on such a stellar VM.

## Build System

Since its inception Node has used the WAF build system which is a
Python based system similar to SCons. The Chrome project recently
changed to the GYP meta-build system from SCons. GYP generates
Makefiles, Visual Studio project files, or XCode files depending on
the target. V8, being part of the Chrome project, now defines its
build in GYP. By using GYP, Node is able to:

- integrate with the optimal build system on all platforms,
- easily able to integrate V8's build process into its own, and
- define its compilation declaratively for better manageability

GYP was used already in Node v0.6 to build on Windows, but now it
defines the build on all platforms. Node is still in the process of
migrating external addon modules to GYP, and node-gyp is included with
npm. In future releases, node-waf will be officially deprecated. If
you are currently using a wscript in your addon, please migrate to gyp
as soon as possible.

## Stabler

The transition from libev and libeio to libuv in 0.6 was somewhat
destabilizing for many node internals. The gambit paid off: libuv is
the obvious choice in cross-platform asynchronous IO libraries, and
Node.js is impressively performant on both Windows and Unix. But it
made the transition from 0.4 to 0.6 was very rocky for a lot of users.
Libuv wasn't as mature as node, and it showed in those early releases.

At this point, with very few exceptions, if your v0.6 program doesn't
run on v0.8, it should be easy and obvious to make whatever changes
are necessary. Libuv has come a very long way, and Node 0.8 is a
simpler and more efficient machine as a result.

See the [migration
wiki](https://github.com/joyent/node/wiki/API-changes-between-v0.6-and-v0.8)
for details on the specific APIs that changed.

## The Return of File Descriptors

In Node 0.4, there was a `listenFD` method that servers could use to
listen on a specific file descriptor that was already bound to a
socket or port. In 0.6, that functionality went away, largely because
it was very Unix-specific, and couldn't be easily made to work with
the new cross-platform libuv base.

Since the most common use case for listenFD was as a method for having
servers in multiple node processes share the same underlying handle,
the `cluster` module was added in its place. However, this still left
a lot of use cases unaddressed, and was a reason why some people could
not use node 0.6 for their programs.

In 0.8, we've replaced this functionality, as `server.listen({ fd: number })`.

The other feature in node 0.4 that got dropped in 0.6 was the ability
to pass arbitrary file descriptors as a child process's stdio, using
the `customFds` array. In Node 0.6, `customFds` could be used to
inherit the parent's stdio handles, but not to pass arbitrary handles
or file descriptors to the child's stdio. Also, there was never a way
to pass more than the standard `in, out, err` trio, so programs that
expected FD 4 to be opened in some specific way were out of luck.

In 0.8, we've added the `stdio` array on the `child_process.spawn`
options. Pass as many file descriptors, handles, etc. as you like, and
the child process will see them as already-opened FDs.

## More Powerful Cluster

The cluster module in 0.8 is so much improved over 0.6, it's basically
a complete rewrite. The API is mostly backwards compatible, but not
entirely. (See the [migration
wiki](https://github.com/joyent/node/wiki/API-changes-between-v0.6-and-v0.8)
for details.)

Barring these very minor API changes, if you were using cluster in
0.6, then your program will still work, but it'll be faster and more
well-behaved now. And if you aren't taking advantage of the new
features in 0.8's cluster, you're really missing out.

There's too much even to do it justice here. Go read [the API
docs](http://nodejs.org/api/cluster.html).

## Domains

The original idea for Domains was a way to join multiple different IO
actions, so that you can have some context when an error occurs.

Since Ryan discussed the feature with node users at NodeConf Summer
Camp last year, the domains feature has gone through many revisions.
The problem is fairly well understood, but most attempts to solve it
resulted in serious performance regressions, or uncovered difficult
edge cases.

What we ended up with in 0.8 is a very stripped-down version of this
idea. It's entirely opt-in, with minimal performance impact when it's
used (and none when it isn't). There are a lot of examples in [the API
documentation](http://nodejs.org/api/domain.html), so check them out,
and start handling your crashes smarter.

The domain module is still experimental. We are looking forward to
your feedback, so please use it and let us know what you think.

## Repl, Readline, TTY

The Repl, Readline, and TTY modules have all had a major facelift. The
interfaces between these three modules are cleaned up and refactored,
removing a lot of common pain points and making it easier to use for
debugging your programs.

It may seem minor at times, but a good repl dramatically increases the
quality of the overall experience. My personal favorites are:

1. Typing `fs` or `net` or `path` will automatically load the module.
2. Typing `npm install ...` will give you a helpful message.
3. It doesn't do that stupid thing where long lines wrap and then the
backspace makes it get all confused and crazy.  Instead of that, it
does the right thing.

## Looking Forward

Like other even-numbered version families before it, v0.8 will
maintain API and ABI stability throughout its lifetime.

The v0.6 release ...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Isaac Schlueter  
View profile  
 More options Jun 25 2012, 11:19 am
From: Isaac Schlueter <i...@izs.me>
Date: Mon, 25 Jun 2012 08:19:34 -0700
Local: Mon, Jun 25 2012 11:19 am
Subject: Re: Node version 0.8.0
Whoops, I had to make a very late change after drafting the email, and
forgot to update the shasums here.  These are the correct values:

0786bcda79bd651b9981682527a1bbabe0250700  node-v0.8.0-x86.msi
6035d6d59304add21e462cd7eb89491570b4970d  node-v0.8.0.pkg
5171fb46fbfee5ac7129c4b17207a3f35a1f57e8  node-v0.8.0.tar.gz
742100a4ee4cd4d190031a30d9b22b2b69b6872e  node.exe
52d20d285e9aec53043af0843f5ecc4153210693  node.exp
6d67a64274d844548cc6099c76181a50feafc233  node.lib
aa2af08d5ab869e6c8b67f01ed67129c1cad8bce  node.pdb
c4d4164d4f78ea68e0e2a85b96f9b355f3b1df8b  x64/node-v0.8.0-x64.msi
fc07b475d943f7681e1904d6d7d666b41874a6fa  x64/node.exe
895002806dfb6d5bb141ef0f43cad3b540a4ff6c  x64/node.exp
686c60d5ae5dad7fcffcdc88049c63b2cd23cffc  x64/node.lib
75549cffab0c11107348a66ab0d94d4897bd6a27  x64/node.pdb

Hopefully that didn't confuse any bit-checkers :)

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Thomas Fritz  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 11:23 am
From: Thomas Fritz <fritz...@gmail.com>
Date: Mon, 25 Jun 2012 08:23:30 -0700 (PDT)
Local: Mon, Jun 25 2012 11:23 am
Subject: Re: Node version 0.8.0

Great Release.
Big thanks to all developers for their hard work making this release
possible.
Now, after realeasing - go home and get yourself a big fresh bottle of
beer!!

Kind regards

Am Montag, 25. Juni 2012 17:01:13 UTC+2 schrieb Isaac Schlueter:

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Ben Vanik  
View profile  
 More options Jun 25 2012, 12:55 pm
From: Ben Vanik <ben.va...@gmail.com>
Date: Mon, 25 Jun 2012 09:55:32 -0700 (PDT)
Local: Mon, Jun 25 2012 12:55 pm
Subject: Re: Node version 0.8.0

Good stuff. I'm particularly excited to see where the Buffer/TypedArray
transition leads, as I'm doing a lot of code sharing between browser JS and
node and have ended up with a lot of nasty Buffer/TypedArray conversions.

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Mark Hahn  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 1:34 pm
From: Mark Hahn <m...@hahnca.com>
Date: Mon, 25 Jun 2012 10:34:32 -0700
Local: Mon, Jun 25 2012 1:34 pm
Subject: Re: [nodejs] Re: Node version 0.8.0

What is the best way to install 0.8 on ubuntu linux?

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Mark Hahn  
View profile  
 More options Jun 25 2012, 1:36 pm
From: Mark Hahn <m...@hahnca.com>
Date: Mon, 25 Jun 2012 10:36:54 -0700 (PDT)
Local: Mon, Jun 25 2012 1:36 pm
Subject: Re: Node version 0.8.0

What is the best way to install 0.8 on ubuntu linux?

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Eldar  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 1:38 pm
From: Eldar <eldar...@gmail.com>
Date: Mon, 25 Jun 2012 10:38:12 -0700 (PDT)
Local: Mon, Jun 25 2012 1:38 pm
Subject: Re: [nodejs] Re: Node version 0.8.0

The best way to install node is https://github.com/visionmedia/n

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Eldar  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 1:43 pm
From: Eldar <eldar...@gmail.com>
Date: Mon, 25 Jun 2012 10:43:35 -0700 (PDT)
Local: Mon, Jun 25 2012 1:43 pm
Subject: Re: Node version 0.8.0

Exactly this - https://github.com/visionmedia/n.

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Mark Hahn  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 1:46 pm
From: Mark Hahn <m...@hahnca.com>
Date: Mon, 25 Jun 2012 10:46:33 -0700
Local: Mon, Jun 25 2012 1:46 pm
Subject: Re: [nodejs] Re: Node version 0.8.0

Does n work the same way as nvm?

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Mark Hahn  
View profile  
 More options Jun 25 2012, 1:48 pm
From: Mark Hahn <m...@hahnca.com>
Date: Mon, 25 Jun 2012 10:48:39 -0700
Local: Mon, Jun 25 2012 1:48 pm
Subject: Re: [nodejs] Re: Node version 0.8.0

FYI, I did `n stable` and got 0.6.18.

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Mark Hahn  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 1:53 pm
From: Mark Hahn <m...@hahnca.com>
Date: Mon, 25 Jun 2012 10:53:44 -0700
Local: Mon, Jun 25 2012 1:53 pm
Subject: Re: [nodejs] Re: Node version 0.8.0

I'll switch to n github issues now but my latest problem is that I canceled
the 0.6.18 install and now I can't get rid of it.  `n rm 0.6.18` silently
fails.

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Tim Caswell  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 1:57 pm
From: Tim Caswell <t...@creationix.com>
Date: Mon, 25 Jun 2012 12:57:25 -0500
Local: Mon, Jun 25 2012 1:57 pm
Subject: Re: [nodejs] Re: Node version 0.8.0

https://twitter.com/creationix/status/217306462265946112

There are many, n, nvm, nave, use whatever you feel comfortable with.

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Oleg Efimov (Sannis)  
View profile   Translate to Translated (View Original)
 More options Jun 25 2012, 3:13 pm
From: "Oleg Efimov (Sannis)" <efimo...@gmail.com>
Date: Mon, 25 Jun 2012 12:13:30 -0700 (PDT)
Local: Mon, Jun 25 2012 3:13 pm
Subject: Re: Node version 0.8.0

Thanks, Node team!

My 50 ¢:
https://github.com/joyent/node/wiki/How-to-migrate-from-ev_io_*-to-uv...

понедельник, 25 июня 2012 г., 19:01:13 UTC+4 пользователь Isaac Schlueter
написал:

...

read more »


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »