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)
  • GCC 13+ or Clang 18+

The extension should build and import on macOS but most features will be disabled at runtime. Windows is not yet supported at all.

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").

For Python versions 3.10 through 3.12, CinderX still depends 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.4.16.0.tar.gz (2.6 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.4.16.0-cp314-cp314-musllinux_1_2_x86_64.whl (33.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cinderx-2026.4.16.0-cp314-cp314-musllinux_1_2_aarch64.whl (33.6 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

cinderx-2026.4.16.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (33.7 MB view details)

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

cinderx-2026.4.16.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (33.4 MB view details)

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

File details

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

File metadata

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

File hashes

Hashes for cinderx-2026.4.16.0.tar.gz
Algorithm Hash digest
SHA256 73dca5ca30c6d8f8290e8125b7c6b734285b97a14830f6ff973b81a0bc62e682
MD5 3330a5b4cf5b7c2c46d37015a65c6efc
BLAKE2b-256 35d61a5ed4b4ba7e259cfcb02a278569217ce1d91d0bc7694b1921399ed902dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.4.16.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.4.16.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cinderx-2026.4.16.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f84c5fcdad970ab9545567b686a06e9d53655f837f2d6a858ba13402f6c5e15c
MD5 16e5f03f28ba142011a069188bdabc62
BLAKE2b-256 6fabcbc55f48fded034ebce7a8329ee496e688bdc764dfce130e35e11088c3b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.4.16.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.4.16.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for cinderx-2026.4.16.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 da0be7fe768435a0f93042646d821caecb460c60724e638b5e5c3dee6cd0e76a
MD5 543690a8536145a5c11134ff5c249343
BLAKE2b-256 70a18eeeabe3f31e78f57450cd8c308d07ee6d8c76b342f9da8fe1a91b60bd23

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.4.16.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.4.16.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cinderx-2026.4.16.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50a6b1966d391856e5ab067300efc5034624af5bbf84763651f7872dc3bbd9ff
MD5 6f9370da24ee91028cfdc01c73137bac
BLAKE2b-256 73e55bde6451a1c592d2c0a21eb8ce9143285f401e0d70436dd463bcb352ee15

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.4.16.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.4.16.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cinderx-2026.4.16.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bc3eada4ec0e5644c5aabf5c89c968281aa7640346ab5cc1a8167e4bcdc2f200
MD5 6e44fb96b6a29d9c488d4aa044792fe8
BLAKE2b-256 46399f14872cff16606c8cbe73f43f3c5d63d1376486d69d2d747948243fa91b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cinderx-2026.4.16.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