# Chronaxis 0.1.0.dev4

[English](release-notes-0.1.0.dev4.en.md)

> 0.1.0.dev4 开发预览版；本文说明本版变更、安装方法和已验证的支持范围。

本版重点改善默认输入、运行效率和资源清理，减少使用时不必要的限制。分析配置继续使用整数 `config_version: 4`；已有持续条件中的 `duration_comparison` 仍须明确填写。

## 输入与输出

| 改进 | 使用时的变化 |
|---|---|
| 信号 CSV 的内存预算 | 依据实际记录、文本和打包空间决定交付批次。`batch_rows` 仍是上限；普通窄表不再因逐条预算估算过高和打包时重复计费而提前失败，无需统一改成 4096。 |
| CSV 文本格式 | 默认 `utf-8-sig` 接受普通 UTF-8 和文件头 BOM。表头末尾的匿名列仅在对应单元格为空时忽略；非空数据、中间空列名和重复列名仍报错。 |
| ASC 常见记录 | 默认识别受支持的统计尾、状态事件和错误帧布局；格式损坏仍报告具体行。远程帧缺省 DLC 保持未知，ASC 导出保留省略，BLF 导出不会补造长度。 |
| 设备标签和目录 | 设备标签可省略，也可填写 `lab-pc`、中文等非空文本。客户数据目录可以叫 `RefProjects`；发布仍保留已有结果，不覆盖他人的文件。 |
| 文件通配符 | `*.asc`、`*.blf`、`*.csv`、`*.txt` 等明确扩展名匹配忽略扩展名字母大小写。文件名主体、目录名和其他模式保持系统规则，递归仍须显式 `**`。 |

完整条件见[输入来源](../../../inputs.html)和[输出与结果](../../../results.html)。

## 默认预算与示例验收

- 同一次分析共享的信号声明只计费一次，新建表达式、索引及独立状态仍计费；信号与计算项增加时，不再因重复展开同一声明提前耗尽预算。
- 精确中位数和分位数分批时，先为本批新增保留样本留出空间；超过真实容量仍报错。默认内存预算保持256 MiB。
- 功率统计示例的方差单位统一为`W^2`。示例清单记录生成时的产品源码摘要；产品改变后必须重跑示例。安装验收独立检查确定表头、单位、状态和手算数值。

## 执行、清理与接口

- 普通分析省略`execution.backend`时使用`auto`，按整份计划选择已验证的计算实现。显式`reference`和`numpy`保持原选择；`explain`列出请求、实际选择及原因。
- 同一CAN报文的一至两路信号、简单实际时间ZOH会话积分可自动减少中间归组和状态交接。ASC、BLF、原始报文CSV与连续分卷使用相同规则；有效期、缺值、单位、实际起止和失败清理保持。具体条件见[执行设置](../../../execution.html)。

- 内建流式表达式直接计算当前时刻的数值，减少为单个点反复创建数组的开销；真正的数组计算和独立 `reference` 数值实现保留。性能收益取决于输入和任务，不承诺所有分析等比例加速。
- 同一份未变化状态的资源费用复用，减少重复遍历。必要的临时数组、变量载荷和复制空间仍计入预算；预算估算不等于整个进程 RSS。
- 普通 ASC/BLF 默认单进程接续在当前进程读取、解码；文件并行与 `time_order` 按各自规则创建工作进程。独立批量任务不再因纯 BLF 读取额外建立同类读取进程。详见[执行方式](../../../continuous-files.html)。
- CAN 读取和 BLF 写出复用共用实现。不同来源和读取政策已有的解码失败规则分别保留，见输入页；共用代码不表示所有失败都按同一方式处理。
- 业务批数据及控制消息使用固定字段、有限长度的编码。关闭、取消或构造失败时，尚未释放的资源保留恢复入口；清理失败不会抹掉最初的错误。
- 修复 `SignalSample` 的运行时类型说明，保留 `ScalarValue` 原导入路径与类身份。清理退出使用的内部执行模块，并保留现役入口的行为验证。
- 复合单位采用 `W/s`、`1/W`、`1/J` 等可重新解析的形式。只调整规范显示，`mA` 的尺度、温度偏移和 `N*m` 的量种保持；不能将 `N*m` 自动当作 `J`。
- `RunMetadata.software_version` 省略时读取当前软件版本；显式填写的历史版本不被覆盖。

性能证据来自相同任务、相同输入和相同结果校验下的配对测量；不同计算含义的场景不合并宣称加速。本轮没有以这些改进关闭此前十文件真实日志的性能差距。

## 平台与依赖范围

本版声明 Python `>=3.12,<3.14`。NumPy 在 Python 3.12 为 `>=1.26.3,<2.6`，在 Python 3.13 为 `>=2.1,<2.6`；cantools 为 `>=39.4.3,<46`，jsonschema 为 `>=4.25.1,<4.27`。其他依赖见[安装说明](../../../installation.html)，精确环境快照见[约束文件说明](../../requirements/README.md)。测试上下端组合不等于测试每个中间版本或全部交叉组合。

Linux 的受管工作进程需要 Python 提供 pidfd 接口，且内核实际支持进程组信号；不覆盖发布需要 libc 的 `renameat2` 和目标文件系统的 `RENAME_NOREPLACE`。这些条件不要求静态校验或所有内联计算启动进程。已有 Linux 候选验证限于 x86_64、WSL2 内核 6.18.54.1、Debian glibc 2.41、Python 3.12.15 和容器内 overlayfs；尚不能据此宣称其他文件系统、CPU 架构、原生 Linux 宿主或 macOS 均可使用。

DBC 统一使用不进入持久缓存的读取接口，包括设置了 `CANTOOLS_CACHE_DIR` 的环境。没有改写进程环境，也不意味着上游 diskcache 漏洞已修复；具体安装及分发边界见[安全说明](security.md)与[第三方许可](third-party.md)。

## 安装本版

在新环境中从 PyPI 安装本版并核对自己的任务：

```powershell
py -3.12 -m venv .venv-dev4
.\.venv-dev4\Scripts\python.exe -m pip install "chronaxis==0.1.0.dev4"
.\.venv-dev4\Scripts\python.exe -m pip check
.\.venv-dev4\Scripts\python.exe -m chronaxis guide
```

升级时重点检查 CSV 编码、依赖约束、Linux 执行能力，以及依赖单位字符串作比较的外部程序。信号有效期、持续条件比较符、积分时间依据和请求输出不会因本轮性能改进自动改变。

维护者：liuyaoze，work@liuyaoze.com。