Releases: 3667808244/EazyMake
Release list
EazyMake 1.4.1 — pkg install 支持 git 仓库 URL
EazyMake 1.4.1 — pkg install 支持 git 仓库 URL
1.4.0 正式发布后的首个补丁版本(单主题:ezmk pkg install 支持 git 仓库 URL)。此前 git@github.com:user/repo.git / https://github.com/user/repo.git 无法作为包来源安装;本版把「git 仓库作为包来源」落地为完整链路:识别 → 克隆 → ref 定位 → 复用目录安装链路 → lockfile 记录。公共 API 无破坏性变更(纯增量:新来源 + 新可选 flag --branch + 新可选 lockfile 字段)。
新增 / 行为变更
- git 来源检测:安装参数按「本地目录 → git URL → 归档 URL → 名称搜索」顺序判定;
git@(SSH scp)前缀 /git://·file://协议 / 剥#ref后.git结尾 → git 源;归档 URL 零误伤;is_git_url启发式提取到util(repo add 与 pkg install 共享) - 克隆安装链路:克隆到唯一临时目录 → 复用目录安装全链路(校验 → 钩子 → 依赖 → 编译 → 拷贝 → postinstall → lockfile);
git_head_commit()解析锁定 commit - ref 定位:URL 片段
#<ref>+ 新可选 flag--branch <ref>(优先级 flag > 片段 > 默认分支);分支/标签/默认分支浅克隆--depth 1,commit SHA 全量克隆 + 检出 - lockfile 记录 git 源:
LockedPackage新增可选commit字段(旧 lockfile 兼容,version 保持 1);git 源记录source="git"+source_url+commit(sha256 留空);--locked按记录的 source_url + commit 重新克隆,HEAD 与 commit 不一致 → fatal(防 force-push 漂移) - 完整性语义:git 源以 commit SHA 为指纹;显式
--sha256提示跳过;git://明文协议警告 + 确认(-y跳过)
测试
全量 1020 用例 / 5970 断言零失败(bash build.sh test-all;1.4.0 基线 1003/5835,+17 用例/+135 断言);i18n 三向一致(402 键 × en/zh + zh-TW 变体)。
资产
ezmk-windows-x64.zip(含ezmk.exe/ezmk-lua.exe/_ezmk补全)+ 独立ezmk.exe/ezmk-lua.exe(含.sha256边车,供 install.ps1 校验)ezmk-linux-x64.tar.gz/ezmk-macos-arm64.tar.gz(含ezmk/ezmk-lua/_ezmk)- 完整变更记录:CHANGES.md
EazyMake 1.4.0 — 调试配置自动化 + 语言标准收尾 + workspace scan
EazyMake 1.4.0 — 调试配置自动化 + 语言标准收尾 + workspace scan
1.4.0 是 1.3.x 全部补丁收口后的首个功能 minor(dev.1 ~ dev.7 + pre.1 发布前收口)。公共 API 无破坏性变更(纯增量;破坏性变更仍仅归 2.0.0)。
新增 / 行为变更
- 调试配置自动化(dev.1):
ezmk project export vscode一键生成.vscode/三件套(launch/tasks/settings);per-platform 调试器(Windows+MSVC →cppvsdbg;gcc/clang →cppdbg+miDebuggerPath;macOS →lldb);与[compile.profile.*]/default_profile联动 - 语言标准收尾(dev.2 ~ dev.4):工具链能力表
max_supported_std(gcc/clang/msvc 分段)+[pkg] strict_std_check校验严格化开关;编译协商(语义 B)——源码包按max(包min, 消费者min)重编并 cap 到能力表与包上界;CMake 互操作——import读CXX_STANDARD/C_STANDARD→ 区间 language、export超能力注释 - 功能收口(dev.5):
watch --run -- <args>参数透传;workspace watch(-w重定向扩展、ww简写);pack --format tgz别名;sha256 边车自动校验(本地归档自动读<archive>.sha256,显式哈希优先) - workspace scan(dev.7):
ezmk workspace scan [<dir>] [--dry-run] [-y](ws简写)一键采纳现有目录树——递归收集含ezmk.toml的子目录、生成/合并ezmk-workspace.toml(保留注释与 options) - 代码质量审计(dev.6):修复 8 项 P0 + 高价值 P1(确定性缓存签名、
--locked真锁版本、路径穿越、git branch 注入、MSVC 本地化解析等)+ 4 个恒真测试 - 发布前收口(pre.1):全量文档核对与打磨、skill 一致性、5 项缺陷修复(语言超能力警告 / 跨盘符缓存键 / zip 解压上限 / Lua 循环表 / CMake C 侧能力)
测试
全量 1003 用例 / 5835 断言零失败(bash build.sh test-all);i18n 三向一致(397 键 × en/zh + zh-TW 变体)。
资产
ezmk-windows-x64.zip(含ezmk.exe/ezmk-lua.exe/_ezmk补全)+ 独立ezmk.exe/ezmk-lua.exe(含.sha256边车,供 install.ps1 校验)ezmk-linux-x64.tar.gz/ezmk-macos-arm64.tar.gz(含ezmk/ezmk-lua/_ezmk)- 完整变更记录:CHANGES.md
v1.3.6
1.3.6 — 代码质量收口(技术债清理)(2026-08-26)
纯重构零新功能:-Wall -Wextra 清零、parse_language 错误文案与 �er_map 一致(补 98/03/26)、consumer_std_min 校验去噪(每进程只 warn 一次)、归档遍历(collect_stage_entries)与运行逻辑(
un_executable)去重、
un_tests 机械拆分(~550 行单函数按框架拆)、测试文件按主题拆分( est_integration.cpp 3757→2610 行)。
公共 API 无破坏性变更(纯内部重构)。全量 911 用例 / 5302 断言零回归。
详见 CHANGES.md。
v1.3.3
1.3.3 — workspace 双字母命令简写 (2026-08-25)
为 workspace 命令组补齐双字母简写:wl/wb/wt/wc → workspace list/build/test/clean(kAliases 表加 4 行,与 p/k/r 同款规则)。附带:workspace 命令接受 -v/--verbose(简写展开提示可展示,与其他命令组一致)。
公共 API 无破坏性变更(纯增量别名)。刻意不做:w 单字母、completions/_ezmk 补全、example 组简写。
详见 CHANGES.md。
EazyMake 1.3.0
EazyMake 1.3.0 — Workspace 工作区 + i18n 语言变体 + 消费命令总是自动构建
1.2.x 收官后的首个功能 minor。三大主题:Workspace(工作区)、i18n 语言变体、消费命令总是自动构建。公共 API 无破坏性变更(新增命令组/配置文件/字段/变体标签均为纯增量)。
✨ Workspace(工作区)
ezmk-workspace.toml声明成员集合([workspace] members+[workspace.options])ezmk workspace list / build / test / clean批量管理;Kahn 拓扑分层 + 层内并行- 成员
[depends] workspace = [...]声明单向非循环依赖;构建时兄弟产物自发现注入(-I/-L/-l存在性门控、零环境变量) -w重定向(ezmk build -w≡ezmk workspace build)、--member(含依赖闭包)、--stop-on-error(停派发不 kill)- 跨成员增量:改库
.cpp→ 依赖者只重链;改库.h→ 依赖者经 depfile 自动重编 - 编译/链接命令 >16K → GCC 响应文件兜底(大型项目不炸)
🌏 i18n 语言变体
- BCP 47 风格标签归一化(
zh_CN/zh-CN/zh_CN.UTF-8→zh-CN) locale/zh-TW.json繁体中文变体(继承式,只写差异键,缺键回退基础语言)- 回退链:变体 → 基础语言 → 英文,永不出现
{???}
⚡ 消费命令总是自动构建
ezmk test/pack --precompiled移除产物存在性门控,一律先增量构建再消费(消除陈旧产物陷阱)
其他
- 新增
workspace_*相关 i18n 键(X-macro 三向一致,zh-TW 变体同步) - 全量测试:863 用例 / 5007 断言零失败;集成测试覆盖 workspace 端到端 + CI workspace 冒烟
完整 changelog 见 CHANGES.md。
EazyMake 1.2.5
1.2.5 (2026-08-19) — 测试缓存签名修复 + 默认包格式改为源码包
- \ezmk project pack\ 默认产出源码包(src_dirs + include/ + ezmk.toml 原样,平台无关、消费者侧编译);--precompiled\ 保留旧预编译行为(逐字节等价,仅 static)
- 修复(合入 01807bb):\ezmk test\ 测试源缓存编译选项签名校验(第二次即缓存命中)+ embed_examples 剪枝
- 全量回归:794 用例 / 3769 断言零失败
EazyMake 1.2.4
EazyMake 1.2.4 — 仓库文件夹包支持
自 v1.2.1 以来的三个补丁(1.2.2 / 1.2.3 / 1.2.4)聚合发布。公共 API 无破坏性变更。
1.2.4:仓库文件夹包支持
- 按名安装目录分支:\ezmk pkg install \ 解析出的仓库包路径为目录时,复用文件夹安装(源码编译/安装);归档包零影响、分支互斥
- \index.toml\ 目录包标注:[[packages]]\ 增可选 \ ype = dir\(目录包无归档 hash,sha256 省略且跳过校验);省略 = 归档包,向后兼容
- header-only / 源码包可免打包、以 git 目录形式托管(local 仓库最适用)
1.2.3:\ezmk example\ 命令组 + 内置示例
- 顶层命令组 \ezmk example\(list / / -o),内置 6 个示例(hello / greeter / with-packages / with-tests / with-hooks / cmake-interop)
- 构建期嵌入资源:\examples/\ 源目录 → \src/example_data.cpp\(装好即用、离线可用、与版本同源)
- 集成测试 + CI 自举验证(6 示例 example → build/test)
1.2.2:教程分类重组
- 教程 14 章移入 \�asic/\ · \packages/\ · \dev/\ · \interop/\ 分类子目录 + 组内重新编号 + 分组索引 + 全仓链接修复(纯文档)
测试
- 全量回归:793 用例 / 3755 断言零失败(1.2.1 基线 785 / 3629)
完整变更日志见 CHANGES.md。
EazyMake 1.2.1
EazyMake 1.2.1 — 按项目类型差异化模板生成(.cpp / .h)与默认配置补全
1.2.0 正式发布后的补丁版本:项目类型差异化的脚手架模板 + 默认配置补全。公共 API 无破坏性变更。
新增 / 行为变更
- 按类型生成源码模板:\ezmk project new\ 的 \static\ / \shared\ 类型改为生成库骨架 \include/.hpp\(#pragma once\ +
amespace \ + \greeting()\ 示例公共 API)+ \src/.cpp\(实现),**不再生成 \main.cpp**;\executable\ 保持 Hello world 入口不变;\utils\ 仍无 C++ 代码(\utils/\ 目录放 Lua 脚本) - 项目名净化:库模板文件名保留原始项目名(\my-lib\ → \include/my-lib.hpp\),C++ namespace 将 -\ / .\ / 空格替换为 _\(\my-lib\ →
amespace my_lib\),头文件用 #pragma once\ 保护 - 默认配置模板追加注释 [test]\ 示例节:生成的 \ezmk.toml\ 末尾附带注释掉的 [test]\(\ramework\ / \dirs\ / \default_profile\ / \include_dirs\ / \link_targets\)——取消注释即可启用 \ezmk test\;纯注释对解析零影响
测试
- 全量回归:785 用例 / 3629 断言零失败(1.2.0 基线 775 / 3554)
完整变更日志见 CHANGES.md。
EazyMake 1.2.0
EazyMake 1.2.0 — Toolchain interop & out-of-the-box engineering
Formal release aggregating dev.1 ~ dev.12 + pre.1 + pre.2. Public API remains permanently stable since v1.1.0 (breaking changes only in 2.0.0); ezmk utils cc is now deprecated (still works, removed in 2.0.0).
New & changed
ezmk project cc— built-in compile_commands.json generator (dev.1)ezmk project export cmake— generate CMakeLists.txt fromezmk.toml(dev.2)- Default template ships Debug/Release profiles (dev.3)
ezmk project import --from cmake— experimental CMake import (dev.4)- catch2 v3 test-main compatibility (dev.5)
- Per-file build timing stats (
-vdetail / slow-build top-N) (dev.6) ezmk pkg install <dir>+ up-to-5-levelezmk.tomllookup (dev.7)ezmk-luastandalone hook runtime for exported CMake builds (dev.8)- Package build config convergence —
[compile].src_dirs/include_dirsfor packages (dev.9) - Platform identifier extension —
lib<name>.<os>-<arch>[-<compiler>][-<abi>]+ ABI-safe 4-level matching +precompiled_strict(dev.10) - Code quality review & fixes — run_tests command construction, hook/sandbox security, validation, dead code (dev.11)
- Test configuration —
[test].default_profile/ezmk test --profile/ test-onlyinclude_dirs/link_targets(dev.12) - README rework + advanced-feature tutorials 12/13/14 + precompiled ABI warnings (pre.2)
- pacman distribution —
publish/arch/PKGBUILDfor Arch Linux / MSYS2 (pre.1) - Portability fix —
<climits>include forULONG_MAX(found via Arch Linux build)
Assets
ezmk-windows-x64.zip(portableezmk.exe+ezmk-lua.exe+_ezmk)ezmk-linux-x64.tar.gzezmk-macos-arm64.tar.gz- (macOS Intel x64 remains unavailable —
macos-13runner not allocated on the free tier)
Full changelog
See CHANGES.md
EazyMake 1.1.3
EazyMake 1.1.3 — 安全收敛(二轮)+ 健壮性收口
1.1.x 稳定线补丁。基于第二轮多模块安全与质量审计。不新增命令、不弃用任何接口,公共 API 保持不变。
安全收敛(二轮)
- 钩子沙箱统一:构建/安装钩子沙箱
__index改受限全局表,dofile/loadfile/load/require/debug/package解析为nil,与 utils 脚本一致 - 包名校验:安装 /
pkg remove/search/ lockfile 恢复统一拒绝路径穿越包名(新增util::validate_pkg_name) - URL 安装完整性:无 sha256 的 URL 下载前确认(
-y可跳过);显式http://提示 MITM 风险 - flags 命令注入修复:
join_shell_args元字符集补全为/bin/sh全部相关字符,链接 flags 双引号包裹 - 编辑器命令转义:
EDITOR/VISUAL派生命令经escape_shell_arg包裹,移除全库唯一system()
健壮性收口
SOURCE_DATE_EPOCH非数字不再崩-jNworker 线程(警告并视为未设置)- install prefix
~边界:"~abc"不再被误截断 - watcher
OVERLAPPED池从全局改实例成员(多实例不再互相悬垂) recursive_死代码删除,头文件注明实际递归行为- 边缘批处理:
name.back()空串防御、.o/.obj后缀常量、CLI argv NUL 已知限制注释
代码质量与测试
- 手写
load_links_jsonJSON 解析器改nlohmann/json(支持转义与 Unicode) parse_config/compile_one_source大函数拆分(纯提取零行为漂移)- cli positional 校验提取共享 helper 去重
- watcher 永真断言清理(精确路径集合断言 + 显式 SKIP)+ 新增 argparse 单测
- 全量测试零回归:630 用例 / 2918 断言
详细变更见 CHANGES.md。