Replies: 1 comment 1 reply
-
|
I'm not sure I fully understand the concepts of Dynamic Runtime Protocol, Static Binary Interface, and Static Declarative Layouts, but the downsides you listed about the Component model, such as unnecessary code size, runtime overhead, and complexity, are familiar to the WAMR community. These problems are indeed real and have been challenged since day one. I'm sure you already know that there are at least two root causes: 1) Components cannot access each other across sandboxes, and 2) Different languages use different memory layouts for the same type, making it unpredictable how another component model will represent specific types. In certain guest language constraints or usage scenarios, solutions superior to the current proposal certainly exist. WAMR has been continuously seeking suitable implementation forms and solutions for a component model in the embedded domain. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi WAMR team,
I am currently discussing a critical issue with the WebAssembly Component Model working group regarding the future of the Canonical ABI and WIT. I believe this conversation is vital for the IoT and embedded Wasm ecosystem that WAMR serves.
The Problem:
The current direction of the Component Model (Preview 3 + Lazy Lowering) is moving toward a "Dynamic Runtime Protocol" instead of a "Static Binary Interface (ABI)". To share high-level types (like strings or arrays) between languages, the current proposal requires guest modules to implement complex "core function imports" to negotiate memory locations at runtime.
My Concern for WAMR/IoT:
For MCU-level devices with very limited memory (KB, not GB), this dynamic negotiation adds:
My Proposal:
I am advocating for the inclusion of "Static Declarative Layouts" in the specification—allowing WIT to optionally define fixed, predictable memory structures (e.g.,
[u32 len][content]). This would allow true zero-copy or minimal-copy library sharing without the heavy dynamic logic.How you can help:
I’ve opened an issue on the Component Model repo and would value the input of the WAMR team. Your experience with real-world hardware constraints is the "reality check" the spec group needs.
Issue Link: WebAssembly/component-model#581
I'd love to hear your thoughts on whether the current "Lazy Lowering" path is sufficient for your use cases, or if a "Static Profile" is necessary for the embedded world.
Best regards,
Beta Was this translation helpful? Give feedback.
All reactions