-
Notifications
You must be signed in to change notification settings - Fork 212
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
how to get to swingset-on-XS #2107
Comments
Here are some notes on what some of the nodes mean, not complete: harden
module loading
CommonJSAll of our own code is written in an ESM format, however our
(@kriskowal please confirm) The Endo make-archive tool knows how to parse both ESM and CommonJS for their dependencies, so it is capable of creating our kernel/vat bundles out of modules with both formats. However to actually load those, the runtime code ( |
@kriskowal gave me a big brain-dump of the First off, the ultimate plan looks like this: We'll have one kernel process, X xs-vat-worker processes, and Y actual vats. The vats can share a process to reduce the number of processes (performance). Vats will not share a process when we're unwilling to let them be mutually vulnerable to platform bugs like SES breaches, engine-level memory corruption, resource-exhaustion attacks that our metering doesn't catch, and Spectre/Meltdown -style confidentiality violations. We also use multiple processes to enable parallelization of reloads, since we expect each process to be single-threaded. The protocol spoken between the kernel process and each In this plan, each vat has a separate the immediate planAs a step towards that ultimate plan, we're starting with a simpler version that replaces the "dispatch unit" with a separate library (written in Node.js, rather than XS). Each vat gets its own XS-based process, with exactly one XSMachine each. We draw the process boundaries one level lower in the hierarchy. The XS process still uses netstring-framed commands on pipes (listens on fd3, emits on fd4), but these operate at a lower level than the kernel-to-worker protocol described above. The commands are roughly:
In addition, the process can be started with an argument that loads the heap from a named snapshot file, rather than starting with an empty environment. The
Then we'll probably write an
This library will accept kernel delivery objects, but will invoke the |
fixed in #2225
|
Experiment: 57 SwingSet tests fail with
|
@dckc @kriskowal and I had a meeting last week to figure out the steps necessary to get our system using XS in a meaningful way. Here's the dependency diagram we assembled from that meeting. I'm not 100% sure of the syntax, so I intend to rewrite it with something more obvious. In this image, I believe a link from B -> A means "A depends upon B", and a parallel link from C -> A which uses a dotted line means "A depends upon one of (B or C)". Also the bold ovals mark the path figured should be the shortest one.
original source
The text was updated successfully, but these errors were encountered: