更新日志
本项目的所有重要变更都会记录在此文件中。
格式基于 Keep a Changelog, 本项目遵循 语义化版本。
完整更新日志请参见 GitHub CHANGELOG.md。
未发布
新增
- 完善的双语文档支持(中英文)
docs/目录下新的文档站点结构- API 参考文档
- 架构设计文档
- 性能优化指南
- 开发贡献指南
2.0.1 - 2026-04-16
安全
- 修复 5 个中等 npm 漏洞(esbuild、vite、vitest)
- 将
vitest从 v1.6.1 更新至 v4.1.4 - 将
@vitest/coverage-v8从 v1.6.1 更新至 v4.1.4
变更
- 将
@webgpu/types从 0.1.68 更新至 0.1.69 - 将
@types/node更新至最新 v20.x
2.0.0 - 2026-03-09
新增
- 零拷贝 Tensor.reshape() 通过张量视图实现
- 显著减少 reshape 密集型模型的内存占用
Tensor._createView()静态方法用于缓冲区共享Tensor._isView标志用于跟踪视图张量
- GPUContext.deferDestroy() 用于安全的异步缓冲区清理
- 防止释放后使用的竞态条件
- 自动清理临时 GPU 资源
- FlattenOperator 用于 CNN 到 FC 层的转换
- DenseOperator 用于全连接层
- Conv2dBiasReLUOperator - 融合内核优化
- 相比顺序执行减少 3 倍内存流量
修复
- [关键]
Tensor.reshape()不必要的 GPU 缓冲区分配- 现在使用零拷贝视图,减少内存压力
- [关键]
InferenceEngine.infer()GPU 内存泄漏- 中间张量现在在使用后正确销毁
- [关键] 算子临时缓冲区清理中的竞态条件
- 现在一致使用
deferDestroy()模式
- 现在一致使用
性能
| 操作 | 之前 | 之后 | 提升 |
|---|---|---|---|
| Flatten | 完整缓冲区复制 | 零开销 | ~100% |
| 融合 Conv2d+Bias+ReLU | 6 次内存操作 | 2 次内存操作 | 3× |
| 内存泄漏 | 持续存在 | 正确释放 | 稳定 |
1.0.0 - 2026-03-09
新增
- 标准化 CI 工作流,包含
permissions和concurrency配置 - Node.js 20 验证流水线(lint、test、build)
- 自动化依赖安全扫描
变更
lint脚本现在运行 TypeScript 类型检查- 更新 CI 触发器以提高资源效率
0.9.0 - 2026-03-10
新增
- GitHub Pages 部署工作流
- 双语文档支持
- 中文文档 (
README.zh-CN.md)
- 中文文档 (
- 架构图
- SEO 元数据
0.8.0 - 2026-01-08
新增
tests/setup.ts- Node.js 测试环境的 WebGPU 全局变量tests/tsconfig.json- 单独的测试 TypeScript 配置@vitest/coverage-v8用于 V8 覆盖率报告
修复
- Vitest 在 Node.js 中因缺少 WebGPU 全局变量而失败
- 算子测试 mock 未将计算结果写入输出缓冲区
变更
- 所有算子测试都有正确 mock 的 WebGPU 缓冲区生命周期
- 54 个测试通过(从 47 个扩展)
0.1.0 - 2025-02-13
新增
初始项目基础设施
- MIT 许可证
.editorconfig用于一致的代码格式化- TypeScript 5.x 严格模式
- Vitest 测试框架
核心组件
GPUContext- 带错误处理的 WebGPU 设备管理Tensor- 支持布局(NCHW/NHWC)的 GPU 缓冲区管理- 所有失败模式的自定义错误类
神经网络算子
ReLUOperator- 逐元素激活SoftmaxOperator- 数值稳定的概率分布MaxPoolOperator- 2D 最大池化Conv2dOperator- 直接卷积DenseOperator- 矩阵乘法FlattenOperator- 张量重塑
推理引擎
InferenceEngine- 完整推理流水线ModelLoader- JSON 模型加载
测试框架
- 使用
fast-check进行基于属性的测试 - 每个属性测试 100+ 次迭代
- CPU 参考实现用于验证
- 使用
示例
- MNIST 数字分类演示
- 性能基准测试演示
统计
- ~2,000 行源代码
- ~1,100 行测试
- 7 个神经网络算子
- 13 个基于属性的测试
- 零运行时依赖