name: CI (fast)
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
contents: read
env:
RUST_MIN_STACK: 16777216
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- run: cargo fmt --check --all
- run: cargo clippy --all-targets --locked -- -D warnings
- run: cargo test --workspace --locked
python:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: astral-sh/setup-uv@v8.1.0
- name: Build and install Python binding
working-directory: bindings/python
run: |
uv venv --python 3.13
uv pip install maturin pytest
uv run maturin develop --release
- name: Run conformance suite
working-directory: bindings/python
run: uv run pytest tests/conformance/ -v
go:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-go@v6
with:
go-version: "1.26"
cache: false - run: make -C bindings/go test
node:
runs-on: ubuntu-latest
defaults:
run:
working-directory: bindings/node
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-node@v6
with:
node-version: "22"
- run: npm install
- run: npx napi build --platform --release
- run: npm test
c:
runs-on: ubuntu-latest
env:
CC: gcc
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- run: make -C bindings/ffi conformance