Continuum C++ API
Unified runtime for token + tensor execution
Loading...
Searching...
No Matches
backend_abi.h
Go to the documentation of this file.
1#pragma once
2
3/*
4 * Continuum backend C ABI.
5 *
6 * A backend compiled against only this header can be loaded at runtime:
7 * build it as a shared library that exports
8 * CONTINUUM_BACKEND_PLUGIN_INIT_SYMBOL (see continuum_backend_plugin_init_fn)
9 * and point the runtime at it with BackendRegistry::load_plugin or the
10 * CONTINUUM_BACKEND_PLUGINS environment variable. See docs/design/abi.md.
11 *
12 * Memory: every pointer the host passes in is borrowed for the duration of
13 * the call. Pointers a backend returns (output strings / token arrays, the
14 * tensor_backend_type name) must stay valid until the next call on the same
15 * instance; the host copies them immediately.
16 */
17
18#include <stddef.h>
19#include <stdint.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25/* v1: capabilities + run_with_cache. v2 appends destroy and optional state
26 * portability to the vtable; the host still accepts v1 vtables. */
27#define CONTINUUM_BACKEND_ABI_VERSION 2u
28#define CONTINUUM_BACKEND_ABI_MIN_VERSION 1u
29
30/* Versioned plugin entry point; the suffix is the ABI major it implements. */
31#define CONTINUUM_BACKEND_PLUGIN_INIT_SYMBOL "continuum_backend_plugin_init_v2"
32
38
44
48
55
65
67 uint8_t node_kind;
68 const char* op_name;
69 const char* model_id;
70 const int64_t* attrs;
71 size_t attr_count;
73
75 uint32_t abi_version;
76 void* instance;
78 const char* (*tensor_backend_type)(void* instance);
80 void* instance,
82 const continuum_backend_value_t* inputs,
83 size_t input_count,
84 const continuum_backend_state_t* prefix_state,
85 int32_t remaining_tokens);
86
87 /* ---- v2 (optional; leave NULL when unsupported) ---- */
88
89 /* Called once when the host drops the backend. Frees `instance`. */
90 void (*destroy)(void* instance);
91 /* Serialize `state` into `out` (capacity `out_cap`) and return the number
92 * of bytes required. The host calls it with out == NULL to size the
93 * buffer. Returning 0 means the state is not portable. */
94 size_t (*export_state)(void* instance, continuum_backend_state_t state, uint8_t* out, size_t out_cap);
95 /* Rebuild a live state from exported bytes. Returns 1 and fills *out on
96 * success, 0 if the bytes cannot be imported. */
97 uint8_t (*import_state)(void* instance, const uint8_t* bytes, size_t len, continuum_backend_state_t* out);
99
100/*
101 * Plugin entry point, exported under CONTINUUM_BACKEND_PLUGIN_INIT_SYMBOL.
102 * The host zero-fills *out, passes its own CONTINUUM_BACKEND_ABI_VERSION, and
103 * expects the plugin to fill *out (including abi_version and instance) and
104 * return 0. A non-zero return aborts loading.
105 */
106typedef int (*continuum_backend_plugin_init_fn)(uint32_t host_abi_version,
108
109#ifdef __cplusplus
110}
111#endif
int(* continuum_backend_plugin_init_fn)(uint32_t host_abi_version, continuum_backend_vtable_t *out)
Definition backend_abi.h:106
struct continuum_backend_node_meta_s continuum_backend_node_meta_t
continuum_backend_value_kind_e
Definition backend_abi.h:33
@ CONTINUUM_BACKEND_VALUE_NONE
Definition backend_abi.h:34
@ CONTINUUM_BACKEND_VALUE_STRING
Definition backend_abi.h:35
@ CONTINUUM_BACKEND_VALUE_TOKENS
Definition backend_abi.h:36
struct continuum_backend_state_s continuum_backend_state_t
struct continuum_backend_caps_s continuum_backend_caps_t
struct continuum_backend_run_result_s continuum_backend_run_result_t
struct continuum_backend_vtable_s continuum_backend_vtable_t
struct continuum_backend_value_s continuum_backend_value_t
enum continuum_backend_value_kind_e continuum_backend_value_kind_t
Definition backend_abi.h:39
uint8_t supports_cache
Definition backend_abi.h:42
uint8_t supports_tensor
Definition backend_abi.h:40
uint8_t supports_token
Definition backend_abi.h:41
Definition backend_abi.h:66
uint8_t node_kind
Definition backend_abi.h:67
const char * model_id
Definition backend_abi.h:69
size_t attr_count
Definition backend_abi.h:71
const int64_t * attrs
Definition backend_abi.h:70
const char * op_name
Definition backend_abi.h:68
Definition backend_abi.h:56
uint8_t used_cached_state
Definition backend_abi.h:63
int32_t reused_prefix_len
Definition backend_abi.h:59
int32_t compute_steps
Definition backend_abi.h:60
int32_t tokens_saved
Definition backend_abi.h:62
continuum_backend_value_t output
Definition backend_abi.h:57
int32_t tokens_sent
Definition backend_abi.h:61
continuum_backend_state_t resulting_state
Definition backend_abi.h:58
Definition backend_abi.h:45
void * handle
Definition backend_abi.h:46
Definition backend_abi.h:49
size_t token_count
Definition backend_abi.h:53
const char * string_data
Definition backend_abi.h:51
const int32_t * token_ids
Definition backend_abi.h:52
continuum_backend_value_kind_t kind
Definition backend_abi.h:50
Definition backend_abi.h:74
continuum_backend_run_result_t(* run_with_cache)(void *instance, continuum_backend_node_meta_t node, const continuum_backend_value_t *inputs, size_t input_count, const continuum_backend_state_t *prefix_state, int32_t remaining_tokens)
Definition backend_abi.h:79
continuum_backend_caps_t(* capabilities)(void *instance)
Definition backend_abi.h:77
uint32_t abi_version
Definition backend_abi.h:75
size_t(* export_state)(void *instance, continuum_backend_state_t state, uint8_t *out, size_t out_cap)
Definition backend_abi.h:94
uint8_t(* import_state)(void *instance, const uint8_t *bytes, size_t len, continuum_backend_state_t *out)
Definition backend_abi.h:97
void(* destroy)(void *instance)
Definition backend_abi.h:90
void * instance
Definition backend_abi.h:76