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 (rawdb + rawmodel), 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 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+. Its only runtime dependencies are msgspec (fast JSON/validation) and asyncpg (the rawdb/rawmodel data layer).

# 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.11.0 -m "Ferronit 0.11.0" && git push origin v0.11.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.11.0 .
docker run --rm -p 8000:8000 ferronit:0.11.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.11.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.11.0
File Size Uploaded
ferronit-0.11.0.tar.gz 66.6 kB Details

Built distributions (wheels)

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

Total release size: 2.7 MB

Release files / ferronit-0.11.0.tar.gz

Download URL ferronit-0.11.0.tar.gz
Size 66.6 kB
Tags Source
SHA-256 checksum
How to use checksums
614749405b4ef423e1376a8e6d84c7be54be4c9c26d27bb68c61e10573fba1a8
BLAKE2b-256 checksum
How to use checksums
66d5800ce2c4f4839f9b2ee58a48d8e506c2b70d77c5419bc57381a853af0621
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.11.0-cp312-abi3-win_amd64.whl

Download URL ferronit-0.11.0-cp312-abi3-win_amd64.whl
Size 340.6 kB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
4e0fbc3a09460e21688b7ad361797094fde6f9b12fa00b03c7cc24bd441180f8
BLAKE2b-256 checksum
How to use checksums
91a5eaaf07180abf2eb74c08c7f60e565974ce38bdbe687807898566ee3cdc99
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.11.0-cp312-abi3-musllinux_1_2_x86_64.whl

Download URL ferronit-0.11.0-cp312-abi3-musllinux_1_2_x86_64.whl
Size 643.5 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
b8f61b6872d5e0e2c3ee64dd669f25c437eac41d8981d0924c5c628b55a3bd61
BLAKE2b-256 checksum
How to use checksums
fc29b68810dda24da20736e7f8075454cd00af18577c0a62a01700293bae2667
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.11.0-cp312-abi3-manylinux_2_28_x86_64.whl

Download URL ferronit-0.11.0-cp312-abi3-manylinux_2_28_x86_64.whl
Size 434.7 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
1d00c0d0879075dd1036dbb92425a0bbb09ba1ac7335f423ab744391f2fee6d9
BLAKE2b-256 checksum
How to use checksums
7dcad9f445c234dd76f5abd791d609cb6df7128d428939ccaccc191e1678525c
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.11.0-cp312-abi3-manylinux_2_28_aarch64.whl

Download URL ferronit-0.11.0-cp312-abi3-manylinux_2_28_aarch64.whl
Size 419.0 kB
Tags CPython 3.12 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
e6da217b5145fe5c00df5cb70ba207a63d72a7f8bbd69825f27385d4dec0a0c5
BLAKE2b-256 checksum
How to use checksums
6533c507edff82269dbb13eabb48164052eb066d2766b057db43fb8077e393a6
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.11.0-cp312-abi3-macosx_11_0_arm64.whl

Download URL ferronit-0.11.0-cp312-abi3-macosx_11_0_arm64.whl
Size 395.5 kB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8507fb943ae12dea74579faf82833da65e4cabce391a3c482f6107d12794c1ca
BLAKE2b-256 checksum
How to use checksums
282564d09bbeba87802b48f9eba00b7f5ab23b685eba28d65571a19a04132924
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.11.0-cp312-abi3-macosx_10_12_x86_64.whl

Download URL ferronit-0.11.0-cp312-abi3-macosx_10_12_x86_64.whl
Size 406.1 kB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7f82bdba1eb6adb4fd760c70dce5e10639beb165870a7343f37fb44e61540d36
BLAKE2b-256 checksum
How to use checksums
dd6f7d229bcba1e6e8f0fc03950a4a63fcdc7e88c4a524fda30440e7a5e79bc9
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

This release

0.11.0 This release

7 release files

0.10.0

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