Cicada looks very promising, congrats. I'm wondering why you choose to use Fly.io for the CI/CD runners, instead of using VPS / baremetal servers that are a lot cheaper? Do you need the edge features that Fly.io offers?
Congrats on the launch! I've been following Moon since a few months, seems like an interesting project.
Could you explain why any existing project using Turborepo/Nx should switch to Moonrepo? What are the advantages and disadvantages? The support for multiple languages seems like a big advantage.
I'm building Lagon, an open-source [1] runtime and platform that allows developers to run TypeScript and JavaScript serverless functions at the Edge, close to users. The runtime uses V8 Isolates and is written from scratch using Rust and rusty_v8 [2], Deno's Rust bindings for V8.
Looking at the source code [0] for Deno HTTP server, they spawn at least one thread for the server to listen and handle requests, before they are sent through a MPSC channel to the thread running the Isolate.
Great news! Feel free to DM me on Twitter (@tomlienard) if you want to chat about this, as I also want to support Next.js in the future for my runtime.
I wonder if we can build a Next.js app with this new `edge-runtime` mode, and host it on any platform that supports `edge-runtime` [0] APIs (like Cloudflare Workers (I think Vercel uses it?) and Deno Deploy).
If yes, that's truly amazing. It'll empower more and more people to run stuff at the Edge. I'm also working on an open-source alternative to the above offers [1], so I would love to be able to run and support Next.js on it.
I would love to see more in-depth explanations about Oxygen [0]. I'm currently creating a similar runtime [1] based on V8 Isolates so that would be interesting to compare.
For now, each process runs many isolates - but a single server run many processes. Cloudflare have implemented a similar mechanism [1]:
> Workers are distributed among cordons by assigning each worker a level of trust and separating low-trusted workers from those we trust more highly. As one example of this in operation: a customer who signs up for our free plan will not be scheduled in the same process as an enterprise customer. This provides some defense-in-depth in the case a zero-day security vulnerability is found in V8.
Can you give a link to this? Cloudflare (Workers) and Deno (Deploy) both uses v8 isolates for their runtimes, with I believe some significant clients running production code (huge clients like Vercel and Supabase use these solutions)
Edit:
> If you execute untrusted JavaScript and WebAssembly code in a separate process from any sensitive data, the potential impact of SSCA is greatly reduced. Through process isolation, SSCA attacks are only able to observe data that is sandboxed inside the same process along with the executing code, and not data from other processes.
I do run isolates in separate processes to prevent security issues, even if that may not be enough. Still an early prototype for now.
I’m currently building a FaaS runtime using v8 isolates, which I hope to open-source soon. That’s actually not that hard since isolates are, isolated from each other.
Performance-wise, it’s also very promising. For a simple hello world, the « cold start » (which is mostly compile time) is around 10ms, and on subsequent requests it runs in 1ms.