Skip to main content

zk_dtypes

CI

zk_dtypes is a stand-alone implementation of several NumPy dtype extensions used in Zero Knowledge libraries inspired by ml_dtypes, including:

  • Narrow integer:

    • int2
    • int4
    • uint2
    • uint4
  • Prime Field:

    • babybear
    • babybear_mont
    • goldilocks
    • goldilocks_mont
    • koalabear
    • koalabear_mont
    • mersenne31
  • Extension Field:

    • babybearx4
    • babybearx4_mont
    • goldilocksx3
    • goldilocksx3_mont
    • koalabearx4
    • koalabearx4_mont
    • mersenne31x2
  • Binary field:

    • binary_field_t0
    • binary_field_t1
    • binary_field_t2
    • binary_field_t3
    • binary_field_t4
    • binary_field_t5
    • binary_field_t6
    • binary_field_t7
  • Elliptic curve:

    • bn254_sf
    • bn254_sf_mont
    • bn254_g1_affine
    • bn254_g1_affine_mont
    • bn254_g1_jacobian
    • bn254_g1_jacobian_mont
    • bn254_g1_xyzz
    • bn254_g1_xyzz_mont
    • bn254_g2_affine
    • bn254_g2_affine_mont
    • bn254_g2_jacobian
    • bn254_g2_jacobian_mont
    • bn254_g2_xyzz
    • bn254_g2_xyzz_mont

Prerequisite

  1. Follow the bazel installation guide.

Build instructions

  1. Clone the zk_dtypes repo

    git clone https://github.com/fractalyze/zk_dtypes
    
  2. Build zk_dtypes

    bazel build //...
    
  3. Test zk_dtypes

    bazel test //...
    

Installation

The zk_dtypes package is tested with Python versions 3.11-3.13, and can be installed with the following command:

pip install zk_dtypes

To test your installation, you can run the following:

pip install absl-py pytest
pytest zk_dtypes/tests

Installation from source

To build and install the package from source, run:

pip install .

Installation from prebuilt binary

Use USE_BAZEL_OUTPUT=1 for a faster installation that uses pre-built Bazel artifacts. This is the recommended path for development.

  • On Linux / macOS

    # Build the shared library (.so)
    bazel build //zk_dtypes:_zk_dtypes_ext.so
    
    # Install using the Bazel output
    USE_BAZEL_OUTPUT=1 pip install .
    
  • On Windows

    # Build the Python extension (.pyd)
    bazel build //zk_dtypes:_zk_dtypes_ext.pyd
    
    # Install using the Bazel output (PowerShell syntax)
    $env:USE_BAZEL_OUTPUT=1; pip install .
    

Example Usage

>>> from zk_dtypes import babybear_mont
>>> import numpy as np
>>> a = np.array([-1, -3, 2**30, 7], dtype=babybear_mont)
>>> b = np.array([5, 2, 4, 10], dtype=babybear_mont)
>>> a + b
array([4, 2013265920, 1073741828, 17], dtype=babybear_mont)

Importing zk_dtypes also registers the data types with numpy, so that they may be referred to by their string name:

>>> np.dtype('babybear_mont')
dtype(babybear_mont)

See examples/zk_dtypes_examples.ipynb for more examples.

Benchmarks

Benchmarks are disabled by default (though CI verifies their validity). To execute a specific benchmark (e.g., field_mul_benchmark), run the following command manually:

bazel run -c opt //zk_dtypes:field_mul_benchmark

License

The zk_dtypes source code is a modified derivative of the ml_dtypes project and inherits the original Apache 2.0 License (see LICENSE). All subsequent modifications comply with and are released under the same license.

Pre-compiled Wheels Dependencies

Note that pre-compiled wheels utilize the following dependencies:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

zk_dtypes-0.0.15-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zk_dtypes-0.0.15-cp313-cp313-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

zk_dtypes-0.0.15-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zk_dtypes-0.0.15-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

zk_dtypes-0.0.15-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zk_dtypes-0.0.15-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file zk_dtypes-0.0.15-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zk_dtypes-0.0.15-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 206d36f2f6423fcdc7be12a6c5890a2f3458ed58eb527f3851aab65630c4292b
MD5 a1fc7083b79db4efb37e92903de127c0
BLAKE2b-256 5b3a580b6a0280475359b32d6e776b4e679cb58f63033d9668496995e0427160

See more details on using hashes here.

Provenance

The following attestation bundles were made for zk_dtypes-0.0.15-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on fractalyze/zk_dtypes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zk_dtypes-0.0.15-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zk_dtypes-0.0.15-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 079cea466d6157044d4f0d6641804bfb253edf2a41a87e32ccd5a5ce1c463362
MD5 ca335b6c21bafe628719705ae101c74b
BLAKE2b-256 4adbaa0017c441dde45d0c7ee31ed65331e847e1355b474c2b9f3d10e6017831

See more details on using hashes here.

Provenance

The following attestation bundles were made for zk_dtypes-0.0.15-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on fractalyze/zk_dtypes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zk_dtypes-0.0.15-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zk_dtypes-0.0.15-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab67a2e8d652974a46c00437297070152181f9f39f81065be6dc23d7dc3459a2
MD5 90c72d6df29a7689aa149df9cc9ad53d
BLAKE2b-256 8fb39f08326ff0dd62a3abcd05f304c085a8759811c81f93ac9454bb42a78798

See more details on using hashes here.

Provenance

The following attestation bundles were made for zk_dtypes-0.0.15-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on fractalyze/zk_dtypes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zk_dtypes-0.0.15-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zk_dtypes-0.0.15-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09e6281b2629d6356942d619ac22e534f18d0fb515c68a4ab97309991085755f
MD5 dfc29e6bbcfe008348e0961a99f847fc
BLAKE2b-256 35224c677c9dbdee43ad27ba6850bcf52f90311b047c2561e77f52c9c06fb6b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for zk_dtypes-0.0.15-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on fractalyze/zk_dtypes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zk_dtypes-0.0.15-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zk_dtypes-0.0.15-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3c48004c4ad981a339cba8b5be6cbb5441f1c081794fc403de485f16cc4700b9
MD5 c57e6c34afaddce98e8bbd8f03146c73
BLAKE2b-256 2ece0bd3c7ceada3862aac9cb848859d7db9c4802498013108fabba95b5b5e46

See more details on using hashes here.

Provenance

The following attestation bundles were made for zk_dtypes-0.0.15-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on fractalyze/zk_dtypes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zk_dtypes-0.0.15-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zk_dtypes-0.0.15-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6677c29f3edd33fbba321a5c64f60e5dad4f73c43f6f879220d9d8948a701a3
MD5 fa5b7418aa1ba3b57bafa987fca3a54f
BLAKE2b-256 57736750713146e44bf0ba4571ec8c0f08343415f9ac6284ed558c9e4594d645

See more details on using hashes here.

Provenance

The following attestation bundles were made for zk_dtypes-0.0.15-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on fractalyze/zk_dtypes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.0.17

6 files

0.0.16

6 files

This release

0.0.15 This release

6 files

0.0.14

6 files

0.0.12

6 files

0.0.11

6 files

0.0.10

3 files

0.0.9

3 files

0.0.8

3 files

0.0.7

3 files

0.0.6

3 files

0.0.5

9 files

0.0.4

9 files

0.0.3

14 files

0.0.2

11 files

0.0.1

14 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page