diff --git a/.bumpversion.toml b/.bumpversion.toml index d36c4e158..57bcad5da 100644 --- a/.bumpversion.toml +++ b/.bumpversion.toml @@ -1,5 +1,5 @@ [tool.bumpversion] -current_version = "0.32.0-beta.3" +current_version = "0.37.0-beta.0" parse = """(?x) (?P0|[1-9]\\d*)\\. (?P0|[1-9]\\d*)\\. @@ -75,6 +75,13 @@ filename = "nodejs/Cargo.toml" replace = "\nversion = \"{new_version}\"" search = "\nversion = \"{current_version}\"" +# The Python package takes its version from here (pyproject.toml declares +# `dynamic = ["version"]`, so maturin reads it out of the crate manifest). +[[tool.bumpversion.files]] +filename = "python/Cargo.toml" +replace = "\nversion = \"{new_version}\"" +search = "\nversion = \"{current_version}\"" + # Java documentation [[tool.bumpversion.files]] filename = "docs/src/java/java.md" diff --git a/.github/workflows/cargo-publish.yml b/.github/workflows/cargo-publish.yml index 08f01d9a0..052fb1876 100644 --- a/.github/workflows/cargo-publish.yml +++ b/.github/workflows/cargo-publish.yml @@ -6,7 +6,6 @@ on: # We don't publish pre-releases for Rust. Crates.io is just a source # distribution, so we don't need to publish pre-releases. - "v*-beta*" - - "*-v*" # for example, python-vX.Y.Z env: # This env var is used by Swatinem/rust-cache@v2 for the cache diff --git a/.github/workflows/gh-release.yml b/.github/workflows/gh-release.yml new file mode 100644 index 000000000..683d55d71 --- /dev/null +++ b/.github/workflows/gh-release.yml @@ -0,0 +1,85 @@ +name: GitHub Release + +# All SDKs share one version, so a single `vX.Y.Z` tag produces a single GitHub +# release covering all of them. The per-package publish workflows (PyPI, NPM, +# Cargo, Maven) trigger off the same tag independently. + +on: + push: + tags: + - "v*" + +permissions: + contents: read + +jobs: + gh-release: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + lfs: true + - name: Extract version + id: extract_version + env: + GITHUB_REF: ${{ github.ref }} + run: | + set -e + echo "Extracting tag and version from $GITHUB_REF" + if [[ $GITHUB_REF =~ refs/tags/v(.*) ]]; then + VERSION=${BASH_REMATCH[1]} + TAG=v$VERSION + echo "tag=$TAG" >> $GITHUB_OUTPUT + echo "version=$VERSION" >> $GITHUB_OUTPUT + else + echo "Failed to extract version from $GITHUB_REF" + exit 1 + fi + echo "Extracted version $VERSION from $GITHUB_REF" + if [[ $VERSION =~ beta ]]; then + echo "This is a beta release" + echo "prerelease=true" >> $GITHUB_OUTPUT + + # Get last release (that is not this one) + FROM_TAG=$(git tag --sort='version:refname' \ + | grep ^v \ + | grep -vF "$TAG" \ + | python ci/semver_sort.py v \ + | tail -n 1) + else + echo "This is a stable release" + echo "prerelease=false" >> $GITHUB_OUTPUT + # Get last stable tag (ignore betas) + FROM_TAG=$(git tag --sort='version:refname' \ + | grep ^v \ + | grep -vF "$TAG" \ + | grep -v beta \ + | python ci/semver_sort.py v \ + | tail -n 1) + fi + echo "Found from tag $FROM_TAG" + echo "from_tag=$FROM_TAG" >> $GITHUB_OUTPUT + - name: Create Release Notes + id: release_notes + uses: mikepenz/release-changelog-builder-action@v4 + with: + configuration: .github/release_notes.json + toTag: ${{ steps.extract_version.outputs.tag }} + fromTag: ${{ steps.extract_version.outputs.from_tag }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Create GH release + uses: softprops/action-gh-release@v2 + with: + # Marking betas as pre-releases keeps them from taking the "Latest" + # badge on the releases page. + prerelease: ${{ steps.extract_version.outputs.prerelease }} + make_latest: ${{ steps.extract_version.outputs.prerelease == 'false' }} + tag_name: ${{ steps.extract_version.outputs.tag }} + token: ${{ secrets.GITHUB_TOKEN }} + generate_release_notes: false + name: LanceDB v${{ steps.extract_version.outputs.version }} + body: ${{ steps.release_notes.outputs.changelog }} diff --git a/.github/workflows/make-release-commit.yml b/.github/workflows/make-release-commit.yml index 538c7f486..2ab69ee32 100644 --- a/.github/workflows/make-release-commit.yml +++ b/.github/workflows/make-release-commit.yml @@ -1,13 +1,14 @@ name: Create release commit -# This workflow increments versions, tags the version, and pushes it. +# This workflow increments the version, tags it, and pushes it. All SDKs share +# a single version, so one tag releases all of them. # When a tag is pushed, another workflow is triggered that creates a GH release # and uploads the binaries. This workflow is only for creating the tag. # This script will enforce that a minor version is incremented if there are any -# breaking changes since the last minor increment. However, it isn't able to -# differentiate between breaking changes in Node versus Python. If you wish to -# bypass this check, you can manually increment the version and push the tag. +# breaking changes since the last minor increment. A breaking change in any SDK +# bumps the minor version for all of them. If you wish to bypass this check, you +# can manually increment the version and push the tag. on: workflow_dispatch: inputs: @@ -24,16 +25,6 @@ on: options: - preview - stable - python: - description: 'Make a Python release' - required: true - default: true - type: boolean - other: - description: 'Make a Node/Rust/Java release' - required: true - default: true - type: boolean bump-minor: description: 'Bump minor version' required: true @@ -65,25 +56,12 @@ jobs: run: | git config user.name 'Lance Release' git config user.email 'lance-dev@lancedb.com' - - name: Bump Python version - if: ${{ inputs.python }} - working-directory: python - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - # Need to get the commit before bumping the version, so we can - # determine if there are breaking changes in the next step as well. - echo "COMMIT_BEFORE_BUMP=$(git rev-parse HEAD)" >> $GITHUB_ENV - - pip install bump-my-version PyGithub packaging - bash ../ci/bump_version.sh ${{ inputs.type }} ${{ inputs.bump-minor }} python-v - - name: Bump Node/Rust version - if: ${{ inputs.other }} + - name: Bump version env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | pip install bump-my-version PyGithub packaging - bash ci/bump_version.sh ${{ inputs.type }} ${{ inputs.bump-minor }} v $COMMIT_BEFORE_BUMP + bash ci/bump_version.sh ${{ inputs.type }} ${{ inputs.bump-minor }} bash ci/update_lockfiles.sh --amend - name: Push new version tag if: ${{ !inputs.dry_run }} diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 5707b085a..8a049ee0f 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -26,73 +26,6 @@ concurrency: cancel-in-progress: true jobs: - gh-release: - if: startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - lfs: true - - name: Extract version - id: extract_version - env: - GITHUB_REF: ${{ github.ref }} - run: | - set -e - echo "Extracting tag and version from $GITHUB_REF" - if [[ $GITHUB_REF =~ refs/tags/v(.*) ]]; then - VERSION=${BASH_REMATCH[1]} - TAG=v$VERSION - echo "tag=$TAG" >> $GITHUB_OUTPUT - echo "version=$VERSION" >> $GITHUB_OUTPUT - else - echo "Failed to extract version from $GITHUB_REF" - exit 1 - fi - echo "Extracted version $VERSION from $GITHUB_REF" - if [[ $VERSION =~ beta ]]; then - echo "This is a beta release" - - # Get last release (that is not this one) - FROM_TAG=$(git tag --sort='version:refname' \ - | grep ^v \ - | grep -vF "$TAG" \ - | python ci/semver_sort.py v \ - | tail -n 1) - else - echo "This is a stable release" - # Get last stable tag (ignore betas) - FROM_TAG=$(git tag --sort='version:refname' \ - | grep ^v \ - | grep -vF "$TAG" \ - | grep -v beta \ - | python ci/semver_sort.py v \ - | tail -n 1) - fi - echo "Found from tag $FROM_TAG" - echo "from_tag=$FROM_TAG" >> $GITHUB_OUTPUT - - name: Create Release Notes - id: release_notes - uses: mikepenz/release-changelog-builder-action@v4 - with: - configuration: .github/release_notes.json - toTag: ${{ steps.extract_version.outputs.tag }} - fromTag: ${{ steps.extract_version.outputs.from_tag }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Create GH release - uses: softprops/action-gh-release@v2 - with: - prerelease: ${{ contains('beta', github.ref) }} - tag_name: ${{ steps.extract_version.outputs.tag }} - token: ${{ secrets.GITHUB_TOKEN }} - generate_release_notes: false - name: Node/Rust LanceDB v${{ steps.extract_version.outputs.version }} - body: ${{ steps.release_notes.outputs.changelog }} - build-lancedb: strategy: fail-fast: false diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 720079292..8825e7fb0 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -3,7 +3,7 @@ name: PyPI Publish on: push: tags: - - 'python-v*' + - 'v*' pull_request: # This should trigger a dry run (we skip the final publish step) paths: @@ -72,7 +72,7 @@ jobs: package-name: ${{ matrix.config.package_name }} rustflags: ${{ matrix.config.rustflags }} - uses: actions/upload-artifact@v7 - if: startsWith(github.ref, 'refs/tags/python-v') + if: startsWith(github.ref, 'refs/tags/v') with: name: wheels-linux-${{ matrix.config.package_name }}-${{ matrix.config.platform }}-${{ matrix.config.manylinux }} path: target/wheels/*.whl @@ -101,7 +101,7 @@ jobs: python-minor-version: 10 args: "--release --strip --target ${{ matrix.config.target }} --features fp16kernels" - uses: actions/upload-artifact@v7 - if: startsWith(github.ref, 'refs/tags/python-v') + if: startsWith(github.ref, 'refs/tags/v') with: name: wheels-mac-${{ matrix.config.target }} path: target/wheels/lancedb-*.whl @@ -127,14 +127,14 @@ jobs: python-minor-version: 10 args: "--release --strip" - uses: actions/upload-artifact@v7 - if: startsWith(github.ref, 'refs/tags/python-v') + if: startsWith(github.ref, 'refs/tags/v') with: name: wheels-windows path: target/wheels/lancedb-*.whl if-no-files-found: error publish: name: Publish wheels - if: startsWith(github.ref, 'refs/tags/python-v') + if: startsWith(github.ref, 'refs/tags/v') needs: [linux, mac, windows] runs-on: ubuntu-latest permissions: @@ -183,72 +183,6 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: packages-dir: target/wheels/ - gh-release: - if: startsWith(github.ref, 'refs/tags/python-v') - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - lfs: true - - name: Extract version - id: extract_version - env: - GITHUB_REF: ${{ github.ref }} - run: | - set -e - echo "Extracting tag and version from $GITHUB_REF" - if [[ $GITHUB_REF =~ refs/tags/python-v(.*) ]]; then - VERSION=${BASH_REMATCH[1]} - TAG=python-v$VERSION - echo "tag=$TAG" >> $GITHUB_OUTPUT - echo "version=$VERSION" >> $GITHUB_OUTPUT - else - echo "Failed to extract version from $GITHUB_REF" - exit 1 - fi - echo "Extracted version $VERSION from $GITHUB_REF" - if [[ $VERSION =~ beta ]]; then - echo "This is a beta release" - - # Get last release (that is not this one) - FROM_TAG=$(git tag --sort='version:refname' \ - | grep ^python-v \ - | grep -vF "$TAG" \ - | python ci/semver_sort.py python-v \ - | tail -n 1) - else - echo "This is a stable release" - # Get last stable tag (ignore betas) - FROM_TAG=$(git tag --sort='version:refname' \ - | grep ^python-v \ - | grep -vF "$TAG" \ - | grep -v beta \ - | python ci/semver_sort.py python-v \ - | tail -n 1) - fi - echo "Found from tag $FROM_TAG" - echo "from_tag=$FROM_TAG" >> $GITHUB_OUTPUT - - name: Create Python Release Notes - id: python_release_notes - uses: mikepenz/release-changelog-builder-action@v4 - with: - configuration: .github/release_notes.json - toTag: ${{ steps.extract_version.outputs.tag }} - fromTag: ${{ steps.extract_version.outputs.from_tag }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Create Python GH release - uses: softprops/action-gh-release@v2 - with: - prerelease: ${{ contains('beta', github.ref) }} - tag_name: ${{ steps.extract_version.outputs.tag }} - token: ${{ secrets.GITHUB_TOKEN }} - generate_release_notes: false - name: Python LanceDB v${{ steps.extract_version.outputs.version }} - body: ${{ steps.python_release_notes.outputs.changelog }} report-failure: name: Report Workflow Failure runs-on: ubuntu-latest @@ -256,7 +190,7 @@ jobs: permissions: contents: read issues: write - if: always() && failure() && startsWith(github.ref, 'refs/tags/python-v') + if: always() && failure() && startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/checkout@v6 - uses: ./.github/actions/create-failure-issue diff --git a/Cargo.lock b/Cargo.lock index 26b64d182..f8bde1b00 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5378,7 +5378,7 @@ dependencies = [ [[package]] name = "lancedb" -version = "0.32.0-beta.3" +version = "0.37.0-beta.0" dependencies = [ "ahash", "anyhow", @@ -5466,7 +5466,7 @@ dependencies = [ [[package]] name = "lancedb-nodejs" -version = "0.32.0-beta.3" +version = "0.37.0-beta.0" dependencies = [ "arrow-array", "arrow-buffer", @@ -5491,7 +5491,7 @@ dependencies = [ [[package]] name = "lancedb-python" -version = "0.35.0-beta.3" +version = "0.37.0-beta.0" dependencies = [ "arrow", "async-trait", diff --git a/ci/bump_version.sh b/ci/bump_version.sh index 1b3311c88..559e8ffdc 100644 --- a/ci/bump_version.sh +++ b/ci/bump_version.sh @@ -2,9 +2,9 @@ set -e RELEASE_TYPE=${1:-"stable"} BUMP_MINOR=${2:-false} -TAG_PREFIX=${3:-"v"} # Such as "python-v" -HEAD_SHA=${4:-$(git rev-parse HEAD)} +HEAD_SHA=$(git rev-parse HEAD) +readonly TAG_PREFIX="v" readonly SELF_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) PREV_TAG=$(git tag --sort='version:refname' | grep ^$TAG_PREFIX | python $SELF_DIR/semver_sort.py $TAG_PREFIX | tail -n 1) @@ -12,7 +12,7 @@ echo "Found previous tag $PREV_TAG" # Initially, we don't want to tag if we are doing stable, because we will bump # again later. See comment at end for why. -if [[ "$RELEASE_TYPE" == 'stable' ]]; then +if [[ "$RELEASE_TYPE" == 'stable' ]]; then BUMP_ARGS="--no-tag" fi diff --git a/docs/src/java/java.md b/docs/src/java/java.md index a7a010c99..891cc1674 100644 --- a/docs/src/java/java.md +++ b/docs/src/java/java.md @@ -14,7 +14,7 @@ Add the following dependency to your `pom.xml`: com.lancedb lancedb-core - 0.32.0-beta.3 + 0.37.0-beta.0 ``` diff --git a/java/lancedb-core/pom.xml b/java/lancedb-core/pom.xml index 9333f0cc6..eb47e25f3 100644 --- a/java/lancedb-core/pom.xml +++ b/java/lancedb-core/pom.xml @@ -8,7 +8,7 @@ com.lancedb lancedb-parent - 0.32.0-beta.3 + 0.37.0-beta.0 ../pom.xml diff --git a/java/pom.xml b/java/pom.xml index 721d61b93..a6ebf1165 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -6,7 +6,7 @@ com.lancedb lancedb-parent - 0.32.0-beta.3 + 0.37.0-beta.0 pom ${project.artifactId} LanceDB Java SDK Parent POM diff --git a/nodejs/Cargo.toml b/nodejs/Cargo.toml index dda9c681e..aef5fd54d 100644 --- a/nodejs/Cargo.toml +++ b/nodejs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "lancedb-nodejs" edition.workspace = true -version = "0.32.0-beta.3" +version = "0.37.0-beta.0" publish = false license.workspace = true description.workspace = true diff --git a/nodejs/npm/darwin-arm64/package.json b/nodejs/npm/darwin-arm64/package.json index f3d444fc6..618b02547 100644 --- a/nodejs/npm/darwin-arm64/package.json +++ b/nodejs/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@lancedb/lancedb-darwin-arm64", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "os": ["darwin"], "cpu": ["arm64"], "main": "lancedb.darwin-arm64.node", diff --git a/nodejs/npm/linux-arm64-gnu/package.json b/nodejs/npm/linux-arm64-gnu/package.json index 9aabfec02..3eb4eeaba 100644 --- a/nodejs/npm/linux-arm64-gnu/package.json +++ b/nodejs/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@lancedb/lancedb-linux-arm64-gnu", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "os": ["linux"], "cpu": ["arm64"], "main": "lancedb.linux-arm64-gnu.node", diff --git a/nodejs/npm/linux-arm64-musl/package.json b/nodejs/npm/linux-arm64-musl/package.json index 37f734fdc..7dbed5ae4 100644 --- a/nodejs/npm/linux-arm64-musl/package.json +++ b/nodejs/npm/linux-arm64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@lancedb/lancedb-linux-arm64-musl", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "os": ["linux"], "cpu": ["arm64"], "main": "lancedb.linux-arm64-musl.node", diff --git a/nodejs/npm/linux-x64-gnu/package.json b/nodejs/npm/linux-x64-gnu/package.json index cf7489468..733aef750 100644 --- a/nodejs/npm/linux-x64-gnu/package.json +++ b/nodejs/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@lancedb/lancedb-linux-x64-gnu", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "os": ["linux"], "cpu": ["x64"], "main": "lancedb.linux-x64-gnu.node", diff --git a/nodejs/npm/linux-x64-musl/package.json b/nodejs/npm/linux-x64-musl/package.json index 46699201c..041a49cb4 100644 --- a/nodejs/npm/linux-x64-musl/package.json +++ b/nodejs/npm/linux-x64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@lancedb/lancedb-linux-x64-musl", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "os": ["linux"], "cpu": ["x64"], "main": "lancedb.linux-x64-musl.node", diff --git a/nodejs/npm/win32-arm64-msvc/package.json b/nodejs/npm/win32-arm64-msvc/package.json index 433d2615e..2604d021e 100644 --- a/nodejs/npm/win32-arm64-msvc/package.json +++ b/nodejs/npm/win32-arm64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@lancedb/lancedb-win32-arm64-msvc", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "os": [ "win32" ], diff --git a/nodejs/npm/win32-x64-msvc/package.json b/nodejs/npm/win32-x64-msvc/package.json index 6ff05abc1..2ee52df53 100644 --- a/nodejs/npm/win32-x64-msvc/package.json +++ b/nodejs/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@lancedb/lancedb-win32-x64-msvc", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "os": ["win32"], "cpu": ["x64"], "main": "lancedb.win32-x64-msvc.node", diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 8cb52d0aa..2317c89a4 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lancedb/lancedb", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lancedb/lancedb", - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "cpu": [ "x64", "arm64" diff --git a/nodejs/package.json b/nodejs/package.json index 749f4b816..e9b861ad1 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -11,7 +11,7 @@ "ann" ], "private": false, - "version": "0.32.0-beta.3", + "version": "0.37.0-beta.0", "main": "dist/index.js", "exports": { ".": "./dist/index.js", diff --git a/python/.bumpversion.toml b/python/.bumpversion.toml deleted file mode 100644 index 15b9eefa9..000000000 --- a/python/.bumpversion.toml +++ /dev/null @@ -1,49 +0,0 @@ -[tool.bumpversion] -current_version = "0.35.0-beta.3" -parse = """(?x) - (?P0|[1-9]\\d*)\\. - (?P0|[1-9]\\d*)\\. - (?P0|[1-9]\\d*) - (?:-(?P[a-zA-Z-]+)\\.(?P0|[1-9]\\d*))? -""" -serialize = [ - "{major}.{minor}.{patch}-{pre_l}.{pre_n}", - "{major}.{minor}.{patch}", -] -search = "{current_version}" -replace = "{new_version}" -regex = false -ignore_missing_version = false -ignore_missing_files = false -tag = true -sign_tags = false -tag_name = "python-v{new_version}" -tag_message = "Bump version: {current_version} → {new_version}" -allow_dirty = true -commit = true -message = "Bump version: {current_version} → {new_version}" -commit_args = "" -# bump-my-version >=1.4.0 rejects pre_commit_hooks containing shell syntax unless opted in. -allow_shell_hooks = true - -# Update Cargo.lock after version bump -pre_commit_hooks = [ - """ - cd python && cargo update -p lancedb-python - if git diff --quiet ../Cargo.lock; then - echo "Cargo.lock unchanged" - else - git add ../Cargo.lock - echo "Updated and staged Cargo.lock" - fi - """, -] - -[tool.bumpversion.parts.pre_l] -values = ["beta", "final"] -optional_value = "final" - -[[tool.bumpversion.files]] -filename = "Cargo.toml" -search = "\nversion = \"{current_version}\"" -replace = "\nversion = \"{new_version}\"" diff --git a/python/Cargo.toml b/python/Cargo.toml index 9a635cd64..a0e9394ec 100644 --- a/python/Cargo.toml +++ b/python/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lancedb-python" -version = "0.35.0-beta.3" +version = "0.37.0-beta.0" publish = false edition.workspace = true description = "Python bindings for LanceDB" diff --git a/release_process.md b/release_process.md index 6df46962c..f223504a7 100644 --- a/release_process.md +++ b/release_process.md @@ -1,12 +1,17 @@ # Release process -There are five total packages we release. Four are the `lancedb` packages -for Python, Rust, Java, and Node.js. The other one is the legacy `vectordb` -package node.js. +We release four `lancedb` packages: Python, Rust, Java, and Node.js. -The Python package is versioned and released separately from the Rust, Java, and Node.js -ones. For Node.js the release process is shared between `lancedb` and -`vectordb` for now. +All four share a single version number, defined by `current_version` in +`.bumpversion.toml`. One `vX.Y.Z` tag releases all of them, so a breaking change +in any SDK bumps the minor version for every SDK. + +> [!NOTE] +> Python used to be versioned separately, under `python-vX.Y.Z` tags. It ran +> three minor versions ahead of the other SDKs, which made the two numbers hard +> to reason about. Both tracks were merged at `v0.37.0`: the Python line went +> `0.36` → `0.37` as usual, while Rust, Java, and Node.js jumped `0.33` → `0.37` +> to catch up. Tags before `v0.37.0` follow the old split scheme. ## Preview releases @@ -27,20 +32,21 @@ The release process uses a handful of GitHub actions to automate the process. ┌─────────────────────┐ │Create Release Commit│ └─┬───────────────────┘ - │ ┌────────────┐ ┌──►Python GH Release - ├──►(tag) python-vX.Y.Z ───►│PyPI Publish├─┤ - │ └────────────┘ └──►Python Wheels - │ - │ ┌───────────┐ - └──►(tag) vX.Y.Z ───┬──────►│NPM Publish├──┬──►Rust/Node GH Release - │ └───────────┘ │ - │ └──►NPM Packages - │ ┌─────────────┐ - ├──────►│Cargo Publish├───►Cargo Release - │ └─────────────┘ - │ ┌─────────────┐ - └──────►│Maven Publish├───►Java Maven Repo Release - └─────────────┘ + │ ┌──────────────┐ + └──►(tag) vX.Y.Z ─┬─►│GitHub Release├───►GH Release + │ └──────────────┘ + │ ┌────────────┐ + ├─►│PyPI Publish├─────►Python Wheels + │ └────────────┘ + │ ┌───────────┐ + ├─►│NPM Publish├──────►NPM Packages + │ └───────────┘ + │ ┌─────────────┐ + ├─►│Cargo Publish├────►Cargo Release + │ └─────────────┘ + │ ┌─────────────┐ + └─►│Maven Publish├────►Java Maven Repo Release + └─────────────┘ ``` To start a release, trigger a `Create Release Commit` action from diff --git a/rust/lancedb/Cargo.toml b/rust/lancedb/Cargo.toml index 7b016556f..ad6a4e2d6 100644 --- a/rust/lancedb/Cargo.toml +++ b/rust/lancedb/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lancedb" -version = "0.32.0-beta.3" +version = "0.37.0-beta.0" edition.workspace = true description = "LanceDB: A serverless, low-latency vector database for AI applications" license.workspace = true