Repository navigation
Releases: Kirky-X/CodeNexus
Release list
v0.4.0-rc.2
What's Changed
- chore(deps): bump the minor-and-patch group with 4 updates by @dependabot[bot] in #44
- chore(deps): bump @vitest/mocker and vitest in /graph-viewer by @dependabot[bot] in #46
Full Changelog: v0.3.13-rc.1...v0.4.0-rc.2
v0.3.13-rc.1
What's Changed
- fix(security): ignore rkyv/cxx/event-listener/paste advisories in cargo-audit by @Kirky-X in #34
- chore(deps): bump the minor-and-patch group across 1 directory with 8 updates by @dependabot[bot] in #33
- chore(deps): bump the minor-and-patch group across 1 directory with 4 updates by @dependabot[bot] in #30
Full Changelog: v0.3.12...v0.3.13-rc.1
What's Changed
- fix(security): ignore rkyv/cxx/event-listener/paste advisories in cargo-audit by @Kirky-X in #34
- chore(deps): bump the minor-and-patch group across 1 directory with 8 updates by @dependabot[bot] in #33
- chore(deps): bump the minor-and-patch group across 1 directory with 4 updates by @dependabot[bot] in #30
Full Changelog: v0.3.12...v0.3.13-rc.1
What's Changed
- fix(security): ignore rkyv/cxx/event-listener/paste advisories in cargo-audit by @Kirky-X in #34
- chore(deps): bump the minor-and-patch group across 1 directory with 8 updates by @dependabot[bot] in #33
- chore(deps): bump the minor-and-patch group across 1 directory with 4 updates by @dependabot[bot] in #30
Full Changelog: v0.3.12...v0.3.13-rc.1
v0.3.12
P-DB + P-DB-fix: dynamic max_db_size + --fresh flag + read-only 4 TiB cap
Summary
DuckDB max_db_size 从硬编码 16 GiB 改为动态计算,解决 DB 膨胀问题(6.6 MB 源码经多次 --force 累积至 35 GB DB)。read-only 连接 max_db_size 从 16 GiB 改为 4 TiB cap,修复 >16 GiB DB 查询崩溃的 CRITICAL bug。
Fixed
- P-DB: dynamic
max_db_size+--freshflag —compute_max_db_size(80% 可用磁盘空间,2 的幂,clamp [16 GiB, 4 TiB],OnceLock 缓存)+--fresh标志(删除旧 DB 文件回收死空间,含 .lbug 校验 + TOCTOU 修复) - P-DB-fix C1 CRITICAL: read-only max_db_size 16 GiB → 4 TiB cap — lbug VMRegion 用 max_db_size 决定 mmap 区域大小,read-only 查询触及 >16 GiB 页面会触发 BufferManagerException
- P-DB-fix H1 HIGH:
--freshadded to SENTINEL_DEFAULTS — 原先 sdforge 标记 required=true,用户必须传--fresh false - P-DB-fix M1:
handle_fresh_flagusesparse::<bool>()— 与 handler 的bool::from_str保持一致 - P-DB-fix MEDIUM-2: exit code 4 → 6 — InvalidInput 语义与 NotFound 的 exit 4 冲突
- P-DB-fix LOW-2:
Ok(false)logs info — 用户可见--fresh生效状态 - P-DB-fix L-2:
checked_next_power_of_two— 消除理论 panic 风险
Audit
- tiangang SAST: 0 CRITICAL / 0 HIGH ✅
- diting architecture + performance: 0 HIGH / 0 CRITICAL ✅
- kueiku hard-bug analysis: 1 CRITICAL + 1 HIGH found and fixed ✅
- 4490 tests passed, 0 clippy warnings
- cargo audit + cargo deny passed
- coverage ≥95%
Full Changelog: v0.3.11...v0.3.12
What's Changed
- chore(deps): bump softprops/action-gh-release from 3.0.1 to 3.0.2 in the minor-and-patch group by @dependabot[bot] in #28
Full Changelog: v0.3.11...v0.3.12
v0.3.11 — L6+L7 内存溢出修复
v0.3.11 — L6+L7 内存溢出修复
70 GB 主机峰值内存从 60 GB 降至 ~4 GB。
L6 — 管线流式化 + LSP kill 超时 + iterator API
- L6-1 pipeline streaming + ctx.take():
ResolvePhase改用ctx.remove::<ScopeOutput>("scope")取得 Graph 所有权(替代scope.graph.clone(),消除大型仓库多 GB 的 deep-clone);Phase::run签名从&PipelineCtx改为&mut PipelineCtx支持ctx.remove独占借用。 - L6-3 iterator API:
save_nodes/save_edges/write_nodes_csv_stream/write_edges_csv_stream签名从&[Node]/&[Edge]改为impl IntoIterator<Item = &Node/&Edge>,消除Vec<Node>/Vec<Edge>中间集合;BufWriter64KB 减少 syscall。 - L6-3 LSP kill timeout:
force_kill_and_wait用wait_with_timeout替代child.wait()(防止 D-state/zombie 永久阻塞);新增KILL_TIMEOUT_MS=3000/SHUTDOWN_TIMEOUT_MS=5000常量。
L7 — 6 个剩余瓶颈定位与修复
- L7-1 LZ4 buffer lifetime:
ParsePhase移除RamFirstSources字段,LZ4 压缩缓冲存入PipelineCtx,parse 阶段读取后立即释放。10k 文件仓库省 ~3 GB。 - L7-2 parse edge cleanup:
ScopeResolutionPhase把 edges clone 进 graph 后clear()+shrink_to_fit()result.edges和seen_qns。大型仓库省 ~1 GB。 - L7-3 PipelineCtx drain:
LoadPhase用ctx.remove取得ScanOutput/ResolveOutput所有权,返回时立即 drop。省 ~1–2 GB。 - L7-4 RAM-first amplification factor:
evaluate_ram_first_budget用total × 8估算峰值 RSS 对比max_rss_bytes / 2,修正预算失真。70 GB 主机允许 ~2.2 GB 仓库走 RAM-first;4 GB 笔记本仅允许 ~125 MB。 - L7-5 LadybugDB buffer_pool cap: 生产环境
SystemConfig显式buffer_pool_size=4GB/max_db_size=16GB/max_num_threads=8。DuckDB 默认 80% 物理内存(70 GB 主机 ~56 GB),是 L6 后剩余的主要瓶颈。省 ~52 GB。 - L7-6 LSP on-demand startup:
enhance_with_lsp先查询 Function/Method 行,收集实际出现的扩展名集合,只start()需要的 LSP provider。纯 Rust 仓库现在只启动 rust-analyzer,省 ~3–5 GB。
三维度审查(rule 22+24)
| 维度 | CRITICAL | HIGH | MEDIUM | LOW | 结论 |
|---|---|---|---|---|---|
| tiangang SAST | 0 | 0 | 1 | 4 | ✅ 允许发版 |
| diting architecture | 0 | 1 (已修复) | 1 | 1 | ✅ 允许发版 |
| diting performance | 0 | 0 | 2 | 3 | ✅ 允许发版 |
所有 MEDIUM/LOW 不阻断,已记入 v0.3.12 议程。
验证
cargo clippy --lib --features "core"/"full" -- -D warnings: 0 warningscargo test --lib --features "full": 4461 passed, 0 failedcargo test --lib --features "core": 2260 passed, 0 failedcargo test --tests --features "full": 163 integration tests passed- pre-push hook: fmt/check/clippy/test/coverage 95%/audit/deny 全绿
Full Changelog: v0.3.10...v0.3.11
Full Changelog: v0.3.10...v0.3.11
Release v0.3.10: 五层内存溢出修复
v0.3.10 的核心是内存溢出五层修复(L1–L5),并涵盖自 v0.3.6 之后累积的解析与审查修复。实际变更提交 15 个(已排除 merge、版本号 bump 与 CI/release 自动化提交;compare 共 18 commits)。注意:按发布时间规则 PREV=v0.3.6(该 Release 于 2026-07-24 19:08:05Z 重发,早于本版本 9 秒),而 v0.3.7 / v0.3.8 / v0.3.9 的 tag 提交在 git 历史上位于 v0.3.6 与本版本之间,故本范围涵盖这三版的修复内容。
修复
- 内存溢出五层修复:storage L1+L3+L4——内存预算、图视图与流式 CSV(
63538be48d);parse L2——mpsc channel + par_chunks 流式处理(702685d06b);index L5 内存溢出自适应降级(5cc9dd15dd)。 - 解析:resolve B13 修正 Rust crate-root 再导出的 CALLS 边(
6651c274e3);parse 解决 DQ-002 重复 FQN 与 DQ-004 悬空边(7f475281b0)。 - 构建与分析:链接 libgcc 解决 mold 下
__cpu_model链接失败(5de82fcb4a);修复 bulwark 测试发现的 5 个 bug(6e0a7fccc1);稳定 C1 增量解析基准测试(74f3ab75c5)。
变更
- trace:impact 测试与 ImpactConfig 默认值解耦(M3,
c89a0114d3)。
维护
- gitignore 忽略 .codenexus 本地索引目录(
ba2e8ba4f8)。 - README 补充旧版 libstdc++ 下的源码构建说明(
959d03a1d4)。 - CI:移除 cargo publish 已废弃的 --token 参数(
4877df4dd4)。 - 审查整改:关闭 v0.3.8 / v0.3.9 diting 审查 M1/M2/M3 缺口(
243b24b503、58384779c5);修正 2 处文档-代码不一致(bc4c8d3ff6)。
Full Changelog: v0.3.6...v0.3.10
Release v0.3.9: 索引质量修复
v0.3.9 修复 CalNexus 索引质量问题:重复 FQN 与悬空边。实际变更提交 3 个(已排除 merge、版本号 bump 与 CI/release 自动化提交;compare 共 4 commits)。
修复
- parse:解决 DQ-002 重复 FQN 与 DQ-004 悬空边(
7f475281b0)。 - 测试:稳定 CI 上 C1 增量解析基准测试(
74f3ab75c5)。
维护
- 测试:关闭 v0.3.9 diting 审查 M1/M2/M3 缺口(
58384779c5)。
Full Changelog: v0.3.8...v0.3.9
Release v0.3.8: 解析修复与审查整改
v0.3.8 修正 Rust crate-root 再导出的 CALLS 边解析问题,修复一轮 bulwark 测试发现的 5 个 bug,并完成 diting 审查整改。实际变更提交 5 个(已排除 merge、版本号 bump 与 CI/release 自动化提交;compare 共 6 commits)。
修复
- resolve:修正 Rust crate-root 再导出的 CALLS 边解析(B13,
6651c274e3)。 - analysis:修复 bulwark 测试发现的 5 个 bug,并完成 triage 复查整改(
6e0a7fccc1)。
变更
- trace:impact 测试与 ImpactConfig 默认值解耦(M3,
c89a0114d3)。
维护
- 文档:修正 bulwark 复查中发现的 2 处文档-代码不一致(
bc4c8d3ff6)。 - 测试:关闭 v0.3.8 diting 审查 M1/M2/M3 缺口(
243b24b503)。
Full Changelog: v0.3.7...v0.3.8
Release v0.3.7: 死代码误报修复与系统性性能优化
v0.3.7 重点消除死代码分析误报,并完成一轮系统性性能优化(C1–C9、T182–T206)。实际变更提交 29 个(已排除 merge、版本号 bump 与 CI/release 自动化提交;compare 共 30 commits)。注意:v0.3.6 的 Release 发布时间晚于 v0.3.7,但其 tag 指向的提交位于 v0.3.5 与 v0.3.7 之间,故本范围涵盖 v0.3.6 补丁内容与本版本自身的构建修复。
新增
- 死代码分析:B7 识别
pub use再导出(89b097e6ce)。 - LSP:C9 新增 references 方法,带 5 分钟 LRU 缓存,适配 RustAnalyzer / Pyright / Clangd(
08f2dc1bc7)。 - 索引:T206 以 BLAKE3 取代 SHA-256,哈希速度提升 5–10 倍(
43c94e7d6d)。
修复
- 死代码误报:Phase B 在 CalNexus 上消除 100% 误报(
05d7d4a54d);T182 消除宏合成入口点导致的误报(27142ac2f6)。 - 确定性与正确性:B12 消除 HashMap 迭代导致的索引非确定性(
69ead3f651);daemon C6 修正 EMA 输入方向(高频延长、低频收缩窗口)(cd1fc381fa);index T206 规范化 rootPath 修复失效检测(2aaf18be64);测试模块补 importMAX_SUBGRAPH_NODES(aba8e6764f)。 - 构建:链接 libgcc 解决 mold 下
__cpu_model链接失败(5de82fcb4a)。 - 代码质量:清理 8 个既有 clippy 警告(T200,
97ba1f75ee);LSP doctest 导入路径改用公共再导出(ce939ec277)。
变更
- 分析:批量预取消除 N+1 查询并做 DRY 重构(
ee398a6e71)。 - trace:bfs 与 call_graph 共享 path_set,消除重复扩展(
83e91820cb)。 - community:C3 Louvain 算法升级为 Leiden(
005375195e)。 - query:C4 BM25 升级为 BM25F,支持字段加权评分(
f3a5ba27c8)。 - resolve:C8 为 ScopeChain 增加 HashMap 索引,实现 O(1) 查找(
9a7e67f80f)。 - index:C5 以 FastCDC 内容定义分块取代整文件处理(
3683bc0546)。 - daemon / parse:C6 基于事件间隔 EMA 的自适应防抖窗口(
1c003fe677);C1 在 daemon 中启用 tree-sitter 增量解析(08db9ed68e);T206 提取 TreeCache 并限制增量解析大小(c1128e5c22)。 - LSP:T206 为 references_cache 增加 by_uri 反向索引(
8bddab2287)。 - 结构:dead_code.rs 拆分为 mod.rs + tests.rs(
6e78e9248a)。 - 依赖:升级 lsp-server / rmcp / uuid / signal-hook 并迁移到 lsp-server 0.10 API(
5636373bf7);移除 rmcp/clap 直接依赖,改用 sdforge 再导出(266acd1b21)。
维护
- CI:cargo-audit hook 在网络失败时回退到本地 advisory-db(
35b02314a8)。 - 测试:daemon_hot_update 集成测试用轮询替代 sleep(
2186e579df)。 - 文档:T190–T194 同步 README 与 specmark 规格(
05a36587f4);BatchPrefetch 往返数值补充 doc 注释(eb74731a1e)。
Full Changelog: v0.3.5...v0.3.7
Release v0.3.6: 死代码分析强化与性能优化补丁
v0.3.6 是一轮以死代码分析强化与系统性性能优化(C1–C9、T182–T206)为主的补丁版本。实际变更提交 28 个(已排除 merge、版本号 bump 与 CI/release 自动化提交;compare 共 29 commits)。
范围说明:本 Release 实际发布于 2026-07-24,晚于 v0.3.7 / v0.3.8 / v0.3.9 的发布时间,但 v0.3.6 tag 指向的提交(2026-07-20T02:56Z)在 git 历史上早于后三者。按发布时间规则取 PREV=v0.3.9 时,
compare v0.3.9...v0.3.6返回 status=behind、0 个提交(v0.3.6 落后 v0.3.9 共 11 个提交)。因此本说明以 v0.3.6 tag 在 git 历史中的实际前一版本 v0.3.5 为基准撰写。
新增
- 死代码分析:B7 识别
pub use再导出(89b097e6ce)。 - LSP:C9 新增 references 方法,带 5 分钟 LRU 缓存,适配 RustAnalyzer / Pyright / Clangd(
08f2dc1bc7)。 - 索引:T206 以 BLAKE3 取代 SHA-256,哈希速度提升 5–10 倍(
43c94e7d6d)。
修复
- 死代码误报:Phase B 在 CalNexus 上消除 100% 误报(
05d7d4a54d);T182 消除宏合成入口点导致的误报(27142ac2f6)。 - 确定性与正确性:B12 消除 HashMap 迭代导致的索引非确定性(
69ead3f651);daemon C6 修正 EMA 输入方向(高频延长、低频收缩窗口)(cd1fc381fa);index T206 规范化 rootPath 修复失效检测(2aaf18be64);测试模块补 importMAX_SUBGRAPH_NODES(aba8e6764f)。 - 代码质量:清理 8 个既有 clippy 警告(T200,
97ba1f75ee);LSP doctest 导入路径改用公共再导出(ce939ec277)。
变更
- 分析:批量预取消除 N+1 查询并做 DRY 重构(
ee398a6e71)。 - trace:bfs 与 call_graph 共享 path_set,消除重复扩展(
83e91820cb)。 - community:C3 Louvain 算法升级为 Leiden(
005375195e)。 - query:C4 BM25 升级为 BM25F,支持字段加权评分(
f3a5ba27c8)。 - resolve:C8 为 ScopeChain 增加 HashMap 索引,实现 O(1) 查找(
9a7e67f80f)。 - index:C5 以 FastCDC 内容定义分块取代整文件处理(
3683bc0546)。 - daemon / parse:C6 基于事件间隔 EMA 的自适应防抖窗口(
1c003fe677);C1 在 daemon 中启用 tree-sitter 增量解析(08db9ed68e);T206 提取 TreeCache 并限制增量解析大小(c1128e5c22)。 - LSP:T206 为 references_cache 增加 by_uri 反向索引(
8bddab2287)。 - 结构:dead_code.rs 拆分为 mod.rs + tests.rs(
6e78e9248a)。 - 依赖:升级 lsp-server / rmcp / uuid / signal-hook 并迁移到 lsp-server 0.10 API(
5636373bf7);移除 rmcp/clap 直接依赖,改用 sdforge 再导出(266acd1d21)。
维护
- CI:cargo-audit hook 在网络失败时回退到本地 advisory-db(
35b02314a8)。 - 测试:daemon_hot_update 集成测试用轮询替代 sleep(
2186e579df)。 - 文档:T190–T194 同步 README 与 specmark 规格(
05a36587f4);BatchPrefetch 往返数值补充 doc 注释(eb74731a1e)。
Full Changelog: v0.3.5...v0.3.6
Release v0.3.5: 只读并发安全与 CLI 稳定性修复
v0.3.5 以只读并发安全为主线,同时修复大量 CLI 静默失败与崩溃问题,并升级主要依赖。实际变更提交 42 个(已排除 merge、版本号 bump 与 CI/release 自动化提交;compare 共 43 commits)。
新增
- 只读并发安全:存储层新增只读打开与
DatabaseLocked错误(463470016c);read_only从 config → repo → bootstrap 贯穿传递(908621c6b4);读命令统一路由到只读 Kit,锁冲突以退出码 2 退出(344f8b5c29);QueryFacade(1b83de78d3)与TraceModule(5877cbe99d)同步支持只读访问。 - context 查询增强:支持短名解析并上报歧义符号(
5f936f9890);--project参数支持解析项目名到 id(ed4678d4b7)。
修复
- search:不再按空项目字符串过滤结果(
529aba1bca);存储错误记入日志而非静默跳过(3445c4100c);search_regex模式大小设上限(9ed1d4886a)。 - rename:支持
#成员分隔符的 QN 重算(1b493997eb);遇到歧义符号直接上报而非静默回退(773e5a422e)。 - CLI 健壮性:
default_db_path在无 name 参数命令下不再 panic(e3a1bff305);所有读命令前置校验 DB 缺失、context --project合法性校验(7a5c16bb31);4 个子命令阈值参数可通过哨兵默认值省略(29113e1bee);退出码分类修正与resolve_start_id歧义检测(7af5f00724);失败时以非零码退出(bee1dc6b05)。 - 其他模块:service 层错误不再以空结果静默返回(
c1b0a94f55)、支持项目名解析与 complexity 磁盘回退(0c45a490de);list 缺--db时报错而非返回空列表(2b97bb55a1);index 识别 lbug 0.18.2 写事务冲突文本并重试(30f4390541);daemon 新增 SIGTERM/SIGINT 信号处理实现优雅退出(BUG-002,3c44d13b07);hook 对无效 stdin 负载记录告警以便审计(f6f97e66a4)。
变更
- 存储层
Mutex换RwLock以支持并发读(a314183d1d);trace 对歧义符号跳过 BFS(e34103d59e);traceload_graph增加容量上限与批量加载,修复 77 秒入口链回归(d0dbd2794f记录、d6dd726857实施);index 哈希 diff 并行化(637e6a9b5b);complexity 磁盘回退加固:TOCTOU 防护、缓存与惰性切片(03021c0f01)。
维护
- 依赖升级:主要依赖批量升级并根因移除 zstd-sys(
7e69efd50f、4da58d7e62);SKILL.md 同步 0.4.2 CLI 行为并拆分为 references 结构(f70b3bfb41、649b5d11d1);补充 search/lsp/list 根因说明、impact 上限与只读修复文档(3ca6a2ad04、e6d9f33e3c、565ccd9a45);同步 CHANGELOG 与 strix/DB 压缩分析(a6b41a4182、3c8eefe8f3);gitignore strix_runs 输出目录(2008209b82);补 CLI 集成测试覆盖 index、daemon 热更新与全部 27 个子命令,并按三维审查整改(f462a640cc、5664e50ad2、86b68b89e2)。
Full Changelog: v0.3.4...v0.3.5