feat: support fastlanes bitpacking #7467
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and run Rust tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
paths: | |
- rust/** | |
- protos/** | |
- .github/workflows/rust.yml | |
- Cargo.toml | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
# This env var is used by Swatinem/rust-cache@v2 for the cache | |
# key, so we set it to make sure it is always consistent. | |
CARGO_TERM_COLOR: always | |
# Disable full debug symbol generation to speed up CI build and keep memory down | |
# "1" means line tables only, which is useful for panic tracebacks. | |
RUSTFLAGS: "-C debuginfo=1" | |
RUST_BACKTRACE: "1" | |
# according to: https://matklad.github.io/2021/09/04/fast-rust-builds.html | |
# CI builds are faster with incremental disabled. | |
CARGO_INCREMENTAL: "0" | |
CARGO_BUILD_JOBS: "1" | |
jobs: | |
linux-build: | |
runs-on: buildjet-8vcpu-ubuntu-2204 | |
timeout-minutes: 45 | |
strategy: | |
matrix: | |
toolchain: | |
- stable | |
- nightly | |
env: | |
# Need up-to-date compilers for kernels | |
CC: gcc-12 | |
CXX: g++-12 | |
steps: | |
- uses: actions/checkout@v4 | |
# pin the toolchain version to avoid surprises | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
if: ${{ matrix.toolchain == 'stable' }} | |
with: | |
toolchain: "1.78.0" | |
cache-workspaces: "src/rust" | |
# Disable full debug symbol generation to speed up CI build and keep memory down | |
# "1" means line tables only, which is useful for panic tracebacks. | |
rustflags: "-C debuginfo=1" | |
components: "rustfmt,clippy" | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
if: ${{ matrix.toolchain != 'stable' }} | |
with: | |
toolchain: "nightly" | |
cache-workspaces: "src/rust" | |
# Disable full debug symbol generation to speed up CI build and keep memory down | |
# "1" means line tables only, which is useful for panic tracebacks. | |
rustflags: "-C debuginfo=1" | |
components: "rustfmt,clippy" | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: "buildjet-v1" | |
workspaces: rust | |
cache-provider: "buildjet" | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y protobuf-compiler libssl-dev | |
rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} | |
rustup component add rustfmt | |
- name: Run cargo fmt | |
run: cargo fmt --check | |
- name: Start DynamoDB local for tests | |
if: ${{ matrix.toolchain == 'stable' }} | |
run: | | |
docker run -d -e AWS_ACCESS_KEY_ID=DUMMYKEY -e AWS_SECRET_ACCESS_KEY=DUMMYKEY -p 8000:8000 amazon/dynamodb-local | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Run tests | |
if: ${{ matrix.toolchain == 'stable' }} | |
run: | | |
cargo llvm-cov --workspace --codecov --output-path coverage.codecov --features dynamodb,tensorflow,dynamodb_tests,cli | |
- name: Run tests (nightly) | |
if: ${{ matrix.toolchain != 'stable' }} | |
run: | | |
cargo test | |
- name: Upload coverage to Codecov | |
if: ${{ matrix.toolchain == 'stable' }} | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
codecov_yml_path: codecov.yml | |
files: coverage.codecov | |
flags: unittests | |
fail_ci_if_error: false | |
linux-arm: | |
runs-on: warp-ubuntu-latest-arm64-4x | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: rust | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
toolchain: "1.78.0" | |
cache-workspaces: "src/rust" | |
# Disable full debug symbol generation to speed up CI build and keep memory down | |
# "1" means line tables only, which is useful for panic tracebacks. | |
rustflags: "-C debuginfo=1" | |
components: "rustfmt,clippy" | |
- name: Install dependencies | |
run: | | |
sudo apt -y -qq update | |
sudo apt install -y protobuf-compiler libssl-dev pkg-config | |
- name: Run cargo fmt | |
run: cargo fmt --check | |
shell: bash | |
- name: Start DynamoDB local for tests | |
run: | | |
docker run -d -e AWS_ACCESS_KEY_ID=DUMMYKEY -e AWS_SECRET_ACCESS_KEY=DUMMYKEY -p 8000:8000 amazon/dynamodb-local | |
- name: Run tests | |
run: | | |
cargo test --all-features -- --test-threads 1 | |
clippy_and_benchmark: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: rust | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y protobuf-compiler libssl-dev | |
- name: Run clippy | |
run: cargo clippy --features cli,dynamodb,tensorflow,dynamodb_tests --tests --benches -- -D warnings | |
- name: Build benchmarks | |
run: cargo build --benches | |
mac-build: | |
runs-on: "macos-14" | |
timeout-minutes: 45 | |
strategy: | |
matrix: | |
toolchain: | |
- stable | |
- nightly | |
defaults: | |
run: | |
working-directory: ./rust/lance | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: rust | |
- name: Select new xcode | |
# Default XCode right now is 15.0.1, which contains a bug that causes | |
# backtraces to not show properly. See: | |
# https://github.com/rust-lang/rust/issues/113783 | |
run: sudo xcode-select -s /Applications/Xcode_15.4.app | |
- name: Install dependencies | |
run: brew install protobuf | |
- name: Set up Rust | |
run: | | |
rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} | |
rustup component add rustfmt | |
- name: Run tests | |
# Check all benches, even though we aren't going to run them. | |
run: | | |
cargo build --tests --benches --all-features --workspace | |
cargo test --all-features | |
windows-build: | |
runs-on: windows-latest | |
defaults: | |
run: | |
working-directory: rust/lance | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: rust | |
- name: Install Protoc v21.12 | |
working-directory: C:\ | |
run: | | |
New-Item -Path 'C:\protoc' -ItemType Directory | |
Set-Location C:\protoc | |
Invoke-WebRequest https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-win64.zip -OutFile C:\protoc\protoc.zip | |
7z x protoc.zip | |
Add-Content $env:GITHUB_PATH "C:\protoc\bin" | |
shell: powershell | |
- name: Run tests | |
# Check all benches, even though we aren't going to run them. | |
run: | | |
cargo build --tests --benches --all-features --workspace | |
cargo test |