Stream: general

Topic: Cannonical ABI Questions


view this post on Zulip Nathan Bedell (Aug 02 2025 at 20:49):

Hey all, I hope this is a good place to ask this question.

I want to learn more about the component model and the canonical ABI with a goal of eventually being able to contribute to some of the great WASM projects you all are working on, but I'm having some trouble grokking some of the basic concepts.

Presumably this is the canonical documentation for the CABI (https://github.com/WebAssembly/component-model/blob/main/design/mvp/CanonicalABI.md), but even just looking at the first few sections of these docs it seems there is a lot of important documentation I'm missing. For instance:

Most Canonical ABI definitions depend on some ambient information which is established by the canon lift- or canon lower-defined function that is being called

What actually are canon lift and canon lower? Are these supposed to be re-write rules, higher order functions, something else entirely? Also, what do "lifting" and "lowering" even mean at a high-level? I see there are other canon X definitions lower on in the document. Does canon by itself have any particular significance, or is it just a label for whatever kind of thing canon X is?

Am I starting off at the wrong place trying to understand this? It just feels like I'm missing a lot of context here. Perhaps there's some other documentation I should try to understand first?

Appreciate any help. :slight_smile:

Repository for design and specification of the Component Model - WebAssembly/component-model

view this post on Zulip Dave Bakker (badeend) (Aug 03 2025 at 08:30):

In case you haven't found them already;

what do "lifting" and "lowering" even mean at a high-level?

TLDR: Transforming a high-level WIT function signature (with strings, records, enums, lists, options, results, resources, etc..) into a low-level Core WASM signature comprised of only i32, i64, f32 & f64.

Repository for design and specification of the Component Model - WebAssembly/component-model

Last updated: Dec 06 2025 at 05:03 UTC