Getting Started
OverviewLanguage GuideFull Reference
Book
Table of ContentsIntroductionPrefaceGetting StartedLanguage TourOwnershipErrorsConcurrencyStdlibNetworkingDataPackagesSpeed & SafetyCross-PlatformToolingCookbookAppendix
Reference
Standard LibraryKeywordsPerformanceSecurityBuilt-in FunctionsStatusDebuggingABI
How-To
Getting StartedHTTP APIsErrorsPackagesConcurrencyMemoryWASITestingRelease Builds
Project
RoadmapVisionChangelogContributing

ABI

Mako ABI And Plugin Seed

Product tip: 0.2.1.

Mako's current FFI is extern "C" plus the runtime C headers. The plugin ABI gives native dynamic plugins and future WASM plugins one stable handshake.

Native ABI v1

Header: runtime/mako_plugin.h

The ABI surface is intentionally small:

Generate a native starter:

mako deploy plugin my-plugin --name my-plugin --kind native
cd my-plugin
./build-plugin.sh

WASM Plugin Starter

Generate a WASM plugin manifest/starter:

mako deploy plugin my-wasm-plugin --name my-wasm-plugin --kind wasm

The WASM starter exports ABI-version and call functions. Its generated example implements a deterministic ping operation (ping with an empty payload returns 1; unsupported operations return 0). Full WASM component-model adapters, WIT generation, capability negotiation, and host-side dynamic loading remain roadmap work.

Boundary

Done now:

Not done yet: