cabish 0.1.1

Component model ABI-ish for native code
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
## What?

Cabish is kind of, sort of like [Wasm component model ABI] with native endian and pointer size, it's _cabi-ish_.

## How?

Essentially it's just direct implementation of [Wasm component model ABI], but alignment and size of values depends on the platform and may not correspond to the spec, for example, alignment of `string` type will generally be 8 on a 64-bit system as opposed to `4` used by 32-bit Wasm.

## Why?

Cabish allows reuse of existing tooling targeting canonical ABI in native code, for example, [`west`](https://github.com/rvolosatovs/west) replaces Go Wasm imports generated by [`wit-bindgen-go`](https://github.com/bytecodealliance/wasm-tools-go) by calls to an embedded Wasmtime instance via Rust FFI in native code and uses cabish to read and write values.

[Wasm component model ABI]: https://github.com/WebAssembly/component-model/blob/c5f8f25ceb9388431f32943bb21a36d991cfbe91/design/mvp/CanonicalABI.md