Releases: mcpp-community/mcpp
Releases · mcpp-community/mcpp
v0.0.58
v0.0.57
修复
- 包描述符解析改为 identity-first:不再「按候选文件名跨索引无序扫描、撞上第一个就返回」,
而是用描述符声明的规范(ns, name)二元组校验命中文件的身份。修复compat.zlib在全新
CI 上偶发index entry has no mcpp field(外来xim-pkgindex/.../zlib.lua因目录遍历
顺序先被撞到而冒充compat.zlib)。索引目录改为排序后确定性遍历。
重构
- 新增统一的
canonical_xpkg_identity()归一器(身份 = 二元组(ns, name);ns为可分层命名
空间路径,name为单一末段;点号名a.b本质(a, b))。归一三步:无声明 ns → 继承所属索引
默认 ns;求 FQN;按最后一个点切分。匹配 = 限定请求精确相等 / 非限定请求按默认搜索路径
[mcpplibs, compat]。compat降级为搜索路径里的数据项(kCompatNamespace),不再是匹配
分支。[indices]路径索引的无命名空间描述符继承索引命名空间。
CI
ci-{linux,macos,windows}.yml各加一步:用本次构建出的 mcppgit clone并mcpp build/
mcpp run外部 C++ 工程 xlings(openxlings/xlings),验证自托管 mcpp 能构建真实外部项目。
v0.0.56
修复
mcpp run/test/build不再把目标的捆绑 glibcLD_LIBRARY_PATH注入到
mcpp 自身进程,因而泄漏进它启动的宿主/bin/sh。在 glibc 比捆绑版(2.39)更新的
发行版上,sh会被强制加载捆绑的旧 libc,无法满足宿主libtinfo的GLIBC_2.42
符号而在目标运行前崩溃(报错形如sh: ... version 'GLIBC_2.42' not found)。新增
platform::process::run_exec/capture_exec:直接 exec(不经 shell),额外环境
只作用于子进程;run / test / 快速路径 ninja / 整次构建 ninja 四个启动点全部改走它。
变更
mcpp pack --mode模式更名,语义更清晰(旧名保留为永久别名,tarball 后缀冻结不变):
bundle-project→vendored(默认)、bundle-all→self-contained;新增
system模式(完全依赖宿主提供所有共享库,用于发行版打包 / 同发行版部署)。
static不变。两轴模型:libc 由--target选(gnu/musl),--mode只选打包深度。
v0.0.55
新增
[targets.<name>]新增按目标的键defines/cxxflags/cflags,作用于该目标
独占的入口源(它的main)。用于二进制入口私有的标志(如-DBUILD_SERVER=1、
局部告警抑制),不影响共享模块/实现对象(compile-once 模型不变)。需要穿透共享代码的
差异请用 workspace member 或[features](#131)。[targets.<name>]新增required_features:仅当列出的 feature 全部激活时才构建该目标,
否则静默跳过。是构建选择门禁,不激活 feature。mcpp test现在接受--profile/--features/--strict,让被测代码与测试二进制
在所选 profile/feature 下编译(适合 sanitizer、契约求值语义等整次构建模式)。
变更
[targets.<name>]下的不支持键不再被静默丢弃,而是产生 warning(--strict下为 error),
并指引到正确的机制(workspace / features / profile)。- 文档
docs/05-mcpp-toml.md(及docs/zh)新增"构建配置该放哪"的决策指引。
设计记录见.agents/docs/2026-06-18-per-target-build-config-design.md。
v0.0.54
修复
mcpp new <name> --template <pkg>:对声明了命名空间的模板包(如
mcpplibs.llmapi以裸名llmapi引用)现在能从描述符派生出
(namespace, shortName) 坐标,正确完成 semver 解析与安装(#130)。
其他
- 架构重构(零行为变更):
cli.cppm从 6192 行精简为约 480 行的纯命令
分发层;src/cli/cmd_*仅保留参数解析与路由,全部领域实现下沉到属主
子系统 ——mcpp.build.{prepare,execute}、mcpp.toolchain.{post_install, lifecycle}、mcpp.pm.index_management、mcpp.bmi_cache.maintenance、
mcpp.scaffold.create、mcpp.publish.pipeline、mcpp.pack.pipeline、
mcpp.doctor、mcpp.project、mcpp.fetcher.progress。
设计与迁移记录见.agents/docs/2026-06-10-cli-modularization.md。
v0.0.53
新增
- 库 / 组件下载现在与工具链下载一样显示实时进度条、字节进度与速度。自定义 /
项目索引依赖改经 xlings NDJSONinterface install_packages安装(仍落在项目
本地数据根,不改变安装位置与 install hook 顺序),不再静默卡住。
修复
- 下载连接 / 预取大小阶段(
totalBytes尚未知)进度行不再"冻结"无反馈:
新增不确定态渲染,显示connecting…+ 已用时,流式无Content-Length
时显示已下载字节,直到拿到总大小再切换为百分比进度条。
其他
- 内置 xlings 版本上调至
0.4.51。 - 下载进度的状态机与渲染集中到
mcpp.ui(DownloadProgress),工具链 /
内置索引 / 自定义索引三条路径共用同一套 UI。
v0.0.52
(no CHANGELOG entry found for 0.0.52)
v0.0.51
(no CHANGELOG entry found for 0.0.51)
v0.0.50
(no CHANGELOG entry found for 0.0.50)
v0.0.49
(no CHANGELOG entry found for 0.0.49)