v1.0.0: Windows AMD64 binary + patent/trade-mark reservation + release docs
- LICENSE §7: no-patent-grant + future-patent reservation; SIM/SEM trade-mark reservation with nominative-use exception; sem_cython12 technical name explicitly NOT a trade mark. - LICENSE §10: third-party components disclosure (NumPy BSD-3, OpenMP). - Add Windows AMD64 cp312 binary alongside the Linux x86_64 one. - README: compatibility table, build provenance, no-telemetry section. - CHANGELOG.md, CONTRIBUTING.md, SECURITY.md (info@sevana.biz, 5 BD ack).
This commit is contained in:
@@ -0,0 +1,63 @@
|
|||||||
|
# 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.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.
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
# Contributing to sem_cython12
|
||||||
|
|
||||||
|
Thank you for your interest in `sem_cython12`.
|
||||||
|
|
||||||
|
## Scope of this repository
|
||||||
|
|
||||||
|
This repository distributes pre-built binaries and the public Python
|
||||||
|
wrapper only. The implementation source code is not published here
|
||||||
|
and external code contributions to the kernels are not accepted at
|
||||||
|
this time.
|
||||||
|
|
||||||
|
## What you can contribute
|
||||||
|
|
||||||
|
- **Bug reports.** Open an issue at
|
||||||
|
https://git.sevana.biz/vvs/sem_cython12/issues with:
|
||||||
|
- OS, CPU architecture, glibc version (Linux) or Windows build,
|
||||||
|
- Python version (`python --version`),
|
||||||
|
- NumPy version,
|
||||||
|
- a minimal reproducer (small array shapes preferred),
|
||||||
|
- the full traceback or observed vs. expected output.
|
||||||
|
|
||||||
|
- **Documentation fixes.** Typos, broken links, unclear wording in
|
||||||
|
`README.md` or `CHANGELOG.md` are welcome via issue or pull request.
|
||||||
|
|
||||||
|
- **Usage questions.** Use the issue tracker. Please search existing
|
||||||
|
issues first.
|
||||||
|
|
||||||
|
## What is out of scope here
|
||||||
|
|
||||||
|
- Pull requests modifying `sem_cython12/sem_core12*.so` or
|
||||||
|
`sem_cython12/sem_core12*.pyd` (binary artefacts, built from a
|
||||||
|
separate source tree).
|
||||||
|
- Pull requests adding new numerical functions to
|
||||||
|
`sem_cython12/wrapper.py` (the wrapper mirrors a closed kernel API).
|
||||||
|
- Algorithmic discussion of the underlying methods.
|
||||||
|
|
||||||
|
## Security issues
|
||||||
|
|
||||||
|
Do not file security issues on the public tracker. See
|
||||||
|
[`SECURITY.md`](./SECURITY.md).
|
||||||
|
|
||||||
|
## Commercial inquiries
|
||||||
|
|
||||||
|
For commercial licensing, custom builds (including macOS), or
|
||||||
|
integration support, contact `sales@sevana.biz`.
|
||||||
|
|
||||||
|
## Code of conduct
|
||||||
|
|
||||||
|
Be respectful and on-topic. Off-topic, abusive, or commercially
|
||||||
|
solicitous issues will be closed without comment.
|
||||||
@@ -173,18 +173,50 @@ written notice to you.
|
|||||||
The disclaimers in sections 4 and 5 survive termination.
|
The disclaimers in sections 4 and 5 survive termination.
|
||||||
|
|
||||||
================================================================
|
================================================================
|
||||||
7. NO TRANSFER OF OWNERSHIP
|
7. NO TRANSFER OF OWNERSHIP; PATENT AND TRADE MARK RESERVATION
|
||||||
================================================================
|
================================================================
|
||||||
|
|
||||||
All right, title, and interest in and to the Software, including
|
All right, title, and interest in and to the Software, including
|
||||||
all intellectual property rights therein, remain with the
|
all copyright, patent, patent application, trade secret, know-how,
|
||||||
|
and other intellectual property rights therein, remain with the
|
||||||
Licensor. This licence does not transfer ownership of the
|
Licensor. This licence does not transfer ownership of the
|
||||||
Software, of any modification, or of any derivative work to the
|
Software, of any modification, or of any derivative work to the
|
||||||
Licensee.
|
Licensee.
|
||||||
|
|
||||||
|
Without limiting the foregoing:
|
||||||
|
|
||||||
|
(a) NO PATENT LICENCE IS GRANTED. This licence does not grant,
|
||||||
|
expressly, by implication, by estoppel, by exhaustion, or
|
||||||
|
otherwise, any rights under any patent, patent application,
|
||||||
|
or other patent-related right of the Licensor or its
|
||||||
|
affiliates.
|
||||||
|
|
||||||
|
(b) The algorithms, methods, and techniques implemented in the
|
||||||
|
Software may be the subject of pending or future patent
|
||||||
|
applications by the Licensor. Any use of those algorithms,
|
||||||
|
methods, or techniques in a manner that would require a
|
||||||
|
patent licence is reserved and requires separate written
|
||||||
|
permission from the Licensor.
|
||||||
|
|
||||||
|
(c) The marks "Similarity Induced Meaning", "SIM", and "SEM",
|
||||||
|
together with any abbreviations, slogans, or logos
|
||||||
|
associated with them, are intended trade marks of the
|
||||||
|
Licensor. This licence does not grant any right to use
|
||||||
|
those marks except for factual nominative reference (for
|
||||||
|
example, "this work uses the SIM/SEM apparatus") in a
|
||||||
|
context that does not suggest endorsement by, or
|
||||||
|
affiliation with, the Licensor.
|
||||||
|
|
||||||
|
(d) "sem_cython12" is the technical name of this Software
|
||||||
|
distribution and is NOT claimed as a trade mark by the
|
||||||
|
Licensor. Any use of the technical name in derivative or
|
||||||
|
referencing works is unrestricted, subject to the rest of
|
||||||
|
this licence.
|
||||||
|
|
||||||
This licence does not grant you any rights to use the Licensor's
|
This licence does not grant you any rights to use the Licensor's
|
||||||
name, trade marks, service marks, logos, or any other branding,
|
name, trade marks, service marks, logos, or any other branding,
|
||||||
except as required by section 8 (Attribution).
|
except as required by section 8 (Attribution) and as permitted by
|
||||||
|
the factual-reference allowance in (c) above.
|
||||||
|
|
||||||
================================================================
|
================================================================
|
||||||
8. ATTRIBUTION
|
8. ATTRIBUTION
|
||||||
@@ -210,7 +242,26 @@ shall be resolved in the competent courts of the Republic of
|
|||||||
Estonia, to whose jurisdiction both parties submit.
|
Estonia, to whose jurisdiction both parties submit.
|
||||||
|
|
||||||
================================================================
|
================================================================
|
||||||
10. ENTIRE AGREEMENT
|
10. THIRD-PARTY COMPONENTS
|
||||||
|
================================================================
|
||||||
|
|
||||||
|
The Software depends at runtime on the following third-party
|
||||||
|
components, each of which is distributed under its own licence
|
||||||
|
and is not itself the subject of this licence:
|
||||||
|
|
||||||
|
(a) NumPy (BSD 3-Clause licence) - used as a runtime
|
||||||
|
dependency for array data structures.
|
||||||
|
|
||||||
|
(b) The OpenMP runtime supplied by the operating system or the
|
||||||
|
compiler toolchain (e.g., libgomp on Linux, vcomp on
|
||||||
|
Windows) - linked at compile time.
|
||||||
|
|
||||||
|
The Licensor does not relicense any third-party component; users
|
||||||
|
must comply with the terms of each component's own licence in
|
||||||
|
addition to this licence.
|
||||||
|
|
||||||
|
================================================================
|
||||||
|
11. ENTIRE AGREEMENT
|
||||||
================================================================
|
================================================================
|
||||||
|
|
||||||
This licence constitutes the entire agreement between you and the
|
This licence constitutes the entire agreement between you and the
|
||||||
|
|||||||
@@ -1,24 +1,37 @@
|
|||||||
# sem_cython12
|
# sem_cython12
|
||||||
|
|
||||||
OpenMP-parallel numerical kernel library for Python. Pre-built Linux
|
OpenMP-parallel numerical kernel library for Python. Pre-built
|
||||||
shared object included; no compilation required at install time.
|
Linux and Windows binaries included; no compilation required at
|
||||||
|
install time.
|
||||||
|
|
||||||
## Contents
|
## Contents
|
||||||
|
|
||||||
- `sem_cython12/sem_core12.cpython-312-x86_64-linux-gnu.so` -
|
- `sem_cython12/sem_core12.cpython-312-x86_64-linux-gnu.so` -
|
||||||
compiled extension (Linux, CPython 3.12, x86_64).
|
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/wrapper.py` - Python API.
|
- `sem_cython12/wrapper.py` - Python API.
|
||||||
- `sem_cython12/__init__.py` - package entry.
|
- `sem_cython12/__init__.py` - package entry.
|
||||||
|
|
||||||
## Requirements
|
## Compatibility
|
||||||
|
|
||||||
- Linux x86_64.
|
| Platform | Architecture | Python | Runtime requirements |
|
||||||
- CPython 3.12.
|
|-----------------|--------------|-----------|-----------------------------|
|
||||||
- numpy >= 1.23 (see `requirements.txt`).
|
| Linux | x86_64 | CPython 3.12 | glibc >= 2.31, libgomp |
|
||||||
- A modern glibc + libgomp. Both ship with Ubuntu 20.04 LTS and
|
| Windows 10/11 | AMD64 | CPython 3.12 | vcomp (ships with Windows) |
|
||||||
later. No other system libraries needed.
|
| macOS | - | - | not provided (contact sales@sevana.biz) |
|
||||||
|
|
||||||
The Windows / macOS binaries are not included in this distribution.
|
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`.
|
||||||
|
|
||||||
|
Both binaries target CPython 3.12 (cp312) ABI. No other Python
|
||||||
|
version is supported in this release.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
@@ -118,6 +131,13 @@ and benefits most from larger `M` (reference set) at fixed `D`.
|
|||||||
(`libgomp`); avoid mixing with conda's `intel-openmp` in the same
|
(`libgomp`); avoid mixing with conda's `intel-openmp` in the same
|
||||||
process if possible.
|
process if possible.
|
||||||
|
|
||||||
|
## Privacy / telemetry
|
||||||
|
|
||||||
|
`sem_cython12` performs **no network I/O**, opens no sockets, and
|
||||||
|
writes no files outside the calling process's working directory.
|
||||||
|
There is no telemetry, no usage reporting, and no licence-server
|
||||||
|
check-in. All computation is in-process on local arrays.
|
||||||
|
|
||||||
## Diagnostics
|
## Diagnostics
|
||||||
|
|
||||||
`backend()` returns `'python-fallback'` only when the `.so` failed
|
`backend()` returns `'python-fallback'` only when the `.so` failed
|
||||||
|
|||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported versions
|
||||||
|
|
||||||
|
Only the latest released version of `sem_cython12` receives security
|
||||||
|
fixes. The current supported line is `1.0.x`.
|
||||||
|
|
||||||
|
| Version | Supported |
|
||||||
|
|---------|-----------|
|
||||||
|
| 1.0.x | yes |
|
||||||
|
| < 1.0 | no |
|
||||||
|
|
||||||
|
## Reporting a vulnerability
|
||||||
|
|
||||||
|
Please report suspected security vulnerabilities **privately**, not on
|
||||||
|
the public issue tracker.
|
||||||
|
|
||||||
|
Email: **info@sevana.biz**
|
||||||
|
|
||||||
|
Include in your report:
|
||||||
|
|
||||||
|
- a description of the issue and its potential impact,
|
||||||
|
- the affected version(s) of `sem_cython12`,
|
||||||
|
- platform details (OS, architecture, Python version),
|
||||||
|
- a minimal reproducer if possible,
|
||||||
|
- whether the issue is already publicly known.
|
||||||
|
|
||||||
|
## What to expect
|
||||||
|
|
||||||
|
- **Acknowledgement** within **5 business days** of receipt.
|
||||||
|
- **Initial assessment** (severity, scope, reproducibility) within 15
|
||||||
|
business days.
|
||||||
|
- **Coordinated disclosure**: we will work with you on a disclosure
|
||||||
|
timeline. We aim to release a fix or mitigation before public
|
||||||
|
disclosure. Default embargo is up to 90 days from acknowledgement,
|
||||||
|
extendable by mutual agreement for non-trivial fixes.
|
||||||
|
- **Credit**: with your permission, we will credit you in the
|
||||||
|
`CHANGELOG.md` entry for the fix.
|
||||||
|
|
||||||
|
## Out of scope
|
||||||
|
|
||||||
|
- Issues that require an attacker to already control the Python
|
||||||
|
process running `sem_cython12` (e.g. arbitrary pickle loading,
|
||||||
|
malicious NumPy arrays constructed in-process).
|
||||||
|
- Denial-of-service via deliberately huge input arrays.
|
||||||
|
- Vulnerabilities in third-party dependencies (NumPy, OpenMP runtime)
|
||||||
|
that are not specific to `sem_cython12`'s use of them; please report
|
||||||
|
those upstream.
|
||||||
|
|
||||||
|
## No bug bounty
|
||||||
|
|
||||||
|
`sem_cython12` does not currently operate a paid bug bounty programme.
|
||||||
|
Reports are appreciated and will be acknowledged in writing.
|
||||||
Binary file not shown.
Reference in New Issue
Block a user