运行时扩展
kvlang 是以扩展为主的编程语言。核心刻意保持最小,能力由 runtime 扩展与 lib 提供。多个 runtime 扩展运行在同一个 kvspace 中——同一棵树里的代码、帧与值,对所有参与者可见。
runtime 把 opcode 注册到 /lib/<opcode>;lib 是一组 rwir/rwfunc 定义,layout 进同一棵树。
deepx 仓库是模型定义,不是 runtime 扩展;deepx-design 是文档。二者都不列入下表。
注册方式并不统一。 runtime-c 就是 C 核心;runtime-rs 与 deepx-cpu-compute 嵌入它并声明能力集。deepx-cpu-compute 还会把签名写入 /lib/<opcode> 供分布式调度。deepx-compute-cuda 通过自建的 TfFactory 注册 tensor 函数。Metal 的 compute / heap / io 平面与 heap-cuda 则在 Redis 任务队列上交换裸 opcode(add、load、print、save),不走 /lib 路由。
所有 deepx 扩展都将迁移为嵌入 runtime-c 核心并通过能力集/路由契约注册;迁移完成前,表中如实记录当前机制。
| 运行时 | 架构 / 系统 | Lib(依赖本行 runtime) | 介绍 / 备注 |
|---|---|---|---|
| runtime-c | linux-x86_64、darwin-arm64 |
— | 最小核心:取指、解码、执行、控制流与 native 派发。扩展 runtime 嵌入这个核心,而不是另起一套。 |
| runtime-rs | linux-x86_64、darwin-arm64 |
stdlib |
第一个 runtime 扩展,也是它对应的第一个 lib。嵌入 C 核心,提供 kv、xv、time、duration、string 等标准库 opcode;二进制名仍是 kvlang。
|
| runtime-rs | linux-x86_64、darwin-arm64 |
byteseek | 第二个 lib。用 kvlang 编写的 Agent Harness,运行在 runtime-rs 上,共享同一个 kvspace。 |
| deepx-cpu-compute | linux-x86_64、linux-arm64、darwin-x86_64、darwin-arm64 |
— |
CPU op-plat:基于 OpenBLAS / Highway / OpenMP 的 tensor kernel。声明 myrwircaps = deepx/miaobyte·*(add、sub、mul、div 等),嵌入 C 核心,并把签名写入 /lib 供分布式调度。
|
| deepx-compute-metal | darwin-arm64 |
— |
Metal op-plat:在 GPU 上运行 elementwise / reduce / changeshape kernel;裸 task opcode 经 Redis 到达,不走 /lib。依赖 Metal,不依赖 CUDA。
|
| deepx-common-metal | darwin-arm64 |
— | Metal HAL:设备检测与共享 Metal context,供其余 Metal 行使用。 |
| deepx-heap-metal | darwin-arm64 |
— | Metal heap-plat:与 Metal 计算平面配套的 tensor 生命周期与共享内存簿记。Redis 驱动的服务,不是 kvlang 能力集。 |
| deepx-io-metal | darwin-arm64 |
— |
Metal io-plat:经 Redis 队列驱动的 load / print / save 任务。
|
| deepx-compute-cuda | linux-x86_64 + CUDA |
— |
CUDA op-plat:通过自建 TfFactory 注册 deepx/miaobyte·* tensor 函数;在 CUDA 12.8 容器中构建,CMake 目标为 sm_75。
|
| deepx-heap-cuda | CUDA(仓库未固定 OS) | — | CUDA heap-plat:设备 / 主机内存生命周期与同步。Redis 驱动的服务,不是 kvlang 能力集。 |
| deepx-cuda-kernelcompiler | linux-x86_64 + CUDA |
— |
GPU kernel compiler:把 kvlang tensor op 降为 TileLang kernel(AOT .so);不注册 opcode。
|
扩展通过注册生长,而不是改核心:新能力落在 /lib,任何 runtime 都可以提供。每个 lib 依赖同一行的 runtime 才能运行;lib 的 opcode 注册在该 runtime 的 /lib/<opcode> 下。