SciCore
SciCore is a port of SciPy onto rsnumpy — a Rust-backed, NumPy-compatible array library. It keeps SciPy’s algorithms and API, migrates compiled kernels to Rust incrementally, and swaps the array backend from NumPy to rsnumpy.
The import name stays scicore, so it is a drop-in replacement:
pip install scirs python -c "import scicore.linalg"
Quick Start
Install from PyPI:
pip install scirs
Use any SciCore module the same way you would use its SciPy counterpart:
import scicore.linalg as la import scicore.optimize as opt import scicore.signal as sig import scicore.stats as stats
Modules
SciCore mirrors SciPy’s module structure:
scicore.linalg — linear algebra (BLAS/LAPACK)
scicore.optimize — optimization and root finding
scicore.signal — signal processing
scicore.stats — statistics
scicore.integrate — integration and ODEs
scicore.interpolate — interpolation
scicore.fft / scicore.fftpack — Fourier transforms
scicore.sparse — sparse matrices
scicore.spatial — spatial structures and distances
scicore.special — special functions
scicore.ndimage — n-dimensional image processing
scicore.cluster — clustering
scicore.io — I/O utilities
scicore.datasets — sample datasets
scicore.constants — physical constants
scicore.differentiate — differentiation
Why
SciCore’s compiled kernels are C, C++, Cython and Fortran. SciCore keeps the algorithms, migrates compiled kernels to Rust incrementally, and swaps the array backend from NumPy to rsnumpy. Until that migration is complete, some native extensions still use the upstream implementations. Two consequences worth knowing up front:
No Python NumPy dependency at runtime. Arrays are rsnumpy arrays. NumPy remains a build-time dependency for the C/Cython extensions that have not yet been ported.
Native-kernel migration is ongoing. A growing list of kernels now run in Rust — signal filtering (lfilter, sosfilt, upfirdn, N-D correlate, convolve2d/correlate2d, remez FIR design, spline filtering, 2-D median filtering), FFTPACK packed-spectrum convolution, cluster VQ assignment, graph ordering (reverse Cuthill-McKee), least-squares Givens elimination, connected-component labeling, Hausdorff distance search, Boyett/Patefield contingency-table sampling, and more. Other C, C++, Cython, and Fortran production extensions are still being replaced.
Recomputation over incremental update. Where upstream keeps a factorisation up to date with Givens rotations (scicore.linalg.qr_update and friends), this port recomputes the factorisation. The results match, but the complexity is O(m n²) rather than O(m n). Each affected function says so in its docstring.
Status
This is a work in progress. Native kernels are still being migrated to Rust; until that is complete, some native extensions still use the upstream implementations. Treat the API as experimental and pin the version if you depend on it.
Building from source
The build is driven by maturin: it compiles the pyo3 crate in rust/ into the scicore._scicore_rs extension and packages the python/ tree into a wheel.
There is a helper that does the whole thing and installs the result into .venv:
./build_wheel.sh
Useful flags:
./build_wheel.sh --debug # debug build instead of release ./build_wheel.sh --out-dir dist # where to put the wheel ./build_wheel.sh --python /path/to/python
To do it by hand:
pip install maturin maturin build --release -i python -o dist pip install dist/*.whl
build_wheel.sh also runs cargo fmt --check and cargo clippy before building, so a failing lint stops the build rather than shipping a wheel.
Requirements: a Rust toolchain, Python >= 3.12.
Development
Clone the repository:
git clone --recursive https://github.com/YJ-Niu/scicore.git
The --recursive flag initializes the doc submodule (scipy-mathjax for formula rendering in the docs).
Run the Rust unit tests from the workspace root:
cd rust cargo test --workspace
The repository’s SciCore-owned Python tests live in test/ and tools/. pytest.ini limits python -m pytest to those tests so the vendored upstream SciCore test corpus is not run as if it were a SciCore suite. The Python tests cover the rsnumpy migration and Rust-backed Python adapters; the Rust workspace tests cover each migrated kernel.
Links
Source code: https://github.com/YJ-Niu/scicore
Bug reports: https://github.com/YJ-Niu/scicore/issues
rsnumpy (array backend): https://github.com/YJ-Niu/rsnumpy
Upstream SciCore: https://github.com/scicore-dev/scicore
License
BSD 3-Clause, matching upstream SciCore. See LICENSE.txt.
Metadata
Release files for scirs 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 86.2 MB
Release files / scirs-0.1.5-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scirs-0.1.5-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
a2461148f1c8bcba0b4561f8e90521bd416f4911095f40420aca8540e25ab585
|
|
BLAKE2b-256 checksum How to use checksums |
cddebaba15861b9fa79a35c158685d2600e133801d55e19560b107c5d3b0c6d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp315-cp315-win_amd64.whl
| Download URL | scirs-0.1.5-cp315-cp315-win_amd64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.15 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4c827fad7c4d2764d1c2ba93b04b1ec9d0021fafaac42f9561ede3cb8acac48b
|
|
BLAKE2b-256 checksum How to use checksums |
d0a1e86420344170cb91ead046b5b443ec68eea45046a994819b2cb6cb2b1c2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scirs-0.1.5-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.15 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
b3fb902cb15fc8cecf5a6d2d8913f3141071a8dd4a9aea84e913154639623919
|
|
BLAKE2b-256 checksum How to use checksums |
5906a106d2dc966580f832c51db91af7a9aa62beb229d19d8c6f8fb83558bd27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp315-cp315-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | scirs-0.1.5-cp315-cp315-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.15 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7092f6dd814a7a0d27bc9fdda6b244c97df58f28e289d99f1f22e1a3174983c0
|
|
BLAKE2b-256 checksum How to use checksums |
363a0130c816abeb44030eabfe6e094ee5badb336701431815d5182a7ee41535
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scirs-0.1.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
510f2b57a9c25ab88d75b578c38c820c870c4754cfd3ccfe5de5a5e2b8232fce
|
|
BLAKE2b-256 checksum How to use checksums |
ddb0f2e62afec9ce3c33674527da3ede9d5be365d8f550e37831bcd8b9f73d3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | scirs-0.1.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
f0e08f601b2b68edc84672ecf7510b0095165f8e240c41416ec8ead900fec934
|
|
BLAKE2b-256 checksum How to use checksums |
14380fc8ef13371d98eb615fabef6292c399ae0ba4f06ef4628a10d2258bf46f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp314-cp314-win_amd64.whl
| Download URL | scirs-0.1.5-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
13030cf03a39ddf4f6b6325b111ed9209eefdd7b1d244b734ec7790b8ddba0bd
|
|
BLAKE2b-256 checksum How to use checksums |
5e7c7a354f7f6c65eb285ba94d59d511456f23a5f270d61edbfdd931d05e2e97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scirs-0.1.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
f49a51f340c33b010a2d3c95449001c40a1cb4fc0f32fbc7ac8d7c962c310fb8
|
|
BLAKE2b-256 checksum How to use checksums |
262e7d7ae85c71de2121320ad21007d7fb178571a374ed07beda6ce148e39ea9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | scirs-0.1.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
8696dc85e1c7753e1302ff9534f03a9099bf1f0e1a179ebd63ca92ab071eb850
|
|
BLAKE2b-256 checksum How to use checksums |
8f67342c15e01682c7b0b7fc87522b9f432ba9bb732dbbb30f67ccc2c33d8d9f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | scirs-0.1.5-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.14 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
785815ec5fe864e4dffeb1111cf01996e34e09a6150b083a0a3a3f21e6fb743e
|
|
BLAKE2b-256 checksum How to use checksums |
6351a2705ef386d756de0156ee3e5548accd193621606e66de67d5a01f384293
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp313-cp313-win_amd64.whl
| Download URL | scirs-0.1.5-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ceb7ca640979db83a3aa49dae53a51e55cb602551d3ef497a82e39c9c2febac6
|
|
BLAKE2b-256 checksum How to use checksums |
09d5a3a22dd87589d964d5fb423a0df17409367540aa4078a2874285cb941ff9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scirs-0.1.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
91570b4709d796222b7697c5174835cace90ce26a02142cf21ce4393a85fa1e4
|
|
BLAKE2b-256 checksum How to use checksums |
645393dc16fa5d94fb00b82236b6c9730d28bab0e760f219220b4279ac3f91e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | scirs-0.1.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
cd332de6e47040f45fce9fae8457dfb58c6de2f8c1a52b65221de0fdf75e0681
|
|
BLAKE2b-256 checksum How to use checksums |
59b2171f0bb713f5c3ae1f02b4e9a0b595d7171b66fd48dae28f09f18a20d815
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | scirs-0.1.5-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e4d233ad732bbfcec8a55ac4ccddf3b03ec8a3eb90e9e032fc42b3b319662201
|
|
BLAKE2b-256 checksum How to use checksums |
70e61dbf9a03afebb565793208d81ebf01bd2100f0e3ccee460c1cdd3c9cee0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp312-cp312-win_amd64.whl
| Download URL | scirs-0.1.5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
60266a9dc0a9f7515cd8c33f564e3b2689b3f467db484ed0b1b20c0ba31d47d4
|
|
BLAKE2b-256 checksum How to use checksums |
d4a3cdbad945c667f4087fcf437a341e1d1cbc971758c3243e6589b375acb2fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | scirs-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
299aff47ab9844f2eeeda9a95ac68825157f7845e6b67187ae49d0bbcc1ebe05
|
|
BLAKE2b-256 checksum How to use checksums |
83d1aeeaa72309bc0450ef5ebeef05215d715c3a3267c4608e12cca537897efc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | scirs-0.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
34b80b09ac87dfcf742a5a465f42790ef2da7282abc1acb2f46925d919fb8613
|
|
BLAKE2b-256 checksum How to use checksums |
5c66c205551881caaae307d473df50de33704a75a2774c5fdcac53cbde892789
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / scirs-0.1.5-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | scirs-0.1.5-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
afe2dd3a578c9e219942359d33e93e7edd1d02622bdb630fe859452d3eae8cd5
|
|
BLAKE2b-256 checksum How to use checksums |
6a182d4642dff52534e2804c904df601a11ba0b84ad179924e6156f0a2a010be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for scirs 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.