Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
3ae7150
update piscem-cpp
Jan 13, 2025
d6d1026
updated piscem-cpp submodule
Jan 23, 2025
c407c11
submodule update
Jan 23, 2025
828a01a
added --end-cache-capacity argument
Jan 23, 2025
7c2a800
update deps
Jan 23, 2025
c36c447
update submodule
Jan 23, 2025
4a59a0a
update boost in piscem-cpp
Jan 23, 2025
b9fa469
added boost static-assert to piscem-cpp
Jan 23, 2025
f3a570a
updated piscem-cpp
Feb 1, 2025
1ad4da3
push 0.12.1 release
Feb 1, 2025
5687b9a
update piscem-cpp
Feb 1, 2025
4787443
update piscem
Feb 1, 2025
1e84403
update piscem-cpp
May 24, 2025
6d1b52d
Bump piscem-cpp dep. Now sshash is mainline!
May 30, 2025
4640fcf
update submodule, track versions
May 30, 2025
e51cd52
add cargo config
May 30, 2025
c7b6e24
bump to rust 2024
May 30, 2025
f406e5f
update dist version to astral fork
May 30, 2025
a0e22c6
[do_tag] v0.13.0
May 31, 2025
6ef1c4c
[do_tag] v0.13.0
May 31, 2025
9c8a70d
[do_tag] v0.14.0
Jun 29, 2025
f6f43b6
update piscem-cpp for short seq tracking in contig building
Jul 14, 2025
39935ee
[do_tag] v0.14.1 fix propagation of short sequences
Jul 14, 2025
a12e1ee
[do_tag] v0.14.2 fix propagation of reference signatures
Jul 15, 2025
237c490
remove piscem-cpp submodule
Jan 28, 2026
5994794
re-add submodule
Jan 28, 2026
de5d025
update cuttlefish and dist and piscem-cpp, preparing for new release …
Jan 29, 2026
733992e
update piscem-cpp
Jan 30, 2026
55e6d61
update piscem-cpp and bump version; much faster cuttlefish construction
Jan 30, 2026
001fe33
try forcing cmake version on MacOS
Jan 30, 2026
61cf6c6
update cmake
Jan 30, 2026
60b6dee
update release.yml
Jan 30, 2026
e853fc0
try to get cargo dist to update the source.tar.gz
Jan 31, 2026
84f67fe
bump
Jan 31, 2026
83a63c8
update artifact name
Jan 31, 2026
cabf26c
bump with system-dependent paths in piscem-cpp
Jan 31, 2026
3867ac8
require power-of-two threads for piscem index call
Feb 8, 2026
feb179b
Replace piscem-cpp FFI with piscem-rs library
rob-p Feb 19, 2026
4f0171e
Remove piscem-cpp submodule; switch piscem-rs to git dep
rob-p Feb 19, 2026
8ca29e3
Add zlib-ng 2.3.3 as a vendored submodule
rob-p Feb 19, 2026
b4b5c80
update build.rs, vendor zlibng
rob-p Feb 19, 2026
32fb643
don't include the parent path in the patch for the repo
rob-p Feb 19, 2026
203da2d
Create output parent directories in build command if they don't exist
rob-p Feb 20, 2026
91bf329
Fix stale KMC clone causing build failure after cargo update
rob-p Feb 20, 2026
045b0b0
fix wonky build process with cuttlefish upstream
rob-p Feb 20, 2026
41c4a84
Re-enable --struct-constraints for bulk and scRNA; deprecate unsuppor…
rob-p Feb 23, 2026
65e6971
Switch piscem-rs dep from git to crates.io 0.1.0
rob-p Feb 24, 2026
9e7db66
Read cuttlefish commit hash from submodule at build time
rob-p Feb 24, 2026
e2d8dd9
Merge pull request #37 from COMBINE-lab/piscem-rs
rob-p Feb 24, 2026
83befe2
add release script
rob-p Feb 24, 2026
094cf0d
release v0.15.0
rob-p Feb 24, 2026
e8078a3
remove C++ remnants
rob-p Feb 27, 2026
6815c64
update workflow
rob-p Feb 27, 2026
5b28d2e
update git ignore
rob-p Feb 27, 2026
9674ea4
release v0.16.0
rob-p Feb 27, 2026
27598e7
update cargo.toml
rob-p Feb 27, 2026
e3830f5
release v0.16.1
rob-p Feb 27, 2026
c1aa15c
update Cargo.lock
rob-p Feb 27, 2026
f15988d
fix dist build
rob-p Feb 27, 2026
7cef7df
update config portable
rob-p Feb 27, 2026
e20bcc4
update config portable
rob-p Feb 28, 2026
6d73df2
update config portable
rob-p Feb 28, 2026
8c42652
update config portable
rob-p Feb 28, 2026
212eea8
update config portable
rob-p Feb 28, 2026
49c2063
update config portable
rob-p Feb 28, 2026
eea888e
update config portable
rob-p Feb 28, 2026
12513f1
update workflow
rob-p Feb 28, 2026
c916f1d
update workflow
rob-p Feb 28, 2026
2d6d234
fix: add explicit +avx2 target-feature for x86_64 CI builds
rob-p Feb 28, 2026
fd53598
release v0.16.2
rob-p Feb 28, 2026
6b7a976
Revise README for clarity and updated links
rob-p Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .cargo/config-portable.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# inspired by https://curiouscoding.nl/posts/release-flow/#avx2

# .cargo/config-portable.toml
[target.x86_64-unknown-linux-gnu]
rustflags = ["-C", "target-cpu=x86-64-v3", "-C", "target-feature=+avx2"]

[target.aarch64-unknown-linux-gnu]
rustflags = ["-C", "target-cpu=neoverse-n1"]

[target.aarch64-apple-darwin]
rustflags = ["-C", "target-cpu=apple-a14"]

[target.x86_64-apple-darwin]
rustflags = ["-C", "target-cpu=x86-64-v3", "-C", "target-feature=+avx2"]
4 changes: 4 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# taken from https://curiouscoding.nl/posts/release-flow/#avx2
[build]
# By default, we want maximum performance rather than portability.
rustflags = ["-C", "target-cpu=native"]
19 changes: 19 additions & 0 deletions .github/build-setup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
- name: Use portable Cargo config for CI builds
shell: bash
run: |
set -euo pipefail
cp .cargo/config-portable.toml .cargo/config.toml

- name: Force AVX2 for x86_64 (via RUSTFLAGS)
if: contains(join(matrix.targets, ','), 'x86_64-')
shell: bash
run: |
set -euo pipefail
echo 'RUSTFLAGS=-C target-cpu=x86-64-v3 -C target-feature=+avx2' >> "$GITHUB_ENV"

