updating-zstd

star 3

Updates zstd submodule to match Node.js deps version. Use after Node.js updates or when zstd version drifts from Node.js deps.

SocketDev By SocketDev schedule Updated 6/9/2026

name: updating-zstd description: Updates zstd submodule to match Node.js deps version. Use after Node.js updates or when zstd version drifts from Node.js deps. user-invocable: true allowed-tools: Bash(pnpm:), Bash(npm:), Bash(git:), Bash(node:), Bash(rg:), Bash(grep:), Bash(find:), Bash(ls:), Bash(cat:), Bash(head:), Bash(tail:), Bash(wc:), Bash(diff:*), Read, Edit, Grep---

updating-zstd

Update the zstd submodule to match the version in Node.js deps.

  • Submodule: packages/bin-infra/upstream/zstd (facebook/zstd)
  • Node.js deps path: packages/node-smol-builder/upstream/node/deps/zstd/lib/zstd.h
  • Vendored path: packages/bin-infra/upstream/zstd/lib/zstd.h
  • Version defines: ZSTD_VERSION_MAJOR, ZSTD_VERSION_MINOR, ZSTD_VERSION_RELEASE
  • Cache bumps: stubs, binflate, binject, binpress, node-smol

zstd version is driven by Node.js deps. Update Node.js first (updating-node), then run this skill. Do not update zstd independently — the version must match what Node.js bundles to avoid compression format mismatches.

Process

Phase 1: Determine Version

Extract version from Node.js deps header and compare with our vendored copy:

# Helper to extract version from zstd.h
get_zstd_version() {
  local header="$1"
  local major=$(awk '/ZSTD_VERSION_MAJOR/{print $3}' "$header")
  local minor=$(awk '/ZSTD_VERSION_MINOR/{print $3}' "$header")
  local release=$(awk '/ZSTD_VERSION_RELEASE/{print $3}' "$header")
  echo "${major}.${minor}.${release}"
}

NODE_ZSTD=$(get_zstd_version packages/node-smol-builder/upstream/node/deps/zstd/lib/zstd.h)
OUR_ZSTD=$(get_zstd_version packages/bin-infra/upstream/zstd/lib/zstd.h)
echo "Node.js deps: $NODE_ZSTD, Vendored: $OUR_ZSTD"

Exit if already matching. If they differ, update to match Node.js deps.

Phase 2: Update Submodule

If versions differ:

cd packages/bin-infra/upstream/zstd
git fetch --tags
git checkout vX.Y.Z
cd ../../../..

Update .gitmodules version comment: # zstd-X.Y.Z

Phase 3: Bump Cache Versions

Bump these in .github/cache-versions.json:

  • stubs (stubs embed zstd for decompression)
  • binflate (links vendored zstd)
  • binject (links vendored zstd)
  • binpress (links vendored zstd)
  • node-smol (uses Node.js built-in zstd, but cache should refresh)

Phase 4: Verify

# Verify submodule matches Node.js deps
NODE_ZSTD=$(grep 'ZSTD_VERSION_RELEASE' packages/node-smol-builder/upstream/node/deps/zstd/lib/zstd.h | awk '{print $3}')
OUR_ZSTD=$(grep 'ZSTD_VERSION_RELEASE' packages/bin-infra/upstream/zstd/lib/zstd.h | awk '{print $3}')
[ "$NODE_ZSTD" = "$OUR_ZSTD" ] && echo "Aligned" || echo "MISMATCH"

Phase 5: Commit

git add packages/bin-infra/upstream/zstd .gitmodules .github/cache-versions.json
git commit -m "chore(zstd): update to vX.Y.Z (align with Node.js deps)"
Install via CLI
npx skills add https://github.com/SocketDev/socket-btm --skill updating-zstd
Repository Details
star Stars 3
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator