Skip to content

JavaScript/TypeScript Native Runtime 说明

Native backend host 使用 role package:

角色主 API
Client@nnrp/native-clientClient API
Server@nnrp/native-serverServer API

TCP、QUIC、IPC 与 WebSocket 不隐藏在 role package 里。请为允许参与选择的载体安装对应的 @nnrp/transport-* package。

每个 role manifest 只声明自己的 session 能力:@nnrp/native-client 声明 client.session@nnrp/native-server 声明 server.session。Transport 列表来自已安装 provider;role package 不声明 native.loader,也不会从通用 runtime library 推断可用载体。

Native FFI Binding

Role package 接受显式 FFI binding 以支持受控集成和测试。打包的 transport artifact 由对应的 transport package 拥有。

Role binding 与 transport binding 是两个独立契约。NnrpNativeFfiBinding 在 carrier 完成选择后持有 client 或 server runtime 操作。Carrier 包使用 NnrpNativeTransportBinding 完成 endpoint probe 以及 framed connection/listener 生命周期。Role binding 不得冒充 transport binding;transport 包缺失 Rust artifact 时, 不得暗中回退到 JavaScript socket 实现。

Client NnrpNativeFfiBinding

属性类型必填说明
mode"native-addon" | "node-ffi" | "deno-ffi" | "nano-ffi" | "test"Binding 实现标签。
runtimeCapabilitiesfunction返回 native runtime capability probe。
validateSubmitfunction在 ABI 边界校验并规范化 submit。
submitResultCompactfunction粗粒度 submit/result hot path。
submitNoWaitfunction粗粒度 no-wait submit path。
sendRuntimeFramefunction粗粒度 Preview4 控制/对象/缓存 frame 路径。
patchSessionfunction粗粒度 session patch 路径。
awaitEvents(request: NnrpNativeEventBatchRequest) => readonly NnrpNativeClientEventBatchItem[] | Promise<readonly NnrpNativeClientEventBatchItem[]>粗粒度、按 session 路由的 batch event polling。
closefunctionBinding cleanup hook。

NnrpNativeClientEventBatchItem 是以下封闭批次信封:

字段类型必填语义
sessionIdnumber用于路由事件的已协商非零 u32 session identity。
eventNnrpClientEvent一个且仅一个 runtimelifecycle client role event。

item.event.type === "runtime" 时,item.sessionId 必须等于 item.event.event.header.sessionId,不一致属于协议错误。当 item.event.type === "lifecycle" 时, 事件没有 wire header,只能由 item.sessionId 路由。Binding 不得从当前等待事件的 consumer 猜测 session,也不得伪造全零 header。

Cancel 与 abort 是通过 sendRuntimeFrame 发送的协议帧,不是独立 FFI 方法。发布的 role package 不暴露 package-owned 的 Deno 直连 loader 或 self-echo benchmark binding。生产调用必须经过已选择 transport package 的 client/server role carrier;显式 NnrpNativeFfiBinding 只用于受控集成与测试。

Server NnrpNativeFfiBinding

属性类型必填说明
mode"native-addon" | "node-ffi" | "deno-ffi" | "nano-ffi" | "test"Binding 实现标签。
runtimeCapabilitiesfunction返回 native runtime capability probe。
sendRuntimeFramefunction粗粒度 Preview4 控制/对象/缓存 frame 路径。
acceptfunction接受 server session。
receivefunction接收下一个 typed server event。
closefunctionBinding cleanup hook。

Artifact 边界

Native artifact 归属
@nnrp/native-client无,只负责 client role。
@nnrp/native-server无,只负责 server role。
@nnrp/transport-tcpTCP native transport artifact。
@nnrp/transport-quicQUIC native transport artifact。
@nnrp/transport-ipcIPC native transport artifact。
@nnrp/transport-websocketWebSocket native transport artifact。

NNRP Documentation