# maxsim-cpu
`maxsim-cpu` is a high-performance CPU implementation of MaxSim scoring for late-interaction (ColBERT, ColPali) workflows.
It is a python library written in Rust and powered by `libsxmm` on x86 CPUs and Apple Accelerate on ARM macs. It only supports Linux x86 machines and ARM Macs at the moment.
`maxsim-cpu` is built to run exclusively on CPU, and achieves speed-ups that scale with core count on the scoring machine. It's designed to be used in situations where index/scoring machines do not have access to GPUs, and achieves ~2-3x speed-ups on ARM macs and 5x speedups on Linux CPUs over common PyTorch maxsim implementations.
It also implements effective just-in-time batching and padding for variable documents, greatly reducing padding overhead and needless computations.
## Getting Started
Pre-built wheels are available on Pypi for Python 3.9 through 3.13 and can be installed in the usual way:
```bash
uv pip install maxsim-cpu # You may use vanilla pip install but why would you? If you're sophisticated, you could use `uv add` too!
```
Once installed, the simple API exposes two methods. For uniform-length inputs, you may use:
```python
import numpy as np
import maxsim_cpu
# Prepare normalized embeddings
query = np.random.randn(32, 128).astype(np.float32) # [num_query_tokens, dim]
# NOTE: maxsim-cpu expects normalized vectors.
query /= np.linalg.norm(query, axis=1, keepdims=True)
docs = np.random.randn(1000, 512, 128).astype(np.float32) # [num_docs, doc_len, dim]
# Normalize document embeddings...
# Compute MaxSim scores
scores = maxsim_cpu.maxsim_scores(query, docs) # Returns [num_docs] scores
```
For variable length inputs, you should use the alternate `maxsim_scores_variable`:
```python
import numpy as np
import maxsim_cpu
# Prepare normalized embeddings
query = np.random.randn(32, 128).astype(np.float32) # [num_query_tokens, dim]
# NOTE: maxsim-cpu expects normalized vectors.
query /= np.linalg.norm(query, axis=1, keepdims=True)
# Create variable-length documents as a list
docs = [
np.random.randn(np.random.randint(50, 800), 128).astype(np.float32) # Variable length docs
for _ in range(1000)
]
# Normalize document embeddings...
# Compute MaxSim scores
scores = maxsim_cpu.maxsim_scores_variable(query, docs) # Returns [num_docs] scores
```
## Platform Requirements
- **macOS ARM**: Apple Silicon (M1+)
- **macOS Intel**: x86_64 with AVX2 (Intel Haswell 2013+ - Core i3/i5/i7 4xxx series or newer)
- **Linux**: x86_64 with AVX2 (Intel Haswell 2013+, AMD Excavator 2015+)
We currently do not support Windows or take advantage of AVX512 instructions, nor do we optimise caching for specific CPUs. Contributions/PRs in this direction are welcome!
**Note**: Pre-built wheels on PyPI are currently only available for Linux x86_64 and macOS ARM (Apple Silicon). For Intel Mac users, you'll need to build from source (see below).
## Building
We use `maturin` as our build system.
#### Linux
The easy way to build `maxsim-cpu` from source on Linux is as follows:
```bash
# Install necessary system deps
apt-get install libssl-dev libopenblas-dev -y
apt-get install pkg-config -y
# Install tooling
uv pip install maturin patchelf numpy
# Install libxsmm
git@github.com:libxsmm/libxsmm.git && cd libxsmm && make STATIC=1 && make
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install maxsim-cpu
git clone git@github.com:mixedbread-ai/maxsim-cpu.git
cd maxsim-cpu
RUSTFLAGS="-L native=$(pwd)/../libxsmm/lib" maturin build --release --features use-libxsmm
```
Step by step:
- This installs OpenSSL and OpenBLAS, which will be required for compiling, as well as pkg-config so they can be found easily.
- It then clones `libxsmm`, on which most of the performance depends, and installs it.
- Installs RUST and enables its environment
- Clones this repository and finally build it
You may modify it and remove any step depending on dependencies already present on your machine.
#### Mac
On Mac, the installation is simplified, assuming you use homebrew:
**For Apple Silicon (M1+):**
```bash
# Install maturin
uv pip install maturin
# Install patchelf
brew install patchelf
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install maxsim-cpu
git clone git@github.com:mixedbread-ai/maxsim-cpu.git
cd maxsim-cpu
maturin build --release
```
**For Intel Mac (x86_64):**
```bash
# Install maturin
uv pip install maturin
# Install patchelf
brew install patchelf
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install maxsim-cpu
git clone git@github.com:mixedbread-ai/maxsim-cpu.git
cd maxsim-cpu
# Build with AVX2 support (requires Intel Haswell 2013+ or newer)
RUSTFLAGS="-C target-cpu=haswell" maturin build --release
```
## Performance
For documents of uniform lengths, performance on Linux is slower than Jax on 4 core machines and either somewhat faster or slower depending on the CPU at 8 cores, and always faster than alternatives on ARM Macs. For variable document lengths (evaluated as a uniform distribution between 128 and 1536 tokens), `maxsim-cpu` is always pretty fast thanks to more efficient batching.
### Mac M4 Ultra

