title: 宿主与绑定 order: 2

宿主与绑定

分层

Rust Iris core
  ├─ iris-tools / iris-generator(Rust CLI)
  ├─ iris-connector-* / iris-adapter-*(Rust 工作区 lowering)
  ├─ Node N-API → @yydb/iris/node
  └─ browser WASM → @yydb/iris(默认入口)

TypeScript 不再平行重写 parser、planner、optimizer 或 diagnostic 体系。

npm 包面

用途
@yydb/iris 默认 Web facade(WASM 在包内)
@yydb/iris/node Node N-API facade + iris CLI
@yydb/iris/types 协议 / binding DTO(无 loader)
@yydb/iris-win32-x64 optional 平台 binary

不存在 @yydb/iris/web@yydb/iris/wasm 或独立 @yydb/iris-core npm 包。

已退役的 TS 产品面

@yydb/iris-adapter-{postgres,mysql,redis,sqlite,web} 已从仓库删除。Node foreign-store 执行与 CLI live 命令全部由 Rust N-API + Rust iris-adapter-* 承担;公开 npm 面只有 @yydb/iris 与平台 optional 包。

WASI

当前 冻结 WASI 公开面。@yydb/iris-unknown-wasm32 是 browser-safe WASM,不代表 WASI 文件系统或网络。

验证分离(本地)

Homepage 是 browser 宿主(VMZ static),不会也不应把 @yydb/iris/node 打进客户端依赖图。本地可跑:

# 从 iris-orm 根目录
pnpm run verify:homepage-hosts   # browser export map + 完整 iris 验证
pnpm run verify:iris-exports     # 仅 @yydb/iris 包

预期(Windows 已构建 iris.win32-x64-msvc.node 时):

检查 结果
import "@yydb/iris"(browser / node 条件) 始终 → src/browser/ @yydb/iris/web 子路径)
import "@yydb/iris/node"browser 条件,bundler 模拟) unsupported.ts
import "@yydb/iris/node"node 条件) src/node/index.ts
loadNativeBinding() 加载 optional 平台 .nodeirisVersion()0.1.0
initIris()(web) wasm-not-implemented(WASM 未 copy 前正常)
iris CLI pnpm install --filter @yydb/irisdoctor / check 可用

注意:在 Node 进程里 import "@yydb/iris/node" 会正确解析到 N-API facade;这与 bundler 在 browser 条件下走 unsupported.ts 不矛盾。

Rust 原生

Rust 应用直接使用 iris::* crate 与 iris-tools CLI,不经过 npm。