このドキュメントは、3人のAI専門家(Gemini、Codex、ChatGPT5)の深い技術検討を経て決定された、統一TypeBox ABIの技術的決定事項をまとめたものです。
typedef struct NyashTypeBox {
// === ヘッダー情報(不変のバイナリ契約)===
uint32_t abi_tag; // 'TYBX' (0x54594258) - 必須
uint16_t version; // APIバージョン(現在: 1)
uint16_t struct_size; // 構造体サイズ(前方互換性)
const char* name; // Box型名:"StringBox"
// === 基本操作(COM互換)===
void* (*create)(void* args); // インスタンス生成
void (*destroy)(void* self); // インスタンス破棄
void (*retain)(void* self); // 参照カウント増加(新規)
void (*release)(void* self); // 参照カウント減少(新規)
// === 高速メソッドディスパッチ ===
uint32_t (*resolve)(const char* name); // メソッド名→ID変換
NyResult (*invoke_id)(void* self, // ID指定の高速呼び出し
uint32_t method_id,
NyValue* args,
int argc);
// === メタ情報 ===
const char* (*get_type_info)(void); // JSON形式の型情報
uint64_t capabilities; // 機能フラグ
// === 将来拡張用 ===
void* reserved[4]; // NULL初期化必須
} NyashTypeBox;
64-bit構造: [8b domain | 8b vendor | 16b category | 32b serial]
_Atomic uint64_t
)typedef struct __attribute__((aligned(16))) {
uint64_t type_tag; // 型識別子
union {
int64_t i64; // 整数
double f64; // 浮動小数点
void* ptr; // ポインタ(Box/String等)
uint64_t bits; // ビットパターン(NaN-box/SMI)
} payload;
} NyValue;
NyBoxHeader.header_size
による前方互換capabilities
フラグで判定