Skip to main content

Extension aimed at improving the performance of the Python runtime

Project description

CinderX

PyPI - Version

The CinderX logo, which is a lowercase "cinderx" with the dot in the i as a small flame, and a stylized orange x

CinderX is a Python extension that improves the performance of the Python runtime.

Status

CinderX is under active development. It is used in production at Meta for use-cases like the Instagram Django service. It is experimental for external users. New releases are published to PyPI on a weekly basis.

Features

  • JIT Compiler - Just-in-time compilation of Python bytecode to native machine code
  • Static Python - A stricter form/subset of Python, for type safety and optimization

The codebase includes other features as well, such as a parallel garbage collector and a lighter weight implementation of Python interpreter frames. However these features are not compatible with the stock CPython runtime yet.

Requirements

  • Python 3.14
  • Linux (x86_64, aarch64)
  • GCC 13+ or Clang 18+

The extension should build and import on macOS and Windows but most features will be disabled at runtime.

Installation

pip install cinderx

Using the JIT

The recommended way to start using the JIT is to do:

import cinderx.jit

cinderx.jit.auto()

This will configure the CinderX extension to automatically compile Python functions to machine code. It will track what functions are called frequently and compile the hottest ones automatically.

For more control over this process, you can pass the call count threshold to use for compilation instead of using auto():

import cinderx.jit

# Compile functions after they are called 10 times.
cinderx.jit.compile_after_n_calls(10)

If you want to compile individual functions, you can do so manually:

import cinderx.jit

def foo(): ...
def bar(): ...

# Compile `foo` immediately.
cinderx.jit.force_compile(foo)

# Compile `bar` the next time it is called.
cinderx.jit.lazy_compile(bar)

CinderX vs Cinder

Cinder was a fork of the CPython runtime developed at Meta. It included runtime optimizations (e.g. JIT) and was specifically targeted at the Instagram Django codebase. For Python 3.10, Meta decided to turn it into a Python extension to improve compatibility with newer Python versions. This extension is now known as CinderX ("the X" is for "extension").

Historically, for Python versions 3.10 through 3.12, CinderX depended on patches to Meta's fork of the Python runtime. Python 3.14 is the first version of stock CPython that CinderX supports.

License

CinderX is MIT licensed, see the LICENSE file.

Terms of Use

https://opensource.fb.com/legal/terms

Privacy Policy

https://opensource.fb.com/legal/privacy


Copyright © 2025 Meta Platforms, Inc.

Project details


Download files

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

Source Distribution

cinderx-2026.5.4.0.tar.gz (2.5 MB view details)

Uploaded Source

Built Distributions

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

cinderx-2026.5.4.0-cp314-cp314-musllinux_1_2_x86_64.whl (34.0 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cinderx-2026.5.4.0-cp314-cp314-musllinux_1_2_aarch64.whl (33.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

cinderx-2026.5.4.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (33.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

cinderx-2026.5.4.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (33.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file cinderx-2026.5.4.0.tar.gz.

File metadata

  • Download URL: cinderx-2026.5.4.0.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cinderx-2026.5.4.0.tar.gz
Algorithm Hash digest
SHA256 a0a5fba82e9cc09837df61bf080fc5cf4fa3074597dd0c4a8229f005aae4cf7d
MD5 5fa2b81c287897bce7b9ad9f23abac5a
BLAKE2b-256 73007ba7daf639e5ec56183f31eba4ec3b1b495d3a6d1da8739969e997b0149f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.5.4.0.tar.gz:

Publisher: publish.yml on facebookincubator/cinderx

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

File details

Details for the file cinderx-2026.5.4.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cinderx-2026.5.4.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 65f89971d21a02081b5e968ed04f8a665aa72e76137774fd05ace19269a25b02
MD5 0ceb836ac4a72122cbf7fac54fb905a1
BLAKE2b-256 f3838a1222f64d5c7ca1a74f97778c4785af7ce30dcdbfdc1008a797ce21ef47

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.5.4.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on facebookincubator/cinderx

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

File details

Details for the file cinderx-2026.5.4.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cinderx-2026.5.4.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5d9ff0c282c865518b6649b6d30f7efc65771f22e1aaeaac1d2ca2a960517ed5
MD5 d2f56ed438a278cc92dd4c55b00b6dc8
BLAKE2b-256 6db5c863efe9312bf48e87306d921043eb75a7690e0c30a0ddbf0b5e5ca9b3be

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.5.4.0-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on facebookincubator/cinderx

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

File details

Details for the file cinderx-2026.5.4.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cinderx-2026.5.4.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 964ba2814220105f53c167fdb61f597c444a07a23c0f0e84f62664d0c487932d
MD5 9e0971a815545b02b97e5a850aa3a70a
BLAKE2b-256 51b317a58ba7265c9f90fe1ecedcd359fcbe7add836fb2fe5b07d4c6fe8f83e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.5.4.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on facebookincubator/cinderx

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

File details

Details for the file cinderx-2026.5.4.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cinderx-2026.5.4.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b9de5ca884b8594b0dd41afb6b6749eeed2f00727b69760db0afdcccdcbfedf8
MD5 4231bda4d5eb06836a50690340a6682b
BLAKE2b-256 80f703d42285c9456861d0510e3a44c70bd10c5904ba2d2c0196e3c64343dfd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.5.4.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on facebookincubator/cinderx

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

Supported by

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