Skip to content

Commit 2dbd1be

Browse files
committed
release: 0.0.96 — windows scanner symlink-escape crash fix (#230)
Version bump + CHANGELOG entry for the release notes extractor; also backfill a pointer entry for 0.0.95 (released without one).
1 parent 8ebbbc8 commit 2dbd1be

3 files changed

Lines changed: 36 additions & 2 deletions

File tree

.xlings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"workspace": {
3-
"mcpp": "0.0.95"
3+
"mcpp": "0.0.96"
44
}
55
}

CHANGELOG.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,40 @@
33
> 本文件追踪 `mcpp-community/mcpp` 公开仓的版本演进。
44
> 格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/)
55
6+
## [0.0.96] — 2026-07-18
7+
8+
### 修复
9+
10+
- **[windows] `mcpp test --workspace` 静默崩溃(裸 exit 127,实为 0xC0000409)**
11+
(#230,修复 #231)。三层根因:
12+
1. 0.0.95 扫描器的 glob walk 新增 `follow_directory_symlink`,而项目本地
13+
`.mcpp/.xlings/data/<index>` 是指回索引根的**符号链接** → walk 逃逸出成员
14+
目录、扫遍整个索引 checkout(CI 里含 vendored xim-pkgindex);
15+
2. `path_matches_glob``generic_string()` 拼窄串,MSVC 在非 CJK ANSI 代码页
16+
(runner ACP=1252)下遇到中文文件名 `bug-report---问题反馈.md`
17+
`std::system_error`;
18+
3. 异常逃出 `main` 未捕获 → `std::terminate``__fastfail`(0xC0000409),
19+
git-bash 显示为无任何输出的 exit 127。
20+
- 修复:`expand_glob`/`expand_dir_glob` **按名剪枝 `.mcpp` 目录**(mcpp 自身
21+
元数据目录永远不是源码目录,从源头切断符号链接逃逸,顺带避免每个成员把
22+
整个索引树白走一遍);`path_matches_glob` 对无法窄化的文件名按"不匹配"
23+
跳过而不是摧毁构建;`main()` 增加最后防线 catch,逃逸异常打印真实错误并
24+
以 70 退出,不再静默 fastfail。
25+
- 取证:runner 开 WER 全内存 dump,崩溃栈+被转换字符串逐帧还原(记录见
26+
mcpplibs/mcpp-index `debug/mcpp230-windows-repro` 分支及 #230)。
27+
- 回归测试:`tests/e2e/113_scanner_mcpp_dir_prune.sh`(`.mcpp` 符号链接逃逸
28+
必须被剪枝;CJK 文件名不得致命)。linux 行为对照:0.0.95 会顺着该符号链接
29+
把项目外源码编进来(链接期 duplicate `main`),修复后构建干净。
30+
31+
## [0.0.95] — 2026-07-17
32+
33+
- 见 GitHub Release v0.0.95:声明式清单能力(features.sources / generated_files /
34+
cfg 条件 sources / per-glob flags,#223)、汇编源一等公民(.S/.s/.asm 进
35+
sources,NASM 按目标推导 `-f`,#220)、build.mcpp 补全(环境契约 + cross 下
36+
运行 + 依赖包执行,#222)。
37+
已知问题:#230(本版 windows workspace 崩溃,0.0.96 修复)、#232(冷环境
38+
`xim:nasm` 自举产出空载荷,待修)。
39+
640
## [0.0.94] — 2026-07-15
741

842
### 修复

mcpp.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mcpp"
3-
version = "0.0.95"
3+
version = "0.0.96"
44
description = "Modern C++ build & package management tool"
55
license = "Apache-2.0"
66
authors = ["mcpp-community"]

0 commit comments

Comments
 (0)