add VatWorker for local threads (Node.js "Worker") #1366
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds a per-vat option to run the vat code in a separate thread, sharing the process with the main (kernel) thread, sending VatDelivery and VatSyscall objects over the postMessage channel. This isn't particularly useful by itself, but it establishes the protocol for running vats in a separate process, possibly written in a different language or using a different JS engine (like XS).
This 'nodeWorker' managertype has several limitations. The shallow ones are:
Metering shouldn't be too hard to add, although we'll probably make it an option, to avoid paying the instrumented-globals penalty when we aren't using it. We also need to add proper control over vat termination (via meter exhaustion or manually).
The deeper limitation is that nodeWorkers cannot block to wait for a syscall (like
callNow
), so they cannot invoke devicesRemaining design issues:
The controller/kernel acquired a new
shutdown()
method, to use at the end of unit tests that createnodeWorker
-style workers. Withoutshutdown()
, the worker thread would keep the process from ever exiting.refs #1299
CC @dckc