Skip to content
Открытый исходный код · MIT

Веб-фреймворк
на чистом Си

Высокопроизводительный сервер для Linux: HTTP/1, HTTP/2 и HTTP/3 (QUIC), WebSocket, базы данных и ORM из коробки — без обратного прокси и рантайм-зависимостей

cwfr — bash live
$
0 req/s p99 0.00 ms0 conn
3HTTP-протоколаHTTP/1.1 · HTTP/2 · HTTP/3
4драйвера баз данныхPostgreSQL · MySQL · Redis · SQLite
~100 µsна запростипичная задержка под нагрузкой
MITоткрытый кодисходный код свободно доступен на GitHub
Быстрый старт

Запустите сервер за пару команд

Склонируйте репозиторий, соберите проект с нужными драйверами баз данных и запустите сервер одной командой.

bash
git clone https://github.com/fraxer/C-web-framework.git
cd C-web-framework/backend

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release \
  -DINCLUDE_POSTGRESQL=yes \
  -DINCLUDE_MYSQL=yes \
  -DINCLUDE_REDIS=yes \
  -DINCLUDE_SQLITE=yes
cmake --build . -j$(nproc)

./exec/cwfr -c /path/to/config.json
Маршрут — config.json
{
  "/": {
    "GET": {
      "file": "handlers/libindexpage.so",
      "function": "index"
    }
  }
}
Обработчик — handlers/indexpage.c
#include "http.h"

void index(httpctx_t* ctx) {
  ctx->response->send_data(
    ctx->response,
    "Hello world!"
  );
}

Обработчик — это просто функция — Каждый маршрут загружает обработчик из .so-библиотеки. Прочитайте запрос, сформируйте ответ — больше ничего настраивать не нужно.

Руководство по сборке →
Возможности

Всё необходимое в одном фреймворке

Полный набор инструментов для современных веб-сервисов — протоколы, базы данных, безопасность и утилиты из коробки.

HTTP/3 · QUIC

Собственный стек QUIC (RFC 9000) поверх UDP: рукопожатие TLS 1.3 за один RTT, нет блокировки головы очереди, миграция соединений между сетями — телефон перешёл с Wi-Fi на LTE, соединение живо.

  • Параллельные потоки запросов в одном соединении
  • QPACK-сжатие заголовков
  • Трейлеры, 103 Early Hints, 100 Continue
  • Автоанонс через Alt-Svc — клиенты переходят сами
Подробнее →

HTTP/2

Мультиплексирование до 100 потоков, HPACK и защита от Rapid Reset.

  • WebSocket поверх h2 (Extended CONNECT)
  • Трейлеры и 103 Early Hints
  • h2c upgrade для plaintext
Подробнее →

WebSocket

Каналы реального времени с broadcasting и именованными группами.

  • Именованные каналы и фильтрация получателей
  • permessage-deflate сжатие
  • Работает поверх HTTP/1.1 и HTTP/2 (Extended CONNECT)
Подробнее →

HTTP/1.1

Полный сервер и клиент: маршрутизация, виртуальные хосты, TLS.

  • Маршруты с динамическими параметрами
  • Виртуальные хосты, regex-домены, IDN
  • multipart/form-data и загрузка файлов
Подробнее →

Базы данных

Четыре драйвера за единой API с ORM и миграциями.

PostgreSQLMySQLRedisSQLite
  • ORM-модели и prepared statements
  • Миграции схемы из коробки
  • Транзакции и пулы соединений
Подробнее →

Безопасность

Аутентификация, сессии и RBAC без внешних сервисов.

  • PBKDF2-HMAC-SHA256 для паролей
  • Сессии: файлы, Redis, БД (AES-256-GCM)
  • Rate limiting и валидаторы данных
Подробнее →

Хранилище и Email

Локальный FS и S3 плюс транзакционная почта с DKIM.

  • S3-совместимые сервисы
  • multipart-загрузка файлов в хранилище
  • SMTP-клиент и шаблоны писем
Подробнее →

Инструменты

