Stream: general

Topic: Built a Wasmtime-based runtime


view this post on Zulip gianiac (May 18 2026 at 14:43):

Hi, I'm new around here! I've been building a small runtime for distributed applications in Rust, based on WASM with Wasmtime as the core component: https://github.com/GianIac/numax

I would be really happy if anyone could give me their opinion on this and maybe provide me with some feedback !

view this post on Zulip Till Schneidereit (May 19 2026 at 09:58):

Hi gianiac, thank you for sharing! Please don't hesitate to report any issues you're running into, or ask questions here :slight_smile:

view this post on Zulip Till Schneidereit (May 19 2026 at 10:00):

and to ask one myself: what made you go with your own ABI instead of using the Component Model and WIT for your APIs? Was there something you need that's not expressible with the Component Model? Because otherwise it seems like that'd give you a lot of things for free (and across a wide range of languages) that you currently have to do manually

view this post on Zulip gianiac (May 19 2026 at 10:39):

Till Schneidereit ha scritto:

and to ask one myself: what made you go with your own ABI instead of using the Component Model and WIT for your APIs? Was there something you need that's not expressible with the Component Model? Because otherwise it seems like that'd give you a lot of things for free (and across a wide range of languages) that you currently have to do manually

Hi Till, thanks for the question and honestly, it's one I hadn't considered at all when designing the host API. I went with the raw ptr/len ABI because it was the most straightforward path to get things working, especially since guest modules use #![no_std] and the Component Model toolchain for that target is still rough.

But your point is interesting enough that I'd like to ask directly: how would you approach it? Given that numax has a custom semantic layer on top (CRDT ops that trigger async broadcast to peers), where would you draw the line between what WIT can express and what still needs to live in the runtime? And would you start with WIT as documentation/spec first, keeping the current ABI underneath, or go straight for a full Component Model guest?

view this post on Zulip Till Schneidereit (May 19 2026 at 21:56):

given that you're using wasmtime as the runtime, I think going straight to Component Model might be easiest, honestly. On where to draw the line, I don't think I have a particularly well informed opinion. Maybe providing the CRDT ops as WIT imports, with the broadcasting on the host side? In principle it might be possible to do that in guest as well, but at least I'd recommend doing it in a different component, because otherwise it has to exist for all language toolchains—which is exactly what you'd ideally avoid

view this post on Zulip gianiac (May 20 2026 at 18:18):

Thanks for your input; it was a very fruitful exchange. I'll definitely keep it in mind for future releases!


Last updated: Jun 01 2026 at 09:49 UTC