# 功能与兼容性边界

| 能力 | 当前实现 | 独立证据或限制 |
|---|---|---|
| 帧与增量读取 | 方法/头部/正文/心跳，长度、终止符、通道与失败状态 | 原有截断/分片测试；最大 16 MiB |
| 方法参数 | 官方扩展 XML 的 64 个方法；8 种参数类型和连续 bit 打包 | Pika 1.3.2 的 192 个编码/解码向量 |
| 字段表 | 17 种值变体，嵌套数组/表、Decimal、时间戳、原始 IEEE 位、字节串 | 12 个 Pika 共享方言用例；其余标签有本地黄金值/边界测试 |
| Basic 属性 | 14 种属性，存在位/空值/零值、完整长度检查 | Pika 16 个属性组合；拒绝未知或扩展标志 |
| 消息 | 方法/属性/正文一体生成、分片、交错组装、可选严格方法校验 | 原有组装测试及完整严格流程；正文 helper 最大 1 MiB |
| 发送端流式正文 | UInt64 声明长度、同步/异步源、逐帧发送、可等待 drain、通道顺序、取消/超时、不重放 | 6 核心组、22 故障组、7 真实 broker 组，含 3 个 Go 大消息内容对照；CLI 已接入流式文件/管道 |
| 接收端流式正文 | 可选连接模式，get/consume/return 的异步字节流、完整长度验证、字节/分片水位、丢弃、确认保护和恢复就绪 Promise | 5 核心组、25 故障组、8 真实 broker 组，含 3 个 Go 大正文/属性对照；普通 Buffer 模式仍限 8 MiB；同连接慢流会阻塞其它通道 |
| 自定义连接恢复决策 | 连接/通道策略、默认委托、延迟/无动作、手动接管、取消与过期上下文 | 22 本地组、10 peer/12 broker 已测结果一致；清理差异两侧各 2 例单列，1 本地延迟投递；见 CONNECTION-STRATEGY.md |
| 自定义拓扑恢复 | recoverTopology 上下文、默认委托、动态登记、跳过项与可取消范围；修正单通道拓扑失败边界 | 25 本地组、10 peer/12 broker 已测结果一致；1 本地重复重连投递；见 TOPOLOGY-STRATEGY.md，非 Go 调度等价 |
| 限时关闭 | closeDeadline(Date/毫秒/null)、排队发送/关闭期限、销毁接管传输、取消恢复 | 17 本地组、9 peer/11 broker 的返回类别和资源状态一致、1 本地投递关闭流程；通知及拨号等待 2 类差异见 CLOSE-DEADLINE.md |
| 显式重连与取消通知 | 连接/通道 reconnect、并发加入、耗尽后新会话、Promise 取消通知、保留活跃消费者 | 14 本地组、每侧 7 查询/4 完整结果一致；1 活跃消费者差异对照、3 本地真实恢复；3 类差异见 RECOVERY-CONTROL.md |
| 恢复配置与拓扑快照 | enabled/重试配置、本地/全局查询、深复制、逐通道所有权与关闭清理 | 14 本地组、7 peer/7 broker 一致、3 本地真实恢复；嵌套 Args 别名差异见 TOPOLOGY.md；耗尽查询已在 0.21 修正并原生对照 |
| 自定义传输 | dial 工厂、现有 Duplex Open、defaultDial、期限与所有权、TLS 包装与重连 | 22 本地组、6 原生传输/7 broker 一致；2 本地 TLS 场景；Go 调度/网络截止时间与总期限差异见 TRANSPORT.md |
| 连接元数据 | 客户端属性/默认表、服务端属性/locale/协议版本、配置、地址、TLS 证书与状态快照、恢复代数 | 6 新核心组、14 线路组；7 原生 peer 元数据/5 自定义表/7 broker 一致；1 本地 TLS 1.3 恢复；身份与属性别名差异单列，完整 TLS 状态仍缺 |
| URI 解析与连接 | MoonBit 解析/格式化/脱敏/凭证转换；Node URI 连接、TLS 文件、SASL 选择与参数优先级 | 10 核心组、14 线路组，623 原库解析结果和 18 broker 结果一致；6 输入差异样本另列；1 本地 TLS 文件快照恢复；详见 URI.md |
| 会话与网络 | MoonBit start/tune/open/close、vhost、通道/流控；Node TCP/TLS、心跳、超时/取消 | 11 组新增核心会话测试；18 组网络故障场景 |
| 发布与消费 | QoS、get/consume/cancel、ack/nack/reject、确认、mandatory 退回、事务、交换机/队列 | 22 项 RabbitMQ 4.0.5 流程含 TLS、实际 CLI 和有界计时样例；通道故障隔离 |
| noWait 方法 | 11 个宿主方法支持不占回复槽位的有序发送，消费预登记/取消迟到投递处理，拓扑选项恢复 | 17 线路/恢复组、15 原库方法报文字节一致、8 broker 业务/恢复结果一致；Confirm(true) 等待差异单列，其他 Go 场景使用 Confirm(false)；本地完成不证明 broker 接受 |
| 消费者独立取消 | consume 的 AbortSignal、注册/普通 RPC 后有序取消、监听器释放、标签复用与逻辑订阅恢复 | 21 线路组、6 原库报文/9 broker 结果一致；并发 RPC 调度、标签复用、离线取消共 3 项差异单列；离线仅移除消费者意图，保留拓扑 |
| 发布确认句柄与通知 | 普通/流式延后确认句柄、独立可取消等待、排序 confirm/ack/nack 事件、下一序号、跨恢复代数 | 21 线路组，19 原库报文/6 peer 结果/9 broker 结果一致；零标签批量确认与非法未来标签的 2 项既有差异单列；事件接口不是 Go channel 调度模型 |
| 通道选项与 flow | UInt32 QoS size、noLocal 消费、两种正文 API 的 immediate、主动 flow/服务器通知与恢复选项保留 | 2 核心组、15 线路组、18 原库报文/1 通知回复序列/9 broker 结果一致；QoS 越界与暂停发布的 2 项差异明确保留；RabbitMQ 4.0.5 拒绝非零 size、immediate、flow(false)，noLocal 不隔离本连接消息 |
| 认证 | PLAIN/AMQPLAIN/EXTERNAL、客户端优先选择/locale、自定义静态或异步初始响应、重连重新协商、mTLS CLI | 30 个原库响应、9 个原库协商、12 组宿主故障和 10 组 RabbitMQ/证书/重连/CLI；不做 SASLprep，PLAIN NUL 验证有意更严格 |
| 连接内凭证更新 | connection.update-secret/确认配对、独立等待、超时/关闭处理和恢复不重放；应用提供器支持新令牌重连 | 5 核心组、10 故障组、10 真实 OAuth 组；原库 6 报文/6 broker 结果一致；过期替代令牌先确认后拒绝的边界保留 |
| 可选恢复 | 稳定连接/通道对象，有限重连、拓扑顺序重建、队列别名、QoS/消费/确认/事务恢复；旧确认标签拒绝 | 25 组独立线路故障、6 组 RabbitMQ、1 个固定 Go 原库重复断线场景；全部恢复语义未追平 |
| 跨通道恢复依赖 | 单通道故障按登记路由关系选择恢复范围，健康通道保持原对象/未确认标签；生成队列名先检查是否存活 | 8 线路组、6 真实 broker 组；2 个固定 Go 边界对照记为明确改进，不是匹配案例 |
| 大文件消息 CLI | 普通文件/已知长度 stdin 直发、未知长度暂存、文件/raw 接收、hash、确认/无覆盖安装、可取消输出辅助进程 | 25 组子进程线路检查、12 组真实 broker 流程，5 组原库内容/属性一致；默认 1 GiB 可调资源限额，文件与 broker 不构成原子事务 |
| 可运行入口 | MoonBit API、Node 消息客户端/CLI、浏览器 inspect/strict 模式、线路文件 CLI | 7 个 CLI 场景通过，未执行视觉审查 |
| 资源处理 | 深度/节点/字节上限；组装正文及元数据总上限；错误后终止状态 | 畸形长度、截断、错误通道、类型与嵌套压力输入 |
| 自动删除恢复 | 取消最后消费者、queue.delete、queue/exchange.unbind、exchange.delete 触发关联清理；跨通道与未完成操作防护、循环图、别名、显式通道关闭和 broker cancel | 13 故障组、2 真实生命周期组；10 Go/Node 真实重连场景中 9 一致，1 空解绑差异明确保留 |

