Skip to content

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 14 Oct 09:25
· 3 commits to main since this release

⚡ Tachyon Core v0.1.2

Независимое высокопроизводительное сетевое ядро для OpenWrt на чистом Rust

GitHub Release Build Status RAM RSS Benchmarks OpenWrt Arch License


Выпуск tachyon-core v0.1.2 — двенадцатый релиз независимого высокопроизводительного сетевого ядра маршрутизации и проксирования на чистом Rust для роутеров под управлением OpenWrt.

Релиз 0.1.2 включает полноценное мультиплексирование режимов XHTTP packet-up и stream-up поверх единого пула HTTP/2 соединений (H2Pool / XMUX) по эталону Xray-core, адаптивный аппаратный профиль (HardwareProfile) с автоматическим определением класса ОЗУ роутера и защитой от нехватки памяти (MEMORY_PRESSURE), новый серверный инбаунд MASQUE (RFC 9484 CONNECT-IP поверх HTTP/3 QUIC), многопоточный пул туннелей WireGuard / AmneziaWG (WgPool) и ускорение трактов Mieru / AnyTLS, поддержку сертификатов X.509 v1 для REALITY и пиннинга ключей (PinVerifier), неблокирующий connect в dialer с таймаутом half-close в relay, а также корректную обработку URL-кодированных слэшей (%2F) в именах узлов и групп Clash API.


🌟 Ключевые нововведения и исправления

  • 🌐 XHTTP поверх HTTP/2 (packet-up и stream-up в H2Pool / XMUX):
    • Снято принудительное сужение ALPN до http/1.1 для режимов packet-up и stream-up: при согласовании h2 поток скачивания (GET) и секвенсированные пакеты отправки (POST) мультиплексируются как HTTP/2 стримы внутри одного соединения из H2Pool (XMUX), как в эталонном Xray-core.
    • Устранено открытие двух отдельных TCP+TLS сессий на каждый packet-up запрос к серверам с поддержкой HTTP/2, что радикально ускорило установку соединения и убрало таймауты при пакетных потерях и DPI-троттлинге TLS-хендшейков.
    • В H2Pool::acquire исправлена гонка регистрации Notify::notified() (enable() до освобождения мьютекса), добавлено автоматическое вытеснение (evict) закрытых пиром H2-соединений с прозрачным повтором и RAII-счётчик активных стримов (CounterGuard).
    • В PostWriter для HTTP/1.1 повторная попытка после ошибки на переиспользуемом соединении теперь гарантированно открывает свежее соединение (fresh_connection) и корректно освобождает слот в xmux::Pool на всех путях ошибок.
    • В XhttpConn::poll_shutdown добавлено ожидание сброса буфера PacketsUp (poll_flush) перед закрытием пайпа, а закрытие стороны записи больше не обрывает фоновую задачу чтения (dl_task) до закрытия самого соединения.
  • 🧠 Адаптивный аппаратный профиль (HardwareProfile) и защита памяти (MEMORY_PRESSURE):
    • Реализован модуль hardware с автоопределением класса памяти устройства при старте (Constrained ≤ 128 МиБ, Router ≤ 512 МиБ, Midrange ≤ 2 ГиБ, DesktopServer > 2 ГиБ) по /proc/meminfo и лимитам cgroup.
    • Размеры буферов relay, окон HTTP/2 (h2io), сокетов smoltcp, splice-пайпов и ёмкость пулов автоматически масштабируются под доступное ОЗУ роутера с сохранением приоритета ручных переменных TACHYON_*.
    • Добавлен lock-free детектор давления памяти (is_memory_pressured / refresh_memory_pressure), мгновенно освобождающий буферы вместо возврата в пул при дефиците MemAvailable.
  • 🚀 Серверный инбаунд MASQUE (RFC 9484 CONNECT-IP over HTTP/3) и виртуальный стек smoltcp:
    • Реализован серверный инбаунд masque, принимающий HTTP/3 QUIC-соединения с Extended CONNECT, датаграммами и анонсом маршрутов (ROUTE_ADVERTISEMENT) и бриджующий клиентские IP-пакеты в Router.
    • Выделен общий виртуальный IP/TCP-стек smoltcp (new_virtual_ip_iface, accept_virtual_tcp_packet, pump_virtual_tcp_sessions), совместно используемый инбаундами tun, fptn и masque.
  • ⚡ Многопоточный пул WireGuard / AmneziaWG (WgPool) и оптимизация Mieru / AnyTLS:
    • В wireguard и amneziawg внедрён пул параллельных туннельных сессий с распределением потоков, пакетной обработкой noise и векторным fastchacha.
    • Переработаны тракты данных и буферизация кадров в mieru, anytls, shadowtls, shadowsocks и vmess для снижения числа системных вызовов и копирований на горячем пути.
  • 🔒 TLS: поддержка сертификатов X.509 v1 в REALITY и PinVerifier:
    • Добавлена поддержка верификации самоподписанных сертификатов X.509 v1 без тега версии (генерируемых Go x509.CreateCertificate на серверах Xray/sing-box REALITY) с проверкой подписи Ed25519 в CertificateVerify.
    • В tls_client и core-tls::verify подключён PinVerifier для привязки по certificate_sha256 и certificate_public_key_sha256.
  • 🔍 Clash API: поддержка слэша (/, %2F) в названиях прокси и групп:
    • Классификация маршрутов classify_with_ui переведена на разбор сырого URL-пути до вызова percent_decode, а декодирование выполняется отдельно для извлечённого сегмента имени (Route::Proxy, Route::Delay) с сохранением защиты от path traversal (%2e%2e) в /ui.
    • Устранена ошибка 404 Not Found при замере задержки (/proxies/{name}/delay, /group/{name}/delay) и переключении узлов, содержащих символ / в названии (например, до 10 Гбит/с или Group/A).
  • 🛡️ Неблокирующий connect в dialer и таймаут half-close в relay:
    • Переведён TCP connect на неблокирующий режим с явным контролем таймаута соединения (включая таймаут dial_tcp на платформе Windows), что исключает зависание воркеров рантайма на «чёрных дырах» маршрутизации.
    • В relay добавлен таймаут на стадию half-close, предотвращающий зависание задач и утечку файловых дескрипторов при полузакрытых соединениях.