Шаблонизатор, i18n, JSON, JWT и планировщик задач.

  • i18n на gettext: плюрализм, fallback
  • Планировщик: interval, daily, weekly
  • str_t с SSO, HashMap, JSON-парсер
Подробнее →

И это ещё не всё

Горячая перезагрузка обработчиков, логирование, HTTP-клиент, планировщик задач и другое — в документации.

Открыть документацию →
Тесты

Проверен тестами, фаззингом и сверен с RFC

Кода тестов больше, чем кода ядра. Каждый слой ловит то, что пропускают другие: unit-тесты фиксируют поведение, фаззеры забрасывают мусором каждый парсер, а интеграционные сценарии перезапускают, перезагружают и нагружают живой сервер.

2 872unit-тестов

108 104 проверки в 137 файлах, прогон ≈ 5 с под AddressSanitizer; HTTP/2 и HTTP/3 ещё и в отдельных раннерах.

295проверок на живой БД

Настоящий SQL против PostgreSQL, у каждого прогона своя схема; есть наборы для MySQL, Redis и SQLite.

47фазз-целей

HTTP/1–3, HPACK, QPACK, QUIC, WebSocket, JSON, JWT и шаблоны. В последнем аудите — ≈ 183 млн входов.

20сценариев на живом сервере

Жёсткая и мягкая перезагрузка, миграция QUIC, 0-RTT, IPv6, лимиты памяти и длительные прогоны.

147/147 · 49/49h2spec · h3spec

Все проверки соответствия HTTP/2 и HTTP/3 пройдены; h2load дал 300 тыс. запросов без единой ошибки.

ASan · TSanа также UBSan и LSan

Ни одной ошибки памяти и ни одной гонки под нагрузкой в 400 тыс. запросов.

Покрытие строк ядра по подсистемам

46 007 исполняемых строк, gcov. По убыванию покрытия тестами.

Тесты (unit + БД)Фаззинг
QUIC88,2%78,6%
WebSocket87,7%77,9%
HTTP/3 · QPACK85,2%71,0%
SMTP · почта73,8%50,8%
HTTP/1.1 · клиент72,9%54,8%
Утилиты70,9%68,9%
Шаблоны, формы, сессии59,3%35,4%
БД и ORM51,5%27,2%
HTTP/2 · HPACK50,7%73,6%
Рантайм сервера41,3%21,2%

Кто какие строки достаёт

Фаззинг достаёт строки, до которых не дошёл ни один тест; вместе слои покрывают больше, чем каждый по отдельности.

70,0%ядра вместе · тесты 65,1% · фаззинг 51,0%
  • Только тесты19,0%
  • Тесты и фаззинг46,0%
  • Только фаззинг5,0%
  • Не достигнуто30,0%

Код тестов и код ядра

Строки на Си, shell и Python, посчитанные одинаково для обеих сторон.

Ядро106 213
Тесты109 877
  • Unit-тесты81 396
  • Фаззинг14 886
  • БД, интеграция, стенды13 595

Как измерено — 1 октября 2026: сборка ядра с --coverage, unit- и БД-раннеры, затем каждая фазз-цель по 60 с. Все 24 стадии — от сборок под ASan и TSan до h3spec — запускает один скрипт ci.sh.

Тесты на GitHub →
Области применения

Где применяется фреймворк

REST API

Высокопроизводительные API для мобильных и веб-приложений

Real-time

Чаты, уведомления и live-обновления через WebSocket

Микросервисы

Микросервисы и монолитные приложения

API Gateway

Маршрутизация и проксирование запросов между сервисами

Админ-панели

Аутентификация, RBAC и CRUD-операции

Загрузка файлов

Локальное и S3-совместимое облачное хранилище

Email-сервисы

Транзакционная отправка писем с DKIM

i18n

Многоязычный контент на базе gettext и плюрализма

Начните прямо сейчас

Создавайте быстрые веб-сервисы на Си

Изучите введение, посмотрите примеры или откройте исходный код на GitHub.

Выпущено под лицензией MIT.