本次性能补丁只改字节桥接分配，完整本地回归及三个负载的三轮 broker 对照通过。当前 22 份源码报告和 27 份未重跑的历史原生/broker 报告见 evidence/performance-upgrade.json；有限性能结果见 PERFORMANCE.md。按最新要求，常见流程可用后结束本项目专项扩展。

## 仍需完善

[API-COMPATIBILITY.md](API-COMPATIBILITY.md) 逐项映射固定参考库的 106 个公开名函数/方法声明，并给出可用对应接口或缺口。该数字不是独立能力数或完成比例，不包括所有结构字段、常量和接口。仍缺完整 context/Go channel 通知语义、完整网络截止时间/传输平台验证、完整 TLS 状态以及两类自定义恢复策略的完整控制交错及调度行为验证。

尚缺上游恢复/API 全量边界、外部拓扑与并发恢复的完整验证、更多真实身份提供器与认证失败策略验证、完整客户端扩展、端到端资源/性能调优和生产规模背压压力验证。Node 每通道只允许一个 RPC，确认发布可并行。未测代表性吞吐、长时间运行、不同操作系统网络宿主或多版本 broker。JS/Wasm-GC 核心均通过 138 项；Node 网络实测平台为 Windows 24 + WSL RabbitMQ。方法层是线路格式校验，不执行全部域断言、保留字段和 broker 业务规则。

字段表保持 RabbitMQ 方言。Pika U/L 与其无符号 l 不兼容，不能用共享向量通过来掩盖差异。短字符串必须合法 UTF-8，长字符串可为任意字节；未知类型标签不能安全跳过，直接报错。相同字段名按有序条目保留，由上层决定映射语义。

64 个方法取自已固定哈希的 XML 快照，不代表 AMQP 1.0 或未来所有扩展。原始 Frame 仍可承载未知方法。