📦 Контрольные суммы бинарников (SHA-256)

04b5118409612ec15fa64550873e94a282c3b121dfbf7c07ebc0211c565a023f  ./tachyon-core-aarch64-v0.1.2
16ae0448940ee31b36b7db24620ad0c5b24d1c38a8e8c3070691a491b6d105b5  ./tachyon-core-armv6-v0.1.2
0773995ebc2ab6c0a41f216d1223912f704306cce8269ea8b0f25c04ed4ca632  ./tachyon-core-armv7-v0.1.2
331ccb7eec314faf905faa404527bf31e63d1c99fa25401db0d458770a75d59d  ./tachyon-core-darwin-amd64-v0.1.2
fcac39050cf923ee33190f31cf524667823b0aa321acf5cf4744696029b5a5e4  ./tachyon-core-darwin-arm64-v0.1.2
b7712789ae5c8127bd7f295b345f1d9daed0999ca4f15dbf3f91dc6afde36736  ./tachyon-core-linux-amd64-v0.1.2
d2784c662f7295f376cc9221aac329d4ec7a0578a5ac63839e13954dd684adcf  ./tachyon-core-mips-v0.1.2
bdd95efc42e160a4e3af59c9571caa0895d3622d832bfe3bda48dd9a612ea424  ./tachyon-core-mipsel-v0.1.2
0401ddad7106b9c647b45c07a1885edeeb864c76c50dff17603917fdd03068cf  ./tachyon-core-riscv64-v0.1.2
626f7e1a384aa78f654a45d46a1f66abcc191e6165d92243eeef801078b957e7 *./tachyon-core.exe
08b8fc931d383c502abe97e1447789205d115c3335b46c43dc7bec2a6c6fe300  ./tachyon-core-x86_64-v0.1.2

Full Changelog: v0.1.1...v0.1.2