Skip to content

Releases: 3667808244/EazyMake

EazyMake 1.4.1 — pkg install 支持 git 仓库 URL

Choose a tag to compare

@3667808244 3667808244 released this 03 Sep 11:14

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

Choose a tag to compare

@3667808244 3667808244 released this 30 Aug 03:48

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 互操作——importCXX_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

Choose a tag to compare

@3667808244 3667808244 released this 26 Aug 11:23

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

Choose a tag to compare

@3667808244 3667808244 released this 25 Aug 10:46

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

Choose a tag to compare

@3667808244 3667808244 released this 22 Aug 22:59

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 -wezmk workspace build)、--member(含依赖闭包)、--stop-on-error(停派发不 kill)
  • 跨成员增量:改库 .cpp → 依赖者只重链;改库 .h → 依赖者经 depfile 自动重编
  • 编译/链接命令 >16K → GCC 响应文件兜底(大型项目不炸)

🌏 i18n 语言变体

  • BCP 47 风格标签归一化(zh_CN / zh-CN / zh_CN.UTF-8zh-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

Choose a tag to compare

@3667808244 3667808244 released this 20 Aug 15:00

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

Choose a tag to compare

@3667808244 3667808244 released this 19 Aug 09:22

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

Choose a tag to compare

@3667808244 3667808244 released this 18 Aug 00:36

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

Choose a tag to compare

@3667808244 3667808244 released this 17 Aug 11:06

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 from ezmk.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 (-v detail / slow-build top-N) (dev.6)
  • ezmk pkg install <dir> + up-to-5-level ezmk.toml lookup (dev.7)
  • ezmk-lua standalone hook runtime for exported CMake builds (dev.8)
  • Package build config convergence[compile].src_dirs/include_dirs for packages (dev.9)
  • Platform identifier extensionlib<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-only include_dirs/link_targets (dev.12)
  • README rework + advanced-feature tutorials 12/13/14 + precompiled ABI warnings (pre.2)
  • pacman distributionpublish/arch/PKGBUILD for Arch Linux / MSYS2 (pre.1)
  • Portability fix<climits> include for ULONG_MAX (found via Arch Linux build)

Assets

  • ezmk-windows-x64.zip (portable ezmk.exe + ezmk-lua.exe + _ezmk)
  • ezmk-linux-x64.tar.gz
  • ezmk-macos-arm64.tar.gz
  • (macOS Intel x64 remains unavailable — macos-13 runner not allocated on the free tier)

Full changelog

See CHANGES.md

EazyMake 1.1.3

Choose a tag to compare

@3667808244 3667808244 released this 10 Aug 09:28

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 非数字不再崩 -jN worker 线程(警告并视为未设置)
  • install prefix ~ 边界:"~abc" 不再被误截断
  • watcher OVERLAPPED 池从全局改实例成员(多实例不再互相悬垂)
  • recursive_ 死代码删除,头文件注明实际递归行为
  • 边缘批处理:name.back() 空串防御、.o/.obj 后缀常量、CLI argv NUL 已知限制注释

代码质量与测试

  • 手写 load_links_json JSON 解析器改 nlohmann/json(支持转义与 Unicode)
  • parse_config / compile_one_source 大函数拆分(纯提取零行为漂移)
  • cli positional 校验提取共享 helper 去重
  • watcher 永真断言清理(精确路径集合断言 + 显式 SKIP)+ 新增 argparse 单测
  • 全量测试零回归:630 用例 / 2918 断言

详细变更见 CHANGES.md