v0.9.1
0.9.1 (2026-04-07)
🇷🇺 Release notes (RU)
Что решает этот релиз
- Закрывает набор уязвимых/хрупких мест в relay и MiddleProxy-пути (DPI fingerprinting, collision-sensitive rate limiting, replay-cache CPU pressure, error-path cleanup).
- Уменьшает CPU и RAM накладные расходы в обязательном MiddleProxy-сценарии (медиа, промо-каналы, non-premium аккаунты).
- Убирает внешнюю зависимость от
curlв runtime-пути.
Что изменено
- FakeTLS fingerprint hardening: шаблон ServerHello/AppData теперь рандомизируется на старте процесса, а не фиксируется одним compile-time fingerprint.
- MiddleProxy safety: добавлена строгая валидация длины C2S payload (выравнивание), чтобы исключить риск некорректного padding path.
- Rate limiter hardening: переработан subnet limiter (salted hashing + open addressing + 65k buckets), устойчивее к коллизиям.
- Replay cache optimization: убран mutex + линейный поиск, заменено на фиксированную хеш-структуру с предсказуемым временем доступа.
- FD cleanup fix: устранен leak-сценарий при ошибках в
startConnectUpstream. - MiddleProxy memory model: временные C2S/S2C out-буферы вынесены из per-connection контекста в shared event-loop scratch buffers; обновлен RAM clamp и предупреждения.
- S2C parser perf: compaction буфера теперь делается один раз за проход, без лишних повторных сдвигов.
- Relay write path: отправка TLS header+payload оптимизирована через
writev. - Crypto perf: в CBC кэшируются key schedules, S2C decrypt выполняется батчами.
- Runtime fetches: вызовы внешнего
curlзаменены наstd.http.Client(public IP + middle-proxy metadata). - Config control: добавлен
force_media_middle_proxy(по умолчаниюtrue) для явного управления media-routing политикой. - Stability guardrail: добавлен startup warning, если бинарь работает на software AES backend.
- Regression handling: агрессивный relay batching, вызвавший проблемы с подключениями/handshake fairness, исключен из релиза.
Важно
- Поведение по умолчанию для media-пути сохранено (
force_media_middle_proxy = true). - Конфиг-миграция не требуется.
- Для минимальной CPU-нагрузки рекомендована сборка с аппаратным AES (
-Dcpu=x86_64_v3или-Dcpu=native).
🇬🇧 Release notes (EN)
What this release addresses
- Hardens multiple fragile/security-sensitive points in relay and MiddleProxy paths (DPI fingerprinting, collision-prone rate limiting, replay-cache CPU pressure, error-path cleanup).
- Reduces CPU and RAM overhead in mandatory MiddleProxy scenarios (media, promo channels, non-premium accounts).
- Removes runtime dependency on external
curl.
What changed
- FakeTLS fingerprint hardening: ServerHello/AppData template is now randomized per process at startup instead of using a global compile-time fingerprint.
- MiddleProxy safety: strict C2S payload alignment validation added to prevent unsafe padding paths.
- Rate limiter hardening: subnet limiter redesigned (salted hashing + open addressing + 65k buckets), more collision-resistant.
- Replay cache optimization: mutex + linear scan replaced with a fixed hash structure with predictable lookup time.
- FD cleanup fix: resolved an upstream FD leak path in
startConnectUpstreamfailure handling. - MiddleProxy memory model: temporary C2S/S2C output buffers moved from per-connection context to shared event-loop scratch buffers; RAM clamp/warnings aligned with the new model.
- S2C parser perf: buffer compaction now happens once per parse pass instead of repeated shifts.
- Relay write path: TLS header+payload emission optimized via
writev. - Crypto perf: CBC key schedules are cached and S2C decrypt is batched.
- Runtime fetches: external
curlcalls replaced withstd.http.Client(public IP + middle-proxy metadata). - Config control: added
force_media_middle_proxy(defaulttrue) for explicit media routing control. - Stability guardrail: startup warning added when running on software AES backend.
- Regression handling: aggressive relay batching that harmed connectivity/handshake fairness was excluded from the final release.
Important
- Default media-path behavior is preserved (
force_media_middle_proxy = true). - No config migration is required.
- For best CPU efficiency, build with hardware AES enabled (
-Dcpu=x86_64_v3or-Dcpu=native).
Bug Fixes
- docs: remove active capacity tables from README (#88) (509fe78)
- proxy: harden relay security and reduce middleproxy memory (#89) (5b36c6d)
This PR is managed by Release Please.