diff --git a/CHANGELOG.md b/CHANGELOG.md index 177523b..27b9e90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,32 @@ release `MAJOR.MINOR.PATCH` increments - `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. diff --git a/README.md b/README.md index bdeb839..1784174 100644 --- a/README.md +++ b/README.md @@ -44,32 +44,42 @@ exercise these three jobs against well-known baselines. ## Contents -- `sem_cython12/sem_core12.cpython-312-x86_64-linux-gnu.so` - - compiled extension (Linux, CPython 3.12, x86_64). -- `sem_cython12/sem_core12.cp312-win_amd64.pyd` - - compiled extension (Windows, CPython 3.12, AMD64). +- `sem_cython12/sem_core12.cpython-3{10,11,12,13}-x86_64-linux-gnu.so` - + compiled extensions (Linux, x86_64) for CPython 3.10 / 3.11 / 3.12 / 3.13. +- `sem_cython12/sem_core12.cp3{10,11,12,13}-win_amd64.pyd` - + compiled extensions (Windows, AMD64) for CPython 3.10 / 3.11 / 3.12 / 3.13. - `sem_cython12/wrapper.py` - Python API. - `sem_cython12/__init__.py` - package entry. +Python's import system selects the correct binary for the running +interpreter automatically — install the whole package and the right +`.so` / `.pyd` is picked up by ABI tag. + ## Compatibility -| Platform | Architecture | Python | Runtime requirements | -|-----------------|--------------|-----------|-----------------------------| -| Linux | x86_64 | CPython 3.12 | glibc >= 2.31, libgomp | -| Windows 10/11 | AMD64 | CPython 3.12 | vcomp (ships with Windows) | -| macOS | - | - | not provided (contact sales@sevana.biz) | +| Platform | Architecture | Python | Runtime requirements | +|-----------------|--------------|------------------------|-----------------------------| +| Linux | x86_64 | CPython 3.10/3.11/3.12/3.13 | glibc >= 2.31, libgomp | +| Windows 10/11 | AMD64 | CPython 3.10/3.11/3.12/3.13 | vcomp (ships with Windows) | +| macOS | - | - | not provided (contact sales@sevana.biz) | Single Python dependency: `numpy >= 1.23` (see `requirements.txt`). ## How the binaries were built -- **Linux (`*.so`)**: gcc 13.3, OpenMP via `libgomp`, flags - `-O3 -ffast-math -march=native -fopenmp`. -- **Windows (`*.pyd`)**: MSVC v14.50 (Visual Studio Build Tools 2026), - OpenMP via `vcomp`, flags `/O2 /openmp`. +- **Linux (`*.so`), cp312**: system gcc 13.3 on Ubuntu, OpenMP via + `libgomp`, flags `-O3 -ffast-math -march=native -fopenmp`. +- **Linux (`*.so`), cp310 / cp311 / cp313**: conda-forge gcc inside + isolated `python=3.10/3.11/3.13` envs (clean, system-Python-free + build), same OpenMP and optimisation flags. +- **Windows (`*.pyd`), all four versions**: MSVC v14.50 (Visual Studio + Build Tools 2026), OpenMP via `vcomp`, flags `/O2 /openmp`. Each + built against the matching CPython interpreter installed via + `winget`. -Both binaries target CPython 3.12 (cp312) ABI. No other Python -version is supported in this release. +All eight binaries pass the same numerical smoke test +(`batch_max_similarity` over fixed-seed data) and produce identical +output to within float64 round-off. ## Install diff --git a/sem_cython12/sem_core12.cp310-win_amd64.pyd b/sem_cython12/sem_core12.cp310-win_amd64.pyd new file mode 100644 index 0000000..d724da6 Binary files /dev/null and b/sem_cython12/sem_core12.cp310-win_amd64.pyd differ diff --git a/sem_cython12/sem_core12.cp311-win_amd64.pyd b/sem_cython12/sem_core12.cp311-win_amd64.pyd new file mode 100644 index 0000000..6ef9995 Binary files /dev/null and b/sem_cython12/sem_core12.cp311-win_amd64.pyd differ diff --git a/sem_cython12/sem_core12.cp313-win_amd64.pyd b/sem_cython12/sem_core12.cp313-win_amd64.pyd new file mode 100644 index 0000000..a20d902 Binary files /dev/null and b/sem_cython12/sem_core12.cp313-win_amd64.pyd differ diff --git a/sem_cython12/sem_core12.cpython-310-x86_64-linux-gnu.so b/sem_cython12/sem_core12.cpython-310-x86_64-linux-gnu.so new file mode 100644 index 0000000..fce87f7 Binary files /dev/null and b/sem_cython12/sem_core12.cpython-310-x86_64-linux-gnu.so differ diff --git a/sem_cython12/sem_core12.cpython-311-x86_64-linux-gnu.so b/sem_cython12/sem_core12.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000..9e0e542 Binary files /dev/null and b/sem_cython12/sem_core12.cpython-311-x86_64-linux-gnu.so differ diff --git a/sem_cython12/sem_core12.cpython-313-x86_64-linux-gnu.so b/sem_cython12/sem_core12.cpython-313-x86_64-linux-gnu.so new file mode 100644 index 0000000..7aeb633 Binary files /dev/null and b/sem_cython12/sem_core12.cpython-313-x86_64-linux-gnu.so differ