Skip to content

MacWave 3.0.2

Latest

Choose a tag to compare

@Sha0huaZhang Sha0huaZhang released this 10 Oct 16:22
· 18 commits to 3.0 since this release

MacWave 3.0.2

Build number: 283F2358

新增

  • --ver 增加新用法:现在 wave install jq --ver 1.0 与 wave install jq --ver=1.0 都有效
    (此前 --ver 写在帮助里却不可用:不在参数白名单内,任何用法都会返回 Input contains illegal fields.)。
    同时 --flag=value 对长参数统一生效,--limit-rate=300K、--proxy=... 不再被读成 =300K。

安全加固

  • 名字与版本号白名单:包名、版本号、远端 @common 里的 bin_name、依赖引用,一律只允许
    [A-Za-z0-9][A-Za-z0-9._+-]*。含 / \ % @ :、空白、.. 或以 -/. 开头一律拒绝——
    它们在进入 URL 或文件路径之前就被挡下,而不是拼接进去再说。
  • 最终路径必须落在安装目录内:所有会被创建、改名、删除的路径都会先归一化并校验是否位于
    BASE_DIR(bin/、links/、deps/、downloads/tmp)之内,防路径穿越与软链接逃逸。
  • shell 侧再兜一层:surfboard/depsmanager.sh 会独立复核目标路径是否在 BASE_DIR 内,
    即使有调用方绕过 Python 校验也写不出去。

CI

  • format-test 现在跑 Python 3.14 + 3.15 两条矩阵线(3.15 由 Homebrew 提供,因为
    actions/python-versions 还没有 3.15.0 正式版)。
  • 新增 随机化端到端回归 job:每次随机抽 10–20 个包(必含 wget,>40MB 重抽),
    随机指定/不指定版本号、随机长/短参数、10% 概率插入非法参数、1–2 个不存在的版本、
    1–2 个非法版本;-C 随机打断 0–3 次、--skip-ssl、--limit-rate(瞬时 + 全程速度复核)、
    5% 概率在 Mach-O 重定向中途打断;list/search/info/selfupdate/link/linkquery/unlink 各 5 次;
    5 个非法命令与 -h/--help/-V/--version(含非法参数);每次随机挑一个安装目录(33% 为 ~/test dir)。
  • 运行时在拿到 GH_TOKEN/GITHUB_TOKEN 时会给 api.github.com 带上鉴权,缓解未认证
    60 次/小时的限流(token 只发给 api.github.com)。

不设 --latest 的 CI-Update20261010 为独立的 CI 变更说明,本 Release 才是 3.0.2 版本发布。

附件

附件 说明
30 个源码文件 3.0.2 的全部源码,逐个单独上传(清单见下)
format-test.yml 更新后的 CI 工作流源码
MacWave-3.0.2.tar / MacWave-3.0.2.tar.gz 3.0.1 以来改动的全部文件(运行时 + CI),保持仓库相对路径,解到仓库根目录即可

源码文件按 2.5 的附件格式平铺上传(附件名即文件名,不含目录),对照见下表:

来源目录 文件
lib/ wave.py help.py configerror.py configpaths.py selfupdate.py selfupdate.sh install.sh uninstall.sh
pkg/ pkginstaller.py pkginstaller.sh pkginfohelper.py uninstaller.py pkgversionparser.py pkgunzip.sh linker.py
scripts/ audit_deps.py random_test.py configpath_test.sh deps_test.sh format_test.sh link_test.sh sandbox_test.sh selfupdate_test.sh
surfboard/ depsinstaller.py depsinstaller.sh depsmanager.sh depsversionparser.py querier.py tagger.sh transfer.sh

八个 scripts/*_test.sh 与 scripts/audit_deps.py 是仓库自身的测试/审计脚本,2.5 起就一并附在 Release 里;
.Pseudocode/pkg/pkginstaller.py 是按设计不可执行的伪代码,未附上。

两个归档内容一致;打包时已归一化 mtime 与属主,因此同内容每次打出相同 SHA256:
MacWave-3.0.2.tar = 99795b99…,MacWave-3.0.2.tar.gz = 02d2dd3f…。

同步

  • README(中英文)已标注 3.0.2;官网版本号已同步。
  • configdata 的 versiondata/latest_version 已改为 3.0.2 / 2026-10-10 / 283F2358,
    并补上 updatedata/3.0.2/(install.sh 与 wave selfupdate 按「正在安装的完整版本号」查迁移数据,
    补丁版本要各放一份),所以安装脚本与 wave selfupdate 现在拉取的就是 3.0.2。