v0.51.1 — 验证修复补丁
v0.51.1 — 验证修复补丁 (Post-Release Verification Fixes)
发布日期:2026-07-05
SemVer 等级:PATCH(仅 bug 修复 + 测试/配置硬化,无 API 变更)
前序版本:v0.51.0(commit d23e5ff)
概要
v0.51.1 是 v0.51.0 发布后的验证硬化补丁版本,修复 v0.51.0 发布后多批次重验证
(Batches A–E)发现的 4 项 bug。本版本为纯修复版本:0 新功能、0 BREAKING 变更、
0 新 crate、0 新协议。56 个 crate 数量与 v0.51.0 完全一致。
修复清单
BUG-A1 — config save/load roundtrip 测试偶发失败 (P2)
eneros-core::config::tests::test_save_and_load_roundtrip 在 cargo test --workspace
并行运行时偶发失败(missing field topology / 空文件)。
调查结论:生产代码无 bug——to_toml_string() 对 EnerOSConfig::default() 产出非空 TOML。
失败由测试使用固定临时路径 eneros_config_test/test_config.toml 在并发测试或残留临时文件
场景下产生竞态。
修复:测试临时路径改为唯一路径(PID + nanos),新增非空 + [topology] section 回归断言。
BUG-C1-1 — FastDecoupledSolver 零电压初值产生 NaN (P1)
FastDecoupledSolver::solve 当 v_initial 含 0.0 时产出 NaN 电压,返回 Ok 含 NaN
而非报错。根因:FD solver 在 P-θ 与 Q-V 更新中对 v[i] 做除法(Stott & Alsac /V 缩放),
未校验初值。
修复:solve() 顶部校验所有 v_initial 条目为正有限数;若任何条目 ≤ 0 或非 finite,
返回 Err(EnerOSError::PowerFlow("v_initial contains non-positive or non-finite voltage..."))。
新增测试:
fd_solver.rs::test_fd_rejects_non_positive_voltage_initial(单元回归,覆盖 0/负/NaN/Inf)fd_solver_boundary.rs(新文件,7 边界测试:空 Y-Bus / 单节点 / 奇异 B' / 零电压 / 极值 tolerance / max_iterations=0)
BUG-E3-1 — eneros.toml [quality].fuzz_targets 缺失 (P3)
eneros.toml [quality] section 不含 fuzz_targets 字段。
修复:新增 fuzz_targets = ["iec104", "iec103", "dlt698", "pmu_c37118"]。
BUG-E3-2 — eneros.toml proptest_cases=1000 与注释 256 漂移 (P3)
eneros.toml proptest_cases = 1000,但注释说 "proptest 默认 256 cases(CI 友好)"。
修复:改为 proptest_cases = 256,与注释一致。
验证结果(F2 全量质量门)
| 质量门 | 结果 |
|---|---|
cargo fmt --all -- --check |
PASS(0 diff) |
cargo build --workspace |
PASS(0 error) |
cargo clippy --workspace --all-targets -- -D warnings |
PASS(0 warning) |
cargo test --workspace |
PASS(~4018 passed / 0 failed / 17 ignored) |
cargo doc --workspace --no-deps |
PASS(0 new warning) |
cargo deny check |
PASS(advisories/bans/licenses/sources 全 ok) |
升级指南
v0.51.1 是 PATCH 版本,无 BREAKING 变更,可直接从 v0.51.0 升级:
git fetch && git checkout v0.51.1
cargo build --workspace行为变更:FastDecoupledSolver::solve 现在对 v_initial 中的非正/非 finite 电压返回
Err(EnerOSError::PowerFlow(...)),而非静默产出 NaN。调用方应确保初值为正有限数
(flat start 使用 None 或 Some(&[1.0; n]))。
详细变更
详见 CHANGELOG.md §"[0.51.1]"。