fix: release Dever 0.1.6 with shared runtime assets and unbounded workers
This commit is contained in:
1 parent
a900d7e8db
commit
5589b657db
17 files changed
+357
-49
No files matched your search
+3
-1
@@ -17,6 +17,8 @@ SDK 用于把 Python、JavaScript、Go 或 C ABI 能力接入 Dever。应用先
|
||||
|
||||
处理函数返回能用 JSON 表达的值,业务失败返回已声明的 `BusinessError`。不要往 stdout 写日志;stdout 用于 Worker 通信,日志写 stderr。
|
||||
|
||||
Worker 调用不设固定执行倒计时,耗时推理可以持续等待。启动握手、协议写入和终止清理仍有短限时;调用方主动取消或应用停止时仍走既有取消和进程回收机制。SDK 不为每次调用创建容器或内层沙箱。
|
||||
|
||||
Python/JavaScript/Go 的协作取消会产生一次 `dever.cancelled` 错误,已取消调用的结果会被丢弃。如果处理函数一秒内不响应取消,Worker 失败并停止接收新调用。Dever 管理进程与 stdin;自行在 Go 进程内调用 `Serve` 时,调用方负责关闭或解除自己的 `io.Reader` 阻塞。C ABI 的同步调用终止边界见后文。
|
||||
|
||||
## SDK 维护与验证
|
||||
@@ -45,7 +47,7 @@ SDK 不依赖第三方包,也不读取环境变量或 PATH。托管 Worker 只
|
||||
- `operation` 是借用的操作名字节;`setting`、`payload` 是借用的 JSON 切片,均不保证 NUL 结尾,只在当前回调有效,不得留存指针。
|
||||
- 输出缓冲由 SDK 分配,shim 只写 `data[0..capacity]` 并设置 `size`,不得替换指针/容量、释放缓冲或越界。业务值使用 Port 的 wire JSON;Runtime 按已编译 Port 校验实际输出类型、声明错误及深度/大小,不接受动态接口签名。
|
||||
- 返回 `DEVER_FFI_OK` 时输出为 JSON 结果;`DEVER_FFI_ERROR` 时输出为 `{"error":"已声明错误身份","payload":...}`;其他状态关闭通道并报告运行故障。源码中的 Secret 不得写 stdout/stderr,stdout 仅作协议通信。
|
||||
- v1 同步原生调用不承诺协作取消;调用卡死、崩溃或超过 supervisor 期限时由现有进程监管终止整个 Worker,不在主进程强杀线程,不自动重放失败调用。强制终止不保证执行 `close`,外部副作用应幂等。
|
||||
- v1 同步原生调用不承诺协作取消,也没有隐式执行期限;调用方取消或应用退出时,清理宽限结束后由现有进程监管终止未退出的 Worker。崩溃或协议故障直接报错,不在主进程强杀线程,不自动重放失败调用。强制终止不保证执行 `close`,外部副作用应幂等。
|
||||
|
||||
静态 ELF 可直接打包;动态依赖放在入口旁的 `lib/`,只接收正常文件,不接收软链接。构建验证目标、SONAME、递归依赖和 ABI 版本;非系统依赖来自该目录;Linux 的解释器/基础系统 ABI 由运行容器提供并须匹配构建目标,不扫描宿主 Python、Node、Go 或编译器。例如 `worker/native` 对应 `worker/lib/libengine.so`。编译器同时打包唯一的 `contract.json`,不手写第二份 Port hash。C++ STL、跨语言对象、回调指针、可变参数及跨进程零拷贝不属于 v1 接口;需要时在 shim 内转为明确的 C 数据与 JSON 值。
|
||||
|
||||
|
||||
Reference in new issue
Block a user