# Changelog

All notable changes to `sem_cython12` are recorded in this file.

The project follows [Semantic Versioning](https://semver.org/): a
release `MAJOR.MINOR.PATCH` increments

- `MAJOR` on breaking API changes,
- `MINOR` on backwards-compatible feature additions,
- `PATCH` on backwards-compatible bug fixes.

## [1.1.0] - 2026-05-10

Binary matrix expanded to four CPython versions on both supported
platforms.

### Added

- Pre-compiled Linux x86_64 binaries for **CPython 3.10, 3.11, 3.13**
  (`sem_core12.cpython-3{10,11,13}-x86_64-linux-gnu.so`).  Built in
  isolated conda-forge environments with conda-forge gcc, same
  OpenMP and optimisation flags as the cp312 binary.
- Pre-compiled Windows AMD64 binaries for **CPython 3.10, 3.11, 3.13**
  (`sem_core12.cp3{10,11,13}-win_amd64.pyd`).  Built with MSVC v14.50
  against the matching CPython installed via `winget`.

### Verified

- All eight binaries (4 Linux + 4 Windows) produce identical numerical
  output for the same fixed-seed input on `batch_max_similarity`.

### Compatibility notes

- macOS is still not provided in this release.  Contact
  `sales@sevana.biz` if you need a macOS build.
- numpy requirement unchanged: `numpy >= 1.23`.

## [1.0.0] - 2026-05-09

First public release.

### Included

- Pre-compiled Linux x86_64 binary (`sem_core12.cpython-312-x86_64-linux-gnu.so`)
  built with gcc 13.3, OpenMP-parallel (`libgomp`), `-O3 -ffast-math
  -march=native`.
- Pre-compiled Windows AMD64 binary (`sem_core12.cp312-win_amd64.pyd`)
  built with MSVC v14.50 (Visual Studio Build Tools 2026),
  OpenMP-parallel (`vcomp`), `/O2 /openmp`.
- Python wrapper module `sem_cython12.wrapper` exposing the public
  numerical API.
- Single runtime dependency: `numpy >= 1.23`.

### API surface

Configuration:
- `available()`, `backend()`, `get_num_threads()`, `set_num_threads(n)`.

Distance and similarity:
- `batch_max_similarity(X_query, X_members, lam)`
- `concept_support_matrix(X_query, member_mats, lam)`
- `pairwise_distances(X)`
- `nn_distances(X)`

Best-tradeoff filtering:
- `pareto_core_mask(S)`
- `one_sided_mask(S)`
- `non_redundant_witnesses(S)`

Vector reduction:
- `extend_frontier_kernel(cur_centers, cur_radii, new_emb, cur_arity)`

### Compatibility

- CPython 3.12 (cp312) only in this release.  Other Python versions
  are not supported.
- Linux x86_64 with glibc 2.31 or newer (Ubuntu 20.04 LTS and later,
  RHEL 9 and later, Debian 11 and later).
- Windows 10 / Windows 11 / Windows Server 2019+, AMD64 only.
- macOS binaries are not provided in this release.  Contact
  `sales@sevana.biz` if you need a macOS build.

### Notes

- Thread count defaults to roughly 50% of the host's logical cores.
  Override via `sem_cython12.wrapper.set_num_threads(n)` or the
  `SEM_NUM_THREADS` environment variable.
- The library performs no network I/O, opens no sockets, and writes
  no files outside the calling process's working directory.
