Skip to content
This repository was archived by the owner on Sep 24, 2026. It is now read-only.

chore: bump workspace version to 0.20.0 - #562

Merged
nick-youngblut merged 1 commit into
mainfrom
bump-version-0.20.0
Sep 24, 2026
Merged

nick-youngblut merged 1 commit into
mainfrom
bump-version-0.20.0

Conversation

@nick-youngblut

Copy link
Copy Markdown
Contributor

All 16 versioned workspace members, pyscx/pyproject.toml and
rscx/DESCRIPTION; tests/scx-integration-tests stays at 0.0.0. README's
scx-cli download snippet follows. (ROADMAP.md no longer exists, so there is
no date stamp to move.)

0.20.0 collects the merged PRs since 0.19.0 (#544-#561):

Behaviour changes worth calling out in the release notes:

No benchmark recapture for this release.

Pre-release gate on this tree: cargo fmt --check; cargo clippy --workspace --exclude rscx --all-targets -D warnings; cargo test --workspace --exclude rscx (4,220 passed, 0 failed); cargo test -p scx-convert --features hdf5
(474 passed); cargo test -p scx-cli --features hdf5 -- --test-threads=1 (253
passed); maturin develop --release + pytest tests/ (3,247 passed, 140
skipped, 2 xfailed; pyscx.__version__ == "0.20.0"). Not run: rscx tests,
--features cloud, GPU pytest, fuzzing, benchmarks.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RwRKstgr4TNkXhLhkQwmjA

All 16 versioned workspace members, `pyscx/pyproject.toml` and
`rscx/DESCRIPTION`; `tests/scx-integration-tests` stays at `0.0.0`. README's
`scx-cli` download snippet follows. (ROADMAP.md no longer exists, so there is
no date stamp to move.)

0.20.0 collects the merged PRs since 0.19.0 (#544-#561):

- CSC sidecar series: one-pass bucketed CSC builder (#555); `build-csc` as an
  in-place, rollback-able append (#556); same-pass CSC build on ingest and
  carry-through on rewrite ops (#557); parallel CSC build and `csc="auto"` as
  the ingest default (#558); CSC dispatch for row-indexed transforms and
  row-filtered / gene-subset handles (#553, #554); CSC route coverage and the
  exact-nnz Wilcoxon kernel as the 1-vs-rest CSC default (#559)
- Correctness: Leiden parallel local moving keeps decliners eligible (#544);
  five CPU-accelerator parity / convergence fixes (#548); GPU cuVS stream sync,
  reduction determinism, decoder bounds and VRAM accounting (#549); CLI
  destination-overwrite safety and MTX multimodal / streaming / integer
  integrity (#550); unscoped whole-matrix reads of a multimodal file refused
  (#551); dictionary (categorical) output from append / merge / merge
  --sort-by (#546) and `scx sort`'s obs spill path (#547)
- Benchmarks and docs: four community analytical benchmarks (#552), laptop-test
  recapture (#560), README refresh (#545), docs split into per-topic
  directories (#561)

Behaviour changes worth calling out in the release notes:

- **`csc="auto"` is the ingest default** on every entry point and preset
  (`from_mudata` keeps `off`): files with `n_obs >= 50000` and
  `n_vars >= 5000` now get a CSC sidecar, costing ingest wall time and
  +42-71 % on disk. `--csc off` / `csc="off"` opts out (#558).
- **Rewrite ops carry the CSC sidecar by default** (`compact`, `merge`,
  `optimize`, `sort`, `subset`), rebuilt from the output's own shards;
  `--csc carry|always|off`. `--rebuild-csc` / `rebuild_csc=True` are
  deprecated aliases for `always` (#557).
- **`scx build-csc` appends in place** rather than rewriting the file, and
  `scx rollback` removes the sidecar (#556).
- **Ten CLI subcommands no longer silently overwrite an existing destination**;
  `--force` is required (convert, merge, subset, query --output, upgrade,
  cloud-optimize, explode, pack, pull; compact / optimize / sort migrated onto
  the same guard) and is refused where nothing is written (#550).
- **MTX**: a declared-`integer` MTX with a value past 2^24, a non-integral
  value or `nan`/`inf` is refused on ingest (`--allow-lossy` restores the old
  behaviour); multimodal MTX export requires a modality (`pyscx.to_mtx` gains
  `modality=`); export streams one shard at a time (#550).
- **An unscoped whole-matrix read of a multimodal file raises**
  `MultimodalRequiresModality` instead of folding every modality into one
  `n_obs x n_modalities`-row answer — `to_anndata()`, `to_memory()`,
  `read_all_csr_shards*`, `scx pull --filter` (#551).
- **Numerical changes**: UMAP init scale and `random_init` now match
  umap-learn, the kNN sigma search, and NB-GLM dispersion shrinkage (the
  `above_min_disp` residual filter always runs; new `disp_outlier_sd=2.0`
  carve-out, `None` disables only the carve-out) (#548); parallel Leiden
  labels change (#544).
- **Wilcoxon on the CPU CSC route** defaults to the exact-nnz kernel (route id
  `cpu_csc_nnz`); `SCX_ACCEL_WILCOXON_NNZ=0` restores densify (`cpu_csc`), and
  `reference=` / `rankby_abs=True` still use densify (#559).
- **Categorical obs columns** keep their declared categories, unused levels and
  `ordered` bit through append / merge / sort (#546, #547).

No benchmark recapture for this release.

Pre-release gate on this tree: `cargo fmt --check`; `cargo clippy --workspace
--exclude rscx --all-targets -D warnings`; `cargo test --workspace --exclude
rscx` (4,220 passed, 0 failed); `cargo test -p scx-convert --features hdf5`
(474 passed); `cargo test -p scx-cli --features hdf5 -- --test-threads=1` (253
passed); `maturin develop --release` + `pytest tests/` (3,247 passed, 140
skipped, 2 xfailed; `pyscx.__version__ == "0.20.0"`). Not run: rscx tests,
`--features cloud`, GPU pytest, fuzzing, benchmarks.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RwRKstgr4TNkXhLhkQwmjA

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the version of the SCX project and its various sub-crates and bindings from 0.19.0 to 0.20.0 across all configuration files, lockfiles, and documentation. There are no review comments, and I have no feedback to provide.

@nick-youngblut
nick-youngblut merged commit 4a4591a into main Sep 24, 2026
13 checks passed
@nick-youngblut
nick-youngblut deleted the bump-version-0.20.0 branch September 24, 2026 04:43
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant