2012.01.16, Version 0.7.0 (unstable)
* Upgrade V8 to 3.8.6
* Use GYP build system on unix (Ben Noordhuis)
* Experimenetal isolates support (Ben Noordhuis)
* Improvements to Cluster API (Andreas Madsen)
* Use isolates for internal debugger (Fedor Indutny)
* Bug fixes
Source Code: http://nodejs.org/dist/v0.7.0/node-v0.7.0.tar.gz
Windows Installer: http://nodejs.org/dist/v0.7.0/node-v0.7.0.msi
Macintosh Installer: http://nodejs.org/dist/v0.7.0/node-v0.7.0.pkg
Website: http://nodejs.org/docs/v0.7.0/
Documentation: http://nodejs.org/docs/v0.7.0/api/
Not yet[1].
Isolates are (will be) API-compatible with child processes. So you
call child_process.fork({thread:true}) and it will spawn a new isolate
instead a new process.
If isolates maintain complete separate states, and objects from one isolate are not be used in other isolates then how is an isolate different than a separate run of a process?
--
Job Board: http://jobs.nodejs.org/
Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nod...@googlegroups.com
To unsubscribe from this group, send email to
nodejs+un...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
So, isolate is sync'ed with the parent on the death, and for all other practical purposes, it is an independent process. I guess if your app forks a few processes, then you don't need to worry about taking them all down when parent exits, clean up is on the house. What use cases can you think of could be candidates for isolates?
--
Theoretically, it should be possible to pass node buffers between them
(sharing would work, too, but meh, it'd just cause race conditions).
So, maybe for tasks with much input data, much output data and even
more computation that have to be done in a new thread?
> I remember a video of Ryan Dahl mentioning a web server as an exemple where requests would run in isolate. In this exemple, using isolate prevent a process, understand the web server, to be kill in case of an uncatch error while handling a request.
There was a separate Domains proposal to try to handle that situation within a single process. What's the status with that? Does it still seem feasible?
Yes and yes. Bert is working on domains but it's not ready yet.
domains are for encapsulating and handling errors in process. you can think of it like adding a wrapper around a set of application code to treat it, and all the IO it does and it's descendant callbacks, as a transaction.
isolates are a replacement for processes as the preferred method of scaling a node application to multiple cores.
running each "transaction" in an isolate would be too costly.
-Mikeal
No.
It's not a V8 issue, the isolate runs in a thread that is created by Node.
Probably the former. It's nearly always better to leave work load
scheduling to the OS. I say 'nearly' but I can't really think of a
scenario where that's not the case.
> What use cases can you think of could be candidates for isolates?Theoretically, it should be possible to pass node buffers between them
(sharing would work, too, but meh, it'd just cause race conditions).
So, maybe for tasks with much input data, much output data and even
more computation that have to be done in a new thread?There are a number of possible strategies for safely passing data back and forth between isolates efficiently. Isolates lay the groundwork for some really interesting concurrency experiments.
i can think of many scenarios where i would like to pin tasks to
certain cpu's to allow soft real time processing by ensuring no other
processes will be contending with the cpu the node.js isolate is on...