From c6911b5387dea6100c512133b6755a287af9c3e0 Mon Sep 17 00:00:00 2001 From: neo-th Date: Wed, 4 Nov 2026 23:21:39 -0600 Subject: [PATCH] release: v0.9.4, and check the tag before publishing Ships the striper fix. release.yml now stops before building or publishing if the release tag doesn't match the version files, because a wrong tag can't be moved or deleted. --- .github/workflows/release.yml | 28 ++++++++++++++++++++++++++-- CHANGELOG.md | 8 +++++++- client-py/hypercache/__init__.py | 2 +- client-py/pyproject.toml | 2 +- control-plane/Cargo.lock | 2 +- control-plane/Cargo.toml | 2 +- 6 files changed, 37 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 514c694..144f345 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,18 +7,42 @@ on: workflow_dispatch: inputs: release_tag: - description: "Release tag to create/update on GitHub Releases (e.g. v0.9.3)" + description: "Release tag to create/update on GitHub Releases (e.g. v0.9.4)" required: false - default: "v0.9.3" + default: "v0.9.4" permissions: contents: write packages: write jobs: + check-release-tag: + name: Check tag matches version files + runs-on: ubuntu-22.04 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Tags can't be moved or deleted, and every later job publishes, so stop here on a mismatch. + - name: Compare the release tag with the version files + env: + RELEASE_TAG: ${{ github.event.inputs.release_tag || github.ref_name }} + run: | + cargo_v=$(grep -m1 '^version' control-plane/Cargo.toml | sed 's/.*"\(.*\)".*/\1/') + py_v=$(grep -m1 '^version' client-py/pyproject.toml | sed 's/.*"\(.*\)".*/\1/') + init_v=$(grep -m1 '__version__' client-py/hypercache/__init__.py | sed 's/.*"\(.*\)".*/\1/') + echo "tag=$RELEASE_TAG Cargo.toml=$cargo_v pyproject=$py_v __init__=$init_v" + for version in "$cargo_v" "$py_v" "$init_v"; do + if [ "$RELEASE_TAG" != "v$version" ]; then + echo "::error::Release tag $RELEASE_TAG does not match version $version" + exit 1 + fi + done + build-linux-binaries: name: Build Linux x86_64 Binaries runs-on: ubuntu-22.04 + needs: check-release-tag steps: - name: Checkout repository uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index f0ec048..da45845 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog -## Unreleased +## 0.9.4 + +Faster loads and stores for objects that don't fill a whole stripe. ### Fixes - Each object now starts on its own drive, chosen from a hash of its URI. Previously every object @@ -11,6 +13,10 @@ objects load at 24884 MB/s (was 20740) and store at 18549 MB/s (was 16129). - Upgrading needs no migration. Objects already stored keep their placement and stay readable, and objects stored after the upgrade stay readable if you roll back. Existing objects aren't rebalanced. +- CI: the bare-metal e2e script loaded its client from the checkout, which uid 1000 can't read on a + GitHub runner. It now runs the client from a world-readable work dir. +- Release: `release.yml` now stops before building or publishing if the release tag doesn't match + the version files. ## 0.9.3 diff --git a/client-py/hypercache/__init__.py b/client-py/hypercache/__init__.py index d406b9d..a2342e4 100644 --- a/client-py/hypercache/__init__.py +++ b/client-py/hypercache/__init__.py @@ -58,4 +58,4 @@ def preload( "HyperCacheDCPStorageReader", ] -__version__ = "0.9.3" +__version__ = "0.9.4" diff --git a/client-py/pyproject.toml b/client-py/pyproject.toml index 250d7af..cd84607 100644 --- a/client-py/pyproject.toml +++ b/client-py/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "hypercache-io" -version = "0.9.3" +version = "0.9.4" description = "HyperCache: Host-Local NVMe Caching and Zero-Copy Direct Block DMA / GPUDirect Storage Acceleration for AI Workloads" readme = "README.md" license = { text = "Apache-2.0" } diff --git a/control-plane/Cargo.lock b/control-plane/Cargo.lock index 2819cf1..6815a71 100644 --- a/control-plane/Cargo.lock +++ b/control-plane/Cargo.lock @@ -681,7 +681,7 @@ dependencies = [ [[package]] name = "hypercache-control-plane" -version = "0.9.3" +version = "0.9.4" dependencies = [ "anyhow", "axum", diff --git a/control-plane/Cargo.toml b/control-plane/Cargo.toml index d04450c..c679fe4 100644 --- a/control-plane/Cargo.toml +++ b/control-plane/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hypercache-control-plane" -version = "0.9.3" +version = "0.9.4" edition = "2021" license = "Apache-2.0" authors = ["Looe Labs"]