### Linux AMD EPYC
#### 32 core limit performance

#### 16 core limit performance
*It seems our performance was hindered during benchmarking due to a Rayon config issue when limiting the available cores. Leaving reporting as-is for now but performance is expected to be considerably better on an actual 16-core CPU.*

Raw data
{
"_id": null,
"home_page": null,
"name": "maxsim-fast",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "maxsim, similarity, ranking, cpu, simd, performance",
"author": "Benjamin Clavi\u00e9, Mixedbread Team",
"author_email": null,
"download_url": null,
"platform": null,
"description": "# maxsim-cpu\n\n`maxsim-cpu` is a high-performance CPU implementation of MaxSim scoring for late-interaction (ColBERT, ColPali) workflows.\n\nIt is a python library written in Rust and powered by `libsxmm` on x86 CPUs and Apple Accelerate on ARM macs. It only supports Linux x86 machines and ARM Macs at the moment.\n\n`maxsim-cpu` is built to run exclusively on CPU, and achieves speed-ups that scale with core count on the scoring machine. It's designed to be used in situations where index/scoring machines do not have access to GPUs, and achieves ~2-3x speed-ups on ARM macs and 5x speedups on Linux CPUs over common PyTorch maxsim implementations.\n\nIt also implements effective just-in-time batching and padding for variable documents, greatly reducing padding overhead and needless computations.\n\n## Getting Started\n\nPre-built wheels are available on Pypi for Python 3.9 through 3.13 and can be installed in the usual way:\n\n```bash\nuv pip install maxsim-cpu # You may use vanilla pip install but why would you? If you're sophisticated, you could use `uv add` too!\n```\n\nOnce installed, the simple API exposes two methods. For uniform-length inputs, you may use:\n\n```python\nimport numpy as np\nimport maxsim_cpu\n\n# Prepare normalized embeddings\nquery = np.random.randn(32, 128).astype(np.float32) # [num_query_tokens, dim]\n\n# NOTE: maxsim-cpu expects normalized vectors.\nquery /= np.linalg.norm(query, axis=1, keepdims=True)\n\ndocs = np.random.randn(1000, 512, 128).astype(np.float32) # [num_docs, doc_len, dim]\n# Normalize document embeddings...\n\n# Compute MaxSim scores\nscores = maxsim_cpu.maxsim_scores(query, docs) # Returns [num_docs] scores\n```\n\nFor variable length inputs, you should use the alternate `maxsim_scores_variable`:\n\n```python\nimport numpy as np\nimport maxsim_cpu\n\n# Prepare normalized embeddings\nquery = np.random.randn(32, 128).astype(np.float32) # [num_query_tokens, dim]\n\n# NOTE: maxsim-cpu expects normalized vectors.\nquery /= np.linalg.norm(query, axis=1, keepdims=True)\n\n# Create variable-length documents as a list\ndocs = [\n np.random.randn(np.random.randint(50, 800), 128).astype(np.float32) # Variable length docs\n for _ in range(1000)\n]\n# Normalize document embeddings...\n\n# Compute MaxSim scores\nscores = maxsim_cpu.maxsim_scores_variable(query, docs) # Returns [num_docs] scores\n```\n\n## Platform Requirements\n\n- **macOS ARM**: Apple Silicon (M1+)\n- **macOS Intel**: x86_64 with AVX2 (Intel Haswell 2013+ - Core i3/i5/i7 4xxx series or newer)\n- **Linux**: x86_64 with AVX2 (Intel Haswell 2013+, AMD Excavator 2015+)\n\nWe currently do not support Windows or take advantage of AVX512 instructions, nor do we optimise caching for specific CPUs. Contributions/PRs in this direction are welcome!\n\n**Note**: Pre-built wheels on PyPI are currently only available for Linux x86_64 and macOS ARM (Apple Silicon). For Intel Mac users, you'll need to build from source (see below).\n\n## Building\n\nWe use `maturin` as our build system. \n\n#### Linux\n\nThe easy way to build `maxsim-cpu` from source on Linux is as follows:\n\n```bash\n# Install necessary system deps\napt-get install libssl-dev libopenblas-dev -y\napt-get install pkg-config -y\n# Install tooling\nuv pip install maturin patchelf numpy\n# Install libxsmm\ngit@github.com:libxsmm/libxsmm.git && cd libxsmm && make STATIC=1 && make\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install maxsim-cpu\ngit clone git@github.com:mixedbread-ai/maxsim-cpu.git\ncd maxsim-cpu\nRUSTFLAGS=\"-L native=$(pwd)/../libxsmm/lib\" maturin build --release --features use-libxsmm\n```\n\nStep by step:\n- This installs OpenSSL and OpenBLAS, which will be required for compiling, as well as pkg-config so they can be found easily.\n- It then clones `libxsmm`, on which most of the performance depends, and installs it.\n- Installs RUST and enables its environment\n- Clones this repository and finally build it\n\nYou may modify it and remove any step depending on dependencies already present on your machine.\n\n#### Mac\n\nOn Mac, the installation is simplified, assuming you use homebrew:\n\n**For Apple Silicon (M1+):**\n```bash\n# Install maturin\nuv pip install maturin\n# Install patchelf\nbrew install patchelf\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install maxsim-cpu\ngit clone git@github.com:mixedbread-ai/maxsim-cpu.git\ncd maxsim-cpu\nmaturin build --release\n```\n\n**For Intel Mac (x86_64):**\n```bash\n# Install maturin\nuv pip install maturin\n# Install patchelf\nbrew install patchelf\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install maxsim-cpu\ngit clone git@github.com:mixedbread-ai/maxsim-cpu.git\ncd maxsim-cpu\n# Build with AVX2 support (requires Intel Haswell 2013+ or newer)\nRUSTFLAGS=\"-C target-cpu=haswell\" maturin build --release\n```\n\n## Performance\n\nFor documents of uniform lengths, performance on Linux is slower than Jax on 4 core machines and either somewhat faster or slower depending on the CPU at 8 cores, and always faster than alternatives on ARM Macs. For variable document lengths (evaluated as a uniform distribution between 128 and 1536 tokens), `maxsim-cpu` is always pretty fast thanks to more efficient batching.\n\n### Mac M4 Ultra\n\n\n\n\n### Linux AMD EPYC\n\n#### 32 core limit performance\n\n\n\n#### 16 core limit performance\n\n*It seems our performance was hindered during benchmarking due to a Rayon config issue when limiting the available cores. Leaving reporting as-is for now but performance is expected to be considerably better on an actual 16-core CPU.*\n\n\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Fast CPU implementation of MaxSim scoring",
"version": "0.1.1",
"project_urls": {
"Bug Tracker": "https://github.com/zhuwenxing/maxsim-cpu/issues",
"Homepage": "https://github.com/zhuwenxing/maxsim-cpu"
},
"split_keywords": [
"maxsim",
" similarity",
" ranking",
" cpu",
" simd",
" performance"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "591fe79e1c710a3d35b6ddd0c3702d0096e933b69708d68060fa66790ffdb23a",
"md5": "a50c8a496b2761cab354ebb77162fe5c",
"sha256": "bdbb80e5fa6e7e48ea53b406256cb1d8d2d9355649fd0299019e82e52db0c90f"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "a50c8a496b2761cab354ebb77162fe5c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 232711,
"upload_time": "2025-11-04T06:23:48",
"upload_time_iso_8601": "2025-11-04T06:23:48.962088Z",
"url": "https://files.pythonhosted.org/packages/59/1f/e79e1c710a3d35b6ddd0c3702d0096e933b69708d68060fa66790ffdb23a/maxsim_fast-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "567b5fe69f56b6940035db915ce0b4a78c4e7e59a9b427d8b1724bb49dcba6a2",
"md5": "3dd3bf721ad2f32f7a9112713810137f",
"sha256": "13e7df8aca971c8ce225600b6bf79e3b775a3faa1c2aac06c08f01830be1e7c9"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3dd3bf721ad2f32f7a9112713810137f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 215360,
"upload_time": "2025-11-04T06:23:50",
"upload_time_iso_8601": "2025-11-04T06:23:50.316354Z",
"url": "https://files.pythonhosted.org/packages/56/7b/5fe69f56b6940035db915ce0b4a78c4e7e59a9b427d8b1724bb49dcba6a2/maxsim_fast-0.1.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fd8a4f6c5088ece15945900f9c436f63895d3097b7cc246ba00edbfab94b5635",
"md5": "03fd141bb5d5d1889e751228713240a6",
"sha256": "d44c80d3a79971209796a85db0947cd7660cc62b81bc2e53a071f00fd1dc5454"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp310-cp310-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "03fd141bb5d5d1889e751228713240a6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1022329,
"upload_time": "2025-11-04T06:23:51",
"upload_time_iso_8601": "2025-11-04T06:23:51.657014Z",
"url": "https://files.pythonhosted.org/packages/fd/8a/4f6c5088ece15945900f9c436f63895d3097b7cc246ba00edbfab94b5635/maxsim_fast-0.1.1-cp310-cp310-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6dedfaf3ccc32d80e6ef7e47b86002b112a9d83ce0f5f68daf76401363c129f4",
"md5": "d9d2dde52ba0a75b47b0efe3dce0cd3d",
"sha256": "1f9e5251e46c1d75dba1174bbdd7f2e380e7ef1e8c0ccab34b817677be4f43da"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "d9d2dde52ba0a75b47b0efe3dce0cd3d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 232710,
"upload_time": "2025-11-04T06:23:52",
"upload_time_iso_8601": "2025-11-04T06:23:52.732396Z",
"url": "https://files.pythonhosted.org/packages/6d/ed/faf3ccc32d80e6ef7e47b86002b112a9d83ce0f5f68daf76401363c129f4/maxsim_fast-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b8852d393c3a09e074d9f3ecfce20fd043d950d2ccdee9323cce4dc3af3e54e9",
"md5": "7b5cd100b3c170a1b387168443163468",
"sha256": "869118712b13c59bd1a65acb119c459b91003ade101b7a4828c46632f32edeaa"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "7b5cd100b3c170a1b387168443163468",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 215359,
"upload_time": "2025-11-04T06:23:53",
"upload_time_iso_8601": "2025-11-04T06:23:53.746685Z",
"url": "https://files.pythonhosted.org/packages/b8/85/2d393c3a09e074d9f3ecfce20fd043d950d2ccdee9323cce4dc3af3e54e9/maxsim_fast-0.1.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "96f673dc23ba199c0fe7ba4d473d8074b9252c083da39f0cfbd16e7db8726c5d",
"md5": "987063e66a8ec513f652975044acabde",
"sha256": "bc655ed5f9a4b94f17706f0342e0f90f904ff19ebba1458a5c1e14eae935edbd"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp311-cp311-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "987063e66a8ec513f652975044acabde",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1022328,
"upload_time": "2025-11-04T06:23:55",
"upload_time_iso_8601": "2025-11-04T06:23:55.124817Z",
"url": "https://files.pythonhosted.org/packages/96/f6/73dc23ba199c0fe7ba4d473d8074b9252c083da39f0cfbd16e7db8726c5d/maxsim_fast-0.1.1-cp311-cp311-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a7ccb5ccd58ca8639ddf999f4c90920b83774abf673dcb8d29f90ec8e0344c6a",
"md5": "a04116f1db73695399a69b30537b4e9c",
"sha256": "d5ef4d3efbc8bbe8cd9be9996651196cae5bd8e51593cd923bca59f5d0e8814c"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "a04116f1db73695399a69b30537b4e9c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 232708,
"upload_time": "2025-11-04T06:23:56",
"upload_time_iso_8601": "2025-11-04T06:23:56.156446Z",
"url": "https://files.pythonhosted.org/packages/a7/cc/b5ccd58ca8639ddf999f4c90920b83774abf673dcb8d29f90ec8e0344c6a/maxsim_fast-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "00ac2e56c0edfc51eea5e78e0d751bfda569ca5021db7a8cc10a4948f2192e4d",
"md5": "c68e4c43716804659941d9b1062852b0",
"sha256": "f79a2c56a5f9db204ba523ae0736221c994d9ecc84e19cc4b6af1c6a8c9915d9"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c68e4c43716804659941d9b1062852b0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 215357,
"upload_time": "2025-11-04T06:23:57",
"upload_time_iso_8601": "2025-11-04T06:23:57.455835Z",
"url": "https://files.pythonhosted.org/packages/00/ac/2e56c0edfc51eea5e78e0d751bfda569ca5021db7a8cc10a4948f2192e4d/maxsim_fast-0.1.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ffb3994ce478532e64a161bc74dcf576d2ecf864d246dc2b27c8f98a9fc3da41",
"md5": "1429c742db4c876f49274893d407a3c9",
"sha256": "24ad6be4711cb1b78816948ffcdc5a9c8916702ce0d131dae1178a92ab80fc0d"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "1429c742db4c876f49274893d407a3c9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1022329,
"upload_time": "2025-11-04T06:23:58",
"upload_time_iso_8601": "2025-11-04T06:23:58.492930Z",
"url": "https://files.pythonhosted.org/packages/ff/b3/994ce478532e64a161bc74dcf576d2ecf864d246dc2b27c8f98a9fc3da41/maxsim_fast-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "de7b13cb8fbac51f128bc51a51f8139f905d760615719f0fed957dde25d7b8bf",
"md5": "0c9f16290b6de5b24ec096795aa187f4",
"sha256": "a765d936ddca732effbd6ba0ba306735d947ae746e406e5bbe5d74d8a79a2e88"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "0c9f16290b6de5b24ec096795aa187f4",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 232709,
"upload_time": "2025-11-04T06:23:59",
"upload_time_iso_8601": "2025-11-04T06:23:59.847315Z",
"url": "https://files.pythonhosted.org/packages/de/7b/13cb8fbac51f128bc51a51f8139f905d760615719f0fed957dde25d7b8bf/maxsim_fast-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f69fa4587ed5a8e41adcc7cae8918a913f4a3e86d94a862f04ffc6d900ef29a3",
"md5": "53415df1da111a6a4550065a1a39d387",
"sha256": "179583b4263895488b79685765963d0f8c2d6bc4902e5e0146bf0fae40cbd8ad"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "53415df1da111a6a4550065a1a39d387",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 215360,
"upload_time": "2025-11-04T06:24:01",
"upload_time_iso_8601": "2025-11-04T06:24:01.137686Z",
"url": "https://files.pythonhosted.org/packages/f6/9f/a4587ed5a8e41adcc7cae8918a913f4a3e86d94a862f04ffc6d900ef29a3/maxsim_fast-0.1.1-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6aede041b5790cebba039aa3e66f0583e7d25a63d4790cb77b7a52d75d42e0a2",
"md5": "00810f1b83071b1f7bb535d32838dd6a",
"sha256": "cabe11c6a6ca5907b4aa33e144770734aab9a0684ce81b036e09687d7d22e094"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "00810f1b83071b1f7bb535d32838dd6a",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1022328,
"upload_time": "2025-11-04T06:24:02",
"upload_time_iso_8601": "2025-11-04T06:24:02.177041Z",
"url": "https://files.pythonhosted.org/packages/6a/ed/e041b5790cebba039aa3e66f0583e7d25a63d4790cb77b7a52d75d42e0a2/maxsim_fast-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "81158ba824c4afc255f27b802a66ae3b73c6e6fc4ec4fbcff2f1d9f8783bb53c",
"md5": "7e8ac8293c5b6257d9e42fcbbd12806d",
"sha256": "6086612779c414d2f1f2391163f207e7e9ffd666fde8a74f6d10e5b325069581"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "7e8ac8293c5b6257d9e42fcbbd12806d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 233005,
"upload_time": "2025-11-04T06:24:03",
"upload_time_iso_8601": "2025-11-04T06:24:03.289934Z",
"url": "https://files.pythonhosted.org/packages/81/15/8ba824c4afc255f27b802a66ae3b73c6e6fc4ec4fbcff2f1d9f8783bb53c/maxsim_fast-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3fb6ca4baa7a54dac8a1300e9be5d1a7d07600ee5e265d15765915b4c3a11dcb",
"md5": "e47dceff8fa31e834f6520d47d1595d8",
"sha256": "990d89db4905443f93f6ee0f80227801bffc7b891c42e5ff8707024bdc4287b0"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "e47dceff8fa31e834f6520d47d1595d8",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 215538,
"upload_time": "2025-11-04T06:24:04",
"upload_time_iso_8601": "2025-11-04T06:24:04.571394Z",
"url": "https://files.pythonhosted.org/packages/3f/b6/ca4baa7a54dac8a1300e9be5d1a7d07600ee5e265d15765915b4c3a11dcb/maxsim_fast-0.1.1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "30acdfb743214c7554298b673691b568e90d842ab572623813bc530ee40f7936",
"md5": "c1bc0260f5c9d5f94f4f4cf17d24ce96",
"sha256": "8d606a23d49421b960fe141532f9053c899f95c9dd1be660cd5dd81495a8890c"
},
"downloads": -1,
"filename": "maxsim_fast-0.1.1-cp39-cp39-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "c1bc0260f5c9d5f94f4f4cf17d24ce96",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1022604,
"upload_time": "2025-11-04T06:24:05",
"upload_time_iso_8601": "2025-11-04T06:24:05.878995Z",
"url": "https://files.pythonhosted.org/packages/30/ac/dfb743214c7554298b673691b568e90d842ab572623813bc530ee40f7936/maxsim_fast-0.1.1-cp39-cp39-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-04 06:23:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zhuwenxing",
"github_project": "maxsim-cpu",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "maxsim-fast"
}