Spatiotemporal Composability (时空可组合性)

在运行时(而非编译期)安全地加载、卸载、重配组件 (component) 所需的两个正交性质:时间可组合性(卸载时 side-effect 可逆)+ 空间可组合性(组件间依赖可声明、可重写)。Shi, Zhang & Cui (2026) 在 A Programming Paradigm for Spatiotemporal Composability 中作为核心范式提出,并实现为 Cordis 框架。

定义

一个系统具有时空可组合性,当且仅当:

  1. 时间可组合性 (temporal composability):组件被卸载时,它对共享环境做的所有修改——资源分配、事件注册、状态变更——被完全且安全地撤销。
  2. 空间可组合性 (spatial composability):组件能以结构化、可验证的方式声明、发现、解析彼此的依赖;依赖图随运行时变化(出现、消失、改换身份)时,组件生命周期被正确协调。

静态 vs 动态

静态组合 动态组合
时间维度 词法作用域(RAII / bracket / with) 状态 effect 的作用域不固定;运行时插入/移除
空间维度 模块 import 解析 依赖在运行时出现/消失/改换身份
已知理论 充分(λ-演算、模块系统) 不充分——传统 effect/coeffect 体系对"上下文在编译期固定"做了假设

与经典 effect / coeffect 体系的关系

为什么需要"新范式"

  • 插件系统:VSCode extension host 无法运行时卸载单个扩展(87/100 热门扩展有可执行代码,禁用必须重启整个 host)。
  • 自演化 agent harness:模型生成的组件修改若需要进程重启才能生效,积累的不可用性会变得不可接受,且一个错误的 self-modification 可能关掉恢复所需的那个进程本身。
  • 粗粒度替代的代价:OS 提供进程级时间可组合性、容器编排提供服务级空间可组合性;重启丢状态(缓存、连接、部分计算),重建需数秒到数分钟,要用冗余副本维持可用性——额外资源开销换取无法"恢复单个组件"的能力。

形式化条件

  • Local 形式(Section 3):单个 effect/coeffect 可逆 / 满足。
  • Global 形式(Section 4 metatheory):多组件交错加载/卸载后,环境恢复至一致 quiescent state。
  • Theorem 65(confluence):无论调度顺序,quiescent state 唯一。
  • Theorem 66:guard 必定释放(无死锁)。

与 quant-wiki 主题的潜在接口

虽然 PL 范式本身不在 quant-wiki 主范围,但有两个潜在迁移值得标记:

  • Strategy rollback——把策略对组合的"side-effect"建模为 revertible effect(开仓的 inverse 即平仓 + 还原 delta 暴露),策略模块卸载时自动撤销所有未平仓位,省去"删除策略必须重启"那种粗粒度问题。
  • 因子依赖声明——把 quant 策略系统的 datafeed / factor / risk-model 之间的关系声明为 coeffect specification;切换数据源时只有声明该 key 的下游 strategy 重激活,等价于 reactive coeffect。

这两条目前 wiki 中无对应页面,本概念页作为锚点保留。

引用本页