# PJ2026-0502 静态加速需求规格

## 修改历史

| 版本 | 对应 commit id | 更新日期 | 变更说明 |
| --- | --- | --- | --- |
| v0.1 | `d72a1f52` | 2026-07-21 | 建立静态加速独立路线边界，隔离 V2 动态内核。 |

修改历史只记录规格语义变更，不记录实现进度、阶段基线或一次性证据。

## 正文

## PJ2026-0502 静态加速需求规格

## 1. 文档控制

| 字段 | 内容 |
| --- | --- |
| 编号 | PJ2026-0502 |
| 短名 | 静态加速 |
| 层级 | L1 方向 |
| 规格状态 | 已生效 |
| 实现引用版本 | v0.1 |
| 需求规格模板 | [ISO/IEC/IEEE 29148 需求规格模板](../../templates/iso-iec-ieee-29148-requirements-spec-template.md) |
| 上级规格 | [PJ2026-05 PikaPython 总规格](PJ2026-05-pikapython.md) |

## 2. 目的和范围

### 2.1 目的

静态加速路线的边界如下：

- 面向能够显式提供编译期约束的计算代码；
- 独立研究和交付高性能执行能力；
- 本规格只定义与 V2 的稳定隔离边界；
- 具体类型系统、编译 IR、后端和接入方式由后续 L2 SPEC 决策。

### 2.2 范围内

- 显式选择静态执行的函数、模块或文件边界。
- 静态语义、编译诊断、独立执行产物和动态运行时边界调用。
- 与 V1、V2、MicroPython native/Viper 和 C binding 的可比较 benchmark。

### 2.3 范围外

- 改变 V2 默认动态语言语义。
- 要求 V2 使用 type hint、LLVM、JIT 或静态产物。
- 用静态 workload 的结果证明动态 V2 内核性能。
- 在没有独立规格和资源验证时选定 LLVM 或其他重型工具链。

## 3. 术语表

| 术语 | 定义 |
| --- | --- |
| 显式选择 | 源码或构建配置清楚声明代码进入静态路线，不由运行时猜测。 |
| 边界调用 | 动态运行时与静态产物之间的参数、返回值、异常和资源所有权转换。 |

## 4. 系统边界和接口

| 边界项 | 内容 |
| --- | --- |
| 外部使用者 | 需要静态计算性能的嵌入式开发者和自动化构建系统。 |
| 外部输入 | 显式静态源码、编译约束、目标配置和边界绑定。 |
| 受控资源 | 静态编译器、执行产物、边界适配和诊断。 |
| 外部输出 | 静态执行产物、边界调用结果、编译错误和资源报告。 |
| 用户接口 | 后续 L2 SPEC 定义的显式选择语法和构建入口。 |
| 系统边界 | 静态路线只接管显式选择代码，不拥有 V2 动态内核。 |

## 5. 路线边界

```mermaid
flowchart LR
  SRC[显式静态源码] --> SC[静态编译路线]
  SC --> ART[独立执行产物]
  V2[V2 动态内核] <-->|稳定边界调用| ART
  SC -. 不改变 .-> V2
```

## 6. 原子需求

### 6.1 STATIC-L1-REQ-001 独立演进

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| STATIC-L1-REQ-001 | 独立演进 | 后续静态编译 L2 | [PJ2026-0501 V2内核](PJ2026-0501-v2-kernel.md) |

静态路线必须：

- 独立声明语言前提、编译工具链和目标平台；
- 独立声明资源预算和验收结果；
- 禁止其依赖进入 V2 最小构建、默认运行时或发布判定前提。

### 6.2 STATIC-L1-REQ-002 显式边界

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| STATIC-L1-REQ-002 | 显式边界 | 后续边界互操作 L2 | [PJ2026-0501 V2内核](PJ2026-0501-v2-kernel.md) |

静态路线的边界调用必须满足：

- 由源码或构建配置显式选择；
- 明确动态与静态执行之间的值表示和内存所有权；
- 明确错误传播和调用成本；
- 不得依赖未声明的运行时猜测。

## 7. 验收合同

- 独立关闭静态路线后，V2 的构建、测试、性能和资源结果保持不变；
- 静态 benchmark 必须与 Viper、C binding 和适用动态 VM 分开披露语义前提；
- LLVM、其他 IR 或 native backend 只有在后续 SPEC 明确收益、工具链成本和 MCU 适用边界后才能成为实现选择。

## 8. 过程控制

- 后续实现引用 `PJ2026-0502 静态加速 v0.1` 及相应 L2 SPEC。
- 静态路线的当前实验、benchmark 和工具链调查进入 TaskTree 或 GitHub issue。
- 任何影响 V2 默认语义、构建依赖或资源基线的变化必须先回到 [PJ2026-0501 V2内核](PJ2026-0501-v2-kernel.md) 重新评审。
