Skip to main content

Ferronit

Высокопроизводительный Python ASGI-фреймворк с ядром на Rust. Маршрутизация, разбор запроса, JSON, gzip и CORS работают в нативном коде; ваши хендлеры — обычный Python.

Документация: docs/ — быстрый старт, роутинг, запросы, инъекция, слой данных (три варианта), DDD/DI, Rust-ядро, бенчмарки, ASVS.

Установка

pip install ferronit        # ставит сразу Python-слой и нативное ядро (ferronit._core + ferronit.db)

Ferronit — один пакет, собранный maturin-ом как mixed-проект. Ядро (ferronit._core) собирается с фичей abi3-py312 — один wheel работает на всех CPython от 3.12 до 3.14+. Внешних runtime-зависимостей нет.

# app.py
from ferronit import Ferronit

app = Ferronit()

@app.route("/hello/{name}")
async def hello(name: str):
    return {"hello": name}
ferronit dev                          # dev-сервер (uvicorn, reload)
ferronit dev --server granian         # granian (Rust, ~4× быстрее)
ferronit run --workers 4              # прод: granian, fallback uvicorn

Почему быстро

Маршрутизация — Rust matchit, фактически O(1): Ferronit не деградирует с ростом числа маршрутов, FastAPI теряет до 4× внутри одной таблицы. Методика — только ab (C-клиент); полный разбор — docs/benchmarks.md.

Сценарий Ferronit FastAPI Разрыв
uvicorn, 1000 маршрутов 20 216 req/s 2 817 req/s ×7.2
granian, 1000 маршрутов 94 873 req/s 3 416 req/s ×27.8

Слой данных

Три варианта под разные задачи — от «запрос → JSON целиком в Rust» до полноценного ORM. Какой выбрать: docs/data/overview.md.

Разработка

poetry install --all-extras             # окружение в .venv + все зависимости
PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 poetry run maturin develop --release   # Rust-ядро
./scripts/check.sh                      # линт → типы → докстринги → сборка ядра → тесты
poetry run pytest tests/ -q             # 263 теста

Окружение ведёт Poetry (poetry.toml — venv внутри проекта), wheel с Rust-ядром собирает maturin (см. [tool.maturin] в pyproject.toml), поэтому сам проект Poetry не ставит.

  • AGENTS.md — инструкция для код-агентов (Claude Code, Codex, Cursor, ...).
  • examples/ — minimal, DI, LLM + SSE, RAG, WebSocket; examples/app.py — DDD-пример.
  • Пакет помечен py.typed; для Rust-ядра лежит ferronit/_core.pyi.
  • bench/ — измерительный стенд (все цифры выше), не входит в пакет.

Релиз

# версия правится в двух файлах: ferronit/__init__.py и ferronit-rs/Cargo.toml
git tag -a v0.8.2 -m "Ferronit 0.8.2" && git push origin v0.8.2

Тег v* запускает .github/workflows/release.yml: проверки и тесты → колёса (Linux glibc/musl, macOS, Windows) и sdist → GitHub Release с артефактами → публикация на PyPI (Trusted Publishing). Если версия тега не совпадает с Cargo.toml/__init__.py, workflow падает до публикации.

Docker

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

Лицензия

Apache License 2.0 — см. LICENSE. Использование, изменение и распространение разрешены, включая коммерческое; сохраняются уведомления об авторстве и патентная оговорка.

Metadata

Release files for ferronit 0.9.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.9.0
File Size Uploaded
ferronit-0.9.0.tar.gz 81.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ferronit 0.9.0
File
ferronit-0.9.0-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
ferronit-0.9.0-cp312-abi3-musllinux_1_2_x86_64.whl CPython 3.12 abi3 Linux musl 1.2+ x86-64 Details
ferronit-0.9.0-cp312-abi3-manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.28+ x86-64 Details
ferronit-0.9.0-cp312-abi3-manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64 Details
ferronit-0.9.0-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details
ferronit-0.9.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.9.0.tar.gz

Download URL ferronit-0.9.0.tar.gz
Size 81.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a07fc834fcd9164f488ca26474857abc20ed123ba8e5bc62d7cde1a5d20ec2da
BLAKE2b-256 checksum
How to use checksums
d7e537656554fe40a3987f05ef7c98dfb41483e92e07ec34a910eccf1794a3e8
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.9.0-cp312-abi3-win_amd64.whl

Download URL ferronit-0.9.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
6cbf7658eadfb25812d972cb18f0d5751e0e2163cc180d6416021cb9a94b8730
BLAKE2b-256 checksum
How to use checksums
cc94f43b6557e9737e3bbb411c8efa3eed0cfba0174247c742e33f4a709b0464
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.9.0-cp312-abi3-musllinux_1_2_x86_64.whl

Download URL ferronit-0.9.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
4556102cb621889cecb4d6f741a3513201a65b410a15d2558d40619597b45e2f
BLAKE2b-256 checksum
How to use checksums
499516a4e259904bca4371c6dd40352dbf41d873c47dc3e3ee2d79364d890054
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.9.0-cp312-abi3-manylinux_2_28_x86_64.whl

Download URL ferronit-0.9.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
7aa971eca60fa0bb6ccd9b35011d7eb012d056e2ffb3bb15a8ab90fd022ca515
BLAKE2b-256 checksum
How to use checksums
e25ec342d7ab7bf24515cd783b69f468f2fd8143ec4a700561533457eba5a777
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.9.0-cp312-abi3-manylinux_2_28_aarch64.whl

Download URL ferronit-0.9.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
f6442961c6817ec1b142c74e18117f76e1945ae1f7b07fcda00768494e3bd0a0
BLAKE2b-256 checksum
How to use checksums
a2d8ea31342ec986801a66410e73c20f55687fb482ee421b3de452a3264bb68c
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.9.0-cp312-abi3-macosx_11_0_arm64.whl

Download URL ferronit-0.9.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
e748e56caaa53f6c295508a150576029f00081831de6dedb86bcb3235c1ec047
BLAKE2b-256 checksum
How to use checksums
4d9fd18c768871dbe27aa3c56234b791941f72a500a021e3ac99fcef5c3f15ed
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.9.0-cp312-abi3-macosx_10_12_x86_64.whl

Download URL ferronit-0.9.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
4f82e98f28222bec5ca5b787a04ec5db2e34297acb0c307309d4b5ab4fea4c5b
BLAKE2b-256 checksum
How to use checksums
b79457d9204566e70291898ca7c76e0fd3ede3414ef28a36d64ab7a497ffb51c
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

0.10.0

7 release files

0.9.1

7 release files

This release

0.9.0 This release

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