- name: Show effective x86_64 rustflags (proof)
if: contains(join(matrix.targets, ','), 'x86_64-')
shell: bash
run: |
set -euo pipefail
echo "RUSTFLAGS=${RUSTFLAGS-}"
82 changes: 56 additions & 26 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# This file was autogenerated by dist: https://opensource.axo.dev/cargo-dist/
# This file was autogenerated by dist: https://axodotdev.github.io/cargo-dist
#
# Copyright 2022-2024, axodotdev
# SPDX-License-Identifier: MIT or Apache-2.0
Expand Down Expand Up @@ -47,7 +47,7 @@ on:
jobs:
# Run 'dist plan' (or host) to determine what tasks we need to do
plan:
runs-on: "ubuntu-20.04"
runs-on: "ubuntu-22.04"
outputs:
val: ${{ steps.plan.outputs.manifest }}
tag: ${{ !github.event.pull_request && github.ref_name || '' }}
Expand All @@ -56,16 +56,17 @@ jobs:
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
persist-credentials: false
submodules: recursive
- name: Install dist
# we specify bash to get pipefail; it guards against the `curl` command
# failing. otherwise `sh` won't catch that `curl` returned non-0
shell: bash
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.24.1/cargo-dist-installer.sh | sh"
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.31.0/cargo-dist-installer.sh | sh"
- name: Cache dist
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: cargo-dist-cache
path: ~/.cargo/bin/dist
Expand All @@ -81,7 +82,7 @@ jobs:
cat plan-dist-manifest.json
echo "manifest=$(jq -c "." plan-dist-manifest.json)" >> "$GITHUB_OUTPUT"
- name: "Upload dist-manifest.json"
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: artifacts-plan-dist-manifest
path: plan-dist-manifest.json
Expand All @@ -107,21 +108,47 @@ jobs:
# - N "local" tasks that build each platform's binaries and platform-specific installers
matrix: ${{ fromJson(needs.plan.outputs.val).ci.github.artifacts_matrix }}
runs-on: ${{ matrix.runner }}
container: ${{ matrix.container && matrix.container.image || null }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_MANIFEST_NAME: target/distrib/${{ join(matrix.targets, '-') }}-dist-manifest.json
steps:
- name: enable windows longpaths
run: |
git config --global core.longpaths true
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
persist-credentials: false
submodules: recursive
- name: Install Rust non-interactively if not already installed
if: ${{ matrix.container }}
run: |
if ! command -v cargo > /dev/null 2>&1; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
fi
- name: "Use portable Cargo config for CI builds"
run: |
set -euo pipefail
cp .cargo/config-portable.toml .cargo/config.toml
shell: "bash"
- name: "Force AVX2 for x86_64 (via RUSTFLAGS)"
if: "contains(join(matrix.targets, ','), 'x86_64-')"
run: |
set -euo pipefail
echo 'RUSTFLAGS=-C target-cpu=x86-64-v3 -C target-feature=+avx2' >> "$GITHUB_ENV"
shell: "bash"
- name: "Show effective x86_64 rustflags (proof)"
if: "contains(join(matrix.targets, ','), 'x86_64-')"
run: |
set -euo pipefail
echo "RUSTFLAGS=${RUSTFLAGS-}"
shell: "bash"
- name: Install dist
run: ${{ matrix.install_dist }}
run: ${{ matrix.install_dist.run }}
# Get the dist-manifest
- name: Fetch local artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
pattern: artifacts-*
path: target/distrib/
Expand All @@ -143,12 +170,12 @@ jobs:
run: |
# Parse out what we just built and upload it to scratch storage
echo "paths<<EOF" >> "$GITHUB_OUTPUT"
jq --raw-output ".upload_files[]" dist-manifest.json >> "$GITHUB_OUTPUT"
dist print-upload-files-from-manifest --manifest dist-manifest.json >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"

cp dist-manifest.json "$BUILD_MANIFEST_NAME"
- name: "Upload artifacts"
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: artifacts-build-local-${{ join(matrix.targets, '_') }}
path: |
Expand All @@ -160,23 +187,24 @@ jobs:
needs:
- plan
- build-local-artifacts
runs-on: "ubuntu-20.04"
runs-on: "ubuntu-22.04"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_MANIFEST_NAME: target/distrib/global-dist-manifest.json
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
persist-credentials: false
submodules: recursive
- name: Install cached dist
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: cargo-dist-cache
path: ~/.cargo/bin/
- run: chmod +x ~/.cargo/bin/dist
# Get all the local artifacts for the global tasks to use (for e.g. checksums)
- name: Fetch local artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
pattern: artifacts-*
path: target/distrib/
Expand All @@ -194,7 +222,7 @@ jobs:

cp dist-manifest.json "$BUILD_MANIFEST_NAME"
- name: "Upload artifacts"
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: artifacts-build-global
path: |
Expand All @@ -206,26 +234,27 @@ jobs:
- plan
- build-local-artifacts
- build-global-artifacts
# Only run if we're "publishing", and only if local and global didn't fail (skipped is fine)
if: ${{ always() && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') }}
# Only run if we're "publishing", and only if plan, local and global didn't fail (skipped is fine)
if: ${{ always() && needs.plan.result == 'success' && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
runs-on: "ubuntu-20.04"
runs-on: "ubuntu-22.04"
outputs:
val: ${{ steps.host.outputs.manifest }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
persist-credentials: false
submodules: recursive
- name: Install cached dist
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: cargo-dist-cache
path: ~/.cargo/bin/
- run: chmod +x ~/.cargo/bin/dist
# Fetch artifacts from scratch-storage
- name: Fetch artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
pattern: artifacts-*
path: target/distrib/
Expand All @@ -238,14 +267,14 @@ jobs:
cat dist-manifest.json
echo "manifest=$(jq -c "." dist-manifest.json)" >> "$GITHUB_OUTPUT"
- name: "Upload dist-manifest.json"
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
# Overwrite the previous copy
name: artifacts-dist-manifest
path: dist-manifest.json
# Create a GitHub Release while uploading all files to it
- name: "Download GitHub Artifacts"
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
pattern: artifacts-*
path: artifacts
Expand Down Expand Up @@ -274,10 +303,11 @@ jobs:
# still allowing individual publish jobs to skip themselves (for prereleases).
# "host" however must run to completion, no skipping allowed!
if: ${{ always() && needs.host.result == 'success' }}
runs-on: "ubuntu-20.04"
runs-on: "ubuntu-22.04"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
persist-credentials: false
submodules: recursive
38 changes: 38 additions & 0 deletions .github/workflows/sanitize-cargo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Sanitize Cargo
on:
push:
branches:
- main

permissions:
"contents": "write"

jobs:
sanitize_cargo_file:
if: "contains(github.event.head_commit.message, '[do_tag]')"
runs-on: ubuntu-latest
# This is optional; it exposes the plan to your job as an environment variable
#env:
# PLAN: ${{ inputs.plan }}
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.PAT_TOK }}
- uses: dtolnay/rust-toolchain@stable
- name: Install cargo-sanitize
run: |
cargo install cargo-sanitize
- name: Sanitize Cargo.toml file
run: |
cp Cargo.toml Cargo.toml.cs_orig
cargo-sanitize -i Cargo.toml.cs_orig -o Cargo.toml
- name: Tag and push new commit
run: |
export VERSION_TAG=`cargo read-manifest | jq ".version" | tr -d '"'`
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add Cargo.toml.cs_orig
git add Cargo.toml
git commit -m "create sanitized release"
git tag --force -a v${VERSION_TAG} -m "version ${VERSION_TAG}"
git push --force origin v${VERSION_TAG}
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,14 @@ Cargo.lock

# These are backup files generated by rustfmt
**/*.rs.bk

# Local cargo config (contains dev-only [patch] overrides)
# .cargo/config.toml
radtk/
gencode_v49/
gencode_v49_new/
piscem-cpp/
sshash/
sample_quant_new/
sample_quant/

8 changes: 0 additions & 8 deletions .gitmodules

This file was deleted.

Loading