cppdjango
cppdjango is an independent C++ port of Django 6.0.7. It keeps Django’s familiar django import namespace and public APIs while moving selected ORM, request-processing, template, URL, parsing, and utility paths into a C++26 extension. Unsupported values and query shapes conservatively replay through the compatible Python implementation.
The current PostgreSQL benchmark measures 81.4% less framework-side ORM CPU, or 436% faster ORM-only CPU performance, across an equal-weight point-select, ordered IN select, and point-update suite. PostgreSQL and the shared cursor/psycopg floor are excluded from that claim. Raw measurements and the methodology are published at https://django.goblinreactor.com/artifacts/.
Install
Use a fresh virtual environment. The PyPI distribution is named cppdjango, but the Python package remains django:
python3 -m venv .venv . .venv/bin/activate python -m pip install --upgrade pip python -m pip install cppdjango==6.0.7.post1
cppdjango replaces upstream Django. Do not install the Django and cppdjango distributions in the same environment because both own the django import namespace. When converting an existing environment, remove upstream Django first:
python -m pip uninstall -y Django python -m pip install cppdjango==6.0.7.post1
The package contains native code. If no compatible wheel is available, pip builds it from source and needs:
Python 3.12 or newer;
CMake 3.26 or newer and Ninja or Make;
a C++ compiler with the C++26 features used by cppdjango;
OpenSSL and zlib development headers and libraries.
For example, on macOS with Homebrew:
brew install cmake ninja openssl@3 CMAKE_PREFIX_PATH="$(brew --prefix openssl@3)" \ python -m pip install cppdjango==6.0.7.post1
On a Debian-family Linux system, install CMake, Ninja, OpenSSL and zlib development packages plus a recent compiler. Package names vary by release; one typical setup is:
sudo apt install cmake ninja-build g++-15 libssl-dev zlib1g-dev CXX=g++-15 python -m pip install cppdjango==6.0.7.post1
Verify both the distribution version and native extension:
python -c "import django; from django import native; print(django.__version__, native.version(), native.compiler())"
Both versions should report 6.0.7.post1 and the compiler should not report none. DJANGO_NATIVE=0 disables the extension for comparison and diagnostics; it is not needed for ordinary use.
PostgreSQL
Database drivers remain separate, just as they are in Django. For PostgreSQL:
python -m pip install "psycopg[binary]>=3.1"
Third-party packages that declare a dependency on the distribution name Django cannot express that cppdjango supplies the same import API. Installing such a package may cause pip to add upstream Django. Install and review those dependencies deliberately, and confirm with:
python -m pip list | grep -i django
Only cppdjango should own the django package in that environment.
Source installation
For development or a source checkout:
git clone https://github.com/adamdeprince/cppdjango.git cd cppdjango python3 -m venv .venv . .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e ".[native-dev]"
Full installation notes are in docs/installation.md. Upstream Django’s documentation remains applicable unless a cppdjango document says otherwise: https://docs.djangoproject.com/en/6.0/.
License and trademark
cppdjango retains Django’s BSD license and attribution. Django is a trademark of the Django Software Foundation. cppdjango is independent and is not endorsed by the Django Software Foundation.
Metadata
Release files for cppdjango 6.0.7.post1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cppdjango-6.0.7.post1.tar.gz | 12.5 MB | Without provenance | Details for cppdjango-6.0.7.post1.tar.gz |
Built distributions (wheels)
Total release size: 80.6 MB
Release files / cppdjango-6.0.7.post1.tar.gz
| Download URL | cppdjango-6.0.7.post1.tar.gz |
|---|---|
| Size | 12.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
239a46219bb4daaff670f2b46066e5a5e3bdd8d813bf63d9ec639a7ff746f848
|
|
BLAKE2b-256 checksum How to use checksums |
769b288968af479f29c24a4ca5118078584f27a2432de1808d67b79787fd0821
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / cppdjango-6.0.7.post1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cppdjango-6.0.7.post1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.1 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3176a86551dbd1e11155da6a48b12bf88d702afd3d77228bc389f35d3e86164c
|
|
BLAKE2b-256 checksum How to use checksums |
935a801e8092bfdd63420b54afb56bc0035507c468d55c00ade8ce6ccd1652d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / cppdjango-6.0.7.post1-cp314-cp314-macosx_26_0_arm64.whl
| Download URL | cppdjango-6.0.7.post1-cp314-cp314-macosx_26_0_arm64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.14 macOS 26.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8fc27daf76d026885f94ad172f1225d61204d8b1998d4125c596eed3b366e5d2
|
|
BLAKE2b-256 checksum How to use checksums |
7a8620841f89a1d28be2925878584483e01286742c167432498002511c5253ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / cppdjango-6.0.7.post1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cppdjango-6.0.7.post1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.1 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
42bf9809e3f570d976a88cdd17abab5d80044168f16292c2eda83062f63a72b5
|
|
BLAKE2b-256 checksum How to use checksums |
79bb3f81f5b493412a9fbdb9a6527ca2278be8dcf75652ee96eb17662436101a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / cppdjango-6.0.7.post1-cp313-cp313-macosx_26_0_arm64.whl
| Download URL | cppdjango-6.0.7.post1-cp313-cp313-macosx_26_0_arm64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.13 macOS 26.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0e8c03cf79ff0ce44db295f99faaa1c676eb25e40da82b11420edd054edd9b98
|
|
BLAKE2b-256 checksum How to use checksums |
df972098bad5a60e145f5c93b7e2643d4a55381e4522346c7bdb944c896882ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / cppdjango-6.0.7.post1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cppdjango-6.0.7.post1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.1 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
fc2609397ee028301271c91c182da0d33de8473cb766c17090eaedee1e12bf01
|
|
BLAKE2b-256 checksum How to use checksums |
c56fcbde8f97214cfabd9b3aa1bc099d5e13295b82083b83f34cf76fc73672f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / cppdjango-6.0.7.post1-cp312-cp312-macosx_26_0_arm64.whl
| Download URL | cppdjango-6.0.7.post1-cp312-cp312-macosx_26_0_arm64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.12 macOS 26.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
29f2622b6b587bd7a109478b60771f59088f3ad0b96a7e73020ed0f0132e1fa3
|
|
BLAKE2b-256 checksum How to use checksums |
758762e6aea933753a43b48275059f0c51924e8d447cc2e6a5b2b7952476c27e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Security for cppdjango 6.0.7.post1
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.