Discussion
Edge.js: Running Node apps inside a WebAssembly Sandbox
syrusakbary: Hi HN!I'm Syrus, from Wasmer. We built Edge.js in a few weeks after different trials trying to bring Node.js to the Edge. We used AI and Codex heavily for this project, as otherwise the timeline would have spanned to a year plus to develop.The summary of this announcement is that Edge.js: * Runs using WebAssembly when in `--safe` mode * It's fully compatible with Node.js (passing all their spec tests for non-VM modules) * It has a pluggable JS engine architecture: can work with V8, Javascript, SpiderMonkey, QuickJS, Hermes, etc. Super happy to answer any questions you may have!
larsnystrom: Maybe I’m just dense, but it says the fs module is fully supported, so what happens when I try to read a file from disk if the app is fully sandboxed?
syrusakbary: Only the current working directory will be exposed/mounted to the runtime (we do this to facilitate the DX when running local files without requiring the user to add extra flags)
jonny_eh: > * Runs using WebAssembly when in `--safe` modeWhy is safe mode opt-in?
willquack: Awesome project!Dumb question: could you run this in frontend js using the browser's js engine and wasm environment similar to WebContainers? Maybe `fs` is just in-memory, and some things like forking are disabled. It'd be cool to have "nodejs" in the web!
yuri91: I work on a project that does exactly that (and more): https://browserpod.io/.Currently it supports Node, but we plan to add Python, Ruby, git, and more.You can see it in action in this demo: https://vitedemo.browserpod.ioMore info here: https://labs.leaningtech.com/blog/browserpod-10Ah and kudos to Syrus and his team for this release. Edge.js's architecture seems to have many similarities with BrowserPod. I see it as proof that we are both going in the right direction!
syrusakbary: It’s not a dumb question at all.And yes, it will allow running Node.js apps fully on the browser, in a way that’s more compatible than any other alternative!Stay tuned!
benatkin: The graphs that show Node.js compatibility high and above that of Deno and Bun are misleading. Nominally supporting APIs and being proven to run entire Node.js applications and libraries in production are different things. Also, Deno and Bun have been listening to user demand, whereas this is implementing everything regardless of user demand. It's more of a decision than it is a great achievement, like it's framed as.
apignotti: Do you have any specific test case that you would consider "very challenging" on the compatibility side? I'd be curious to check if BrowserPod can support that already.
pscanf: Very cool project!Question regarding the pluggable js engine: I have an electron app where I'm currently using QuickJS to run LLM-generated code. Would edge.js be able (theoretically) to use electron's v8 to get a "sanboxed within electron" execution environment?
MillionOClock: Very interesting! On what platforms can this run? If it can run on iOS, how would you handle attempts to access to the file system or networking, is this already wired in somehow? If not is it easy to add custom handlers to handle these actions?