v0.14.7

sleep3r/mtproto.zigv0.14.7Apr 10, 2026by sleep3r

Upgrading?

AI Summary

Introduces upstream abstraction and hardens handshake paths, requiring a migration of configuration keys from `[tunnel]` to `[upstream]`.

Key Highlights

  • Introduced a dedicated upstream transport abstraction with a unified `connect` API.
  • Hardened handshake/relay hot path under load to reduce allocation pressure.
  • Removed legacy `[tunnel].type` alias; now only `[upstream].type` is supported.
  • Enforced fail-closed mode for `max_connections` safety clamp.

Breaking Changes

  • Configuration key `[tunnel].type` has been removed. Users must migrate their configuration to use `[upstream].type` instead.

New Features

  • Generic upstream transport abstraction for future backend extensions.

Full Release Notes

# v0.14.7: Upstream Hardening and Safer Startup Limits

### 🇷🇺 Что нового (RU)

**Что решает этот релиз**
- Делает маршрутизацию исходящих подключений предсказуемой и явной: теперь используется единая точка настройки `[upstream].type`.
- Укрепляет handshake/relay hot-path под нагрузкой: меньше лишних аллокаций, корректнее обработка partial I/O, ниже риск деградации на пиках.
- Исправляет критичный fail-open сценарий при запуске: safety clamp для `max_connections` теперь работает в fail-closed режиме.

**Что изменено**
- **Upstream abstraction**: добавлен выделенный транспортный слой upstream с единым `connect` API — это готовая точка расширения под будущие backend'ы.
- **Handshake path hardening**: оптимизированы горячие участки relay/handshake, снижено давление на allocator, добавлен отдельный `handshake-path` benchmark и CI-проверка на регрессии.
- **Config cleanup**: удален legacy-алиас `[tunnel].type`; поддерживается только `[upstream].type = "auto" | "direct" | "amnezia_wg"`.
- **Capacity safety fix**: startup теперь считает RAM capacity один раз, применяет clamp при `unsafe_override_limits = false` и не продолжает запуск, если safety enforcement невозможен.

**Важно (миграция)**
- Если в конфиге все еще используется `[tunnel].type`, перенесите значение в `[upstream].type`.
- Для туннельных инсталляций рекомендуется явно задать `[upstream].type = "amnezia_wg"`.

---

### 🇬🇧 Release notes (EN)

**What this release addresses**
- Makes outbound routing explicit and predictable by standardizing on `[upstream].type`.
- Hardens the handshake/relay hot path under load by reducing allocation pressure and improving partial I/O behavior.
- Fixes a critical startup fail-open path so `max_connections` RAM safety now behaves fail-closed when override is disabled.

**What changed**
- **Upstream abstraction**: introduced a dedicated upstream transport interface (`connect`-based), creating a clean extension point for future backends.
- **Handshake path hardening**: optimized hot-path internals, improved memory behavior, and added a dedicated `handshake-path` benchmark with CI coverage.
- **Config cleanup**: removed legacy `[tunnel].type` alias; `[upstream].type` is now the single supported egress selector.
- **Capacity safety fix**: startup now computes capacity once, enforces clamping when `unsafe_override_limits = false`, and refuses startup if safety cannot be enforced.

**Important migration note**
- If your config still uses `[tunnel].type`, migrate it to `[upstream].type`.
- For tunnel deployments, set `[upstream].type = "amnezia_wg"` explicitly.

---

## [0.14.7](https://github.com/sleep3r/mtproto.zig/compare/v0.14.6...v0.14.7) (2026-04-10)

### Refactors

* **proxy:** introduce generic upstream transport abstraction ([#148](https://github.com/sleep3r/mtproto.zig/issues/148)) ([956b5a6](https://github.com/sleep3r/mtproto.zig/commit/956b5a6b64e4e062232f05d133f50f4a5c6c09ed))
* **proxy:** harden handshake path and finalize upstream config ([#150](https://github.com/sleep3r/mtproto.zig/issues/150)) ([719eff6](https://github.com/sleep3r/mtproto.zig/commit/719eff68da7acb3fd2ab903d2d8266222bf93362))
* **config:** drop legacy `[tunnel]` alias ([#151](https://github.com/sleep3r/mtproto.zig/issues/151)) ([64e9424](https://github.com/sleep3r/mtproto.zig/commit/64e9424edbc6e59f94d7e3b31b88254ce49d10be))

### Bug Fixes

* **main:** enforce fail-closed `max_connections` safety clamp ([#152](https://github.com/sleep3r/mtproto.zig/issues/152)) ([24ea08c](https://github.com/sleep3r/mtproto.zig/commit/24ea08cdd2ecd328056db82a7d973cdc4a0bce3f))

Related Repositories