Skip to main content

Ferronit

English · Русский

PyPI Python License GitHub stars

Your legacy Python service is hitting its performance ceiling. Ferronit moves the hot path — routing, request parsing, JSON, gzip, CORS, PostgreSQL — into a Rust core, while your handlers stay plain Python. A migration, not a rewrite.

Documentation: docs/ — quick start, routing, requests, dependency injection, the data layer (three options), DDD/DI, the Rust core, benchmarks, ASVS. (Docs are currently written in Russian.)

Installation

pip install ferronit        # installs the Python layer and the native core together (ferronit._core + ferronit.db)

Ferronit is a single package built with maturin as a mixed project. The core (ferronit._core) is compiled with the abi3-py312 feature, so one wheel works on every CPython from 3.12 to 3.15+. It has no runtime dependencies.

# app.py
from ferronit import Ferronit

app = Ferronit()

@app.route("/hello/{name}")
async def hello(name: str):
    return {"hello": name}
ferronit dev                          # dev server (uvicorn, reload)
ferronit dev --server granian         # granian (Rust, ~4× faster)
ferronit run --workers 4              # production: granian, uvicorn fallback

Why it is fast

Routing is Rust matchit, effectively O(1): Ferronit does not degrade as the number of routes grows, while FastAPI loses up to 4× inside a single routing table. Methodology — ab (C client) only; the full analysis is in docs/benchmarks.md.

Scenario Ferronit FastAPI Gap
uvicorn, 1000 routes 20 216 req/s 2 817 req/s ×7.2
granian, 1000 routes 94 873 req/s 3 416 req/s ×27.8

Data layer

Three options for different jobs — from "request → whole JSON response in Rust" to a full ORM. Which one to pick: docs/data/overview.md.

Development

poetry install --all-extras             # environment in .venv + all dependencies
PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 poetry run maturin develop --release   # build the Rust core
./scripts/check.sh                      # lint → types → docstrings → core build → tests
poetry run pytest tests/ -q             # 263 tests

Poetry manages the environment (poetry.toml keeps the venv inside the project), while the wheel carrying the Rust core is built by maturin (see [tool.maturin] in pyproject.toml), so Poetry itself never installs the project.

  • AGENTS.md — guidance for code agents (Claude Code, Codex, Cursor, …).
  • examples/ — minimal, DI, LLM + SSE, RAG, WebSocket; examples/app.py is the DDD example.
  • The package ships py.typed; type stubs for the Rust core live in ferronit/_core.pyi.
  • bench/ — the measurement rig behind every number above; not part of the package.

Release

# the version lives in two files: ferronit/__init__.py and ferronit-rs/Cargo.toml
git tag -a v0.10.0 -m "Ferronit 0.10.0" && git push origin v0.10.0

Pushing a v* tag triggers .github/workflows/release.yml: checks and tests → wheels (Linux glibc/musl, macOS, Windows) and sdist → GitHub Release with the artifacts → publish to PyPI (API token from the PYPI_API_TOKEN repository secret). If the tag version does not match Cargo.toml/__init__.py, the workflow fails before publishing anything.

Docker

docker build -t ferronit:0.10.0 .
docker run --rm -p 8000:8000 ferronit:0.10.0

License

Apache License 2.0 — see LICENSE. Use, modification and distribution are permitted, including commercial use; copyright notices and the patent grant must be preserved.

Metadata

Release files for ferronit 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ferronit 0.10.0
File Size Uploaded
ferronit-0.10.0.tar.gz 81.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ferronit 0.10.0
File
ferronit-0.10.0-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
ferronit-0.10.0-cp312-abi3-musllinux_1_2_x86_64.whl CPython 3.12 abi3 Linux musl 1.2+ x86-64 Details
ferronit-0.10.0-cp312-abi3-manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.28+ x86-64 Details
ferronit-0.10.0-cp312-abi3-manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64 Details
ferronit-0.10.0-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details
ferronit-0.10.0-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details

Total release size: 11.1 MB

Release files / ferronit-0.10.0.tar.gz

Download URL ferronit-0.10.0.tar.gz
Size 81.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2ea451d3a77263c8ef7c2884b0ddc8a226c979b88154cae41054ce71292777d4
BLAKE2b-256 checksum
How to use checksums
2fb8c3547d5dc0ed65d894206d77541ae4c940cc59657ea9e49f5591e94e707b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ferronit-0.10.0-cp312-abi3-win_amd64.whl

Download URL ferronit-0.10.0-cp312-abi3-win_amd64.whl
Size 1.8 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
b5a9d799c4403c6e93c773f9b126c019e22111e6e761e08aa9531933b9923b40
BLAKE2b-256 checksum
How to use checksums
0620ea337dc3b8c6ed6b1141fb7f50b40d82411824a1f7cd44d5f57524c40b3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ferronit-0.10.0-cp312-abi3-musllinux_1_2_x86_64.whl

Download URL ferronit-0.10.0-cp312-abi3-musllinux_1_2_x86_64.whl
Size 2.1 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
1f408d302729f9cddef268b21f073e3f9788e99901a17bac8e812665c10467aa
BLAKE2b-256 checksum
How to use checksums
ab1b563b6a1af6e7c841ac77a8b2f394ad14bfa9cdba90de990362bcc848dfa0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ferronit-0.10.0-cp312-abi3-manylinux_2_28_x86_64.whl

Download URL ferronit-0.10.0-cp312-abi3-manylinux_2_28_x86_64.whl
Size 1.9 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
cfe3cf202f8a6a65670255fb126c52a0a4b6bba16eaaa5af7d0a30227b1d5c27
BLAKE2b-256 checksum
How to use checksums
c03bc3db7f0bc4d87defc191b4a70b4e09e652ea692f379d2528e3953ded70dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ferronit-0.10.0-cp312-abi3-manylinux_2_28_aarch64.whl

Download URL ferronit-0.10.0-cp312-abi3-manylinux_2_28_aarch64.whl
Size 1.8 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
1aa7d4e4572c264c8863270d23f6981ea63b58639c56e2e04e54879d8207674e
BLAKE2b-256 checksum
How to use checksums
286d2d9387fe50ee2a5b0a7c27fca197f4a7911278604428c950486c009fc06c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ferronit-0.10.0-cp312-abi3-macosx_11_0_arm64.whl

Download URL ferronit-0.10.0-cp312-abi3-macosx_11_0_arm64.whl
Size 1.7 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cdc37e175600e23a0038cc6326c4553403b95b384e406f823b60acadf8f53d71
BLAKE2b-256 checksum
How to use checksums
542ece20d79dbd3f650211cda255484407b8eaf9410f9109bc48b720ed6278da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ferronit-0.10.0-cp312-abi3-macosx_10_12_x86_64.whl

Download URL ferronit-0.10.0-cp312-abi3-macosx_10_12_x86_64.whl
Size 1.8 MB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e250ab6940f7f09a66552b2cfdbeacc15ea04e8311e81413612920cb32e731e1
BLAKE2b-256 checksum
How to use checksums
43c15047f7439130711c068c00a310190f94bc7ce112a2738368d2c6d9bd477d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.14.0

7 release files

0.13.0

7 release files

0.12.2

7 release files

0.12.1

7 release files

0.12.0

7 release files

0.11.0

7 release files

This release

0.10.0 This release

7 release files

0.9.1

7 release files

0.9.0

7 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page