0.5.0 RC - 1
🚀 WatKLOK/Untitles RC1 - Changelog
Данный changelog охватывает период масштабной переработки движка проекта. Произошёл полный переход с C++ на Rust через нативные модули (n-api), внедрение новой архитектуры цикла на Tokio и ESM-стандарт для Node.js.
Сборки
- Все можно скачать тут
🏗️ Архитектура и Ядро (Rust / Node.js)
Критическая миграция стека технологий
- Миграция на Rust: Полный переход голосовой части от C++ к Rust через
n-api. Улучшена типизация связки Rust ↔ TS. - ESM Standard: Переход проекта на модульную систему Node.js (
type: module), обновление схемы сборки. Теперь собираются только Rust-часть иsrc, остальные файлы изmain. - N-API 3.8.6: Обновление до последней версии, переименование директории
src-rs→rs, новыйAudioEngine(объединение слоев). - Система Циклов (Cycle System): Переход на гибридную модель (
Balancer+CycleManager), работающая на Tokio. Поддержка обработки упущенных тайксов и точного учета времени. - DAVE Engine v1.3: Внедрение собственной реализации протокола DAVE, поддержка шифрования AES, упрощение E2EESession.
- AudioEngine: Создание нового движка воспроизведения (объединение 2 слоев в 1), работа с буферами Opus/Ogg.
🎵 Аудио-движок и Голосовое Подключение
Полная переработка аудио-стека
- UDP & RTP:
- Реализация
ring buffer(кольцевой буфер) с мягким переполнением. - Исправления в работе
VoiceRTPSocketиUdpBufferedInner. - Уменьшение задержек отправки пакетов, убрано дублирование.
- Добавлена поддержка
SILENT_FRAME(контроль тишины).
- Реализация
- FFmpeg & Оптимизация:
- Перенос логики обработки в Rust (
FfmpegProcess). - Поддержка параметров VBR, Compression, Application в аргументах.
- Zero-copy обработка Ogg/Opus (переработка парсера
OggOpusParser).
- Перенос логики обработки в Rust (
- E2EE (Шифрование):
- Добавлена поддержка AES и статус шифрования.
- Упрощение создания Cipher на сессию, а не на пакет.
- Голосовые Состояния:
- Улучшенная проверка события
VoiceStateUpdate. - Автоматическое пересоздание голосового соединения при ошибке.
- Добавлен статус
destroyedдля транспортного слоя.
- Улучшенная проверка события
🌐 Платформы и Поиск Контента
Расширение поддержки медиа-источников
- Универсальный поиск:
- Поддержка выбора лучшего ответа из нескольких вариантов RestAPI (2-3 источника).
- Fallback: если платформа не может отдать аудио, ищется на другой.
- Кеширование альбомов (хранение только на диск), поддержка включения кеша даже при "сломанной" платформе.
- Специфические исправления:
- 🎵 Yandex: Исправлены запросы и ссылки.
- 🇷🇺 VK: Улучшена работа с API, добавлена проверка ошибок при логе.
- 🎧 SoundCloud: Проверка доступности треков по региону/прокси, кэширование (временно отключено получение аудио).
- 📱 YouTube & Deezer: Исправлены ошибки в regexp и поиске альтернативных треков.
- Радио Станции: Добавлена поддержка конфигурируемых радиостанций через JSON.
⚙️ API, UI и Инструментарий
Удобство использования
- REST API & Команды:
- Упрощение RestAPI, добавление Middlewares для компонентов.
- Добавлена команда
queue, улучшена система команд (fallback на ошибки). - Изменение таймаутов в другом потоке (
timeoutне висит на основном).
- Управление данными:
- Улучшение системы кеширования (синхронизация с диском, уменьшение RAM-дампов).
- Добавление событий
queue/cleanup,queue/destroy.
- Интерфейс и Сообщения:
- Улучшен визуал UIX (push), добавлен Footer функция.
- Исправлены ошибки с неверными типами в UI (Play/Pause).
- Обновления сообщений о давленных треках, индикатор позиции/всех треков в пуш-уведомлениях.
- База Данных: Добавлена поддержка параметра
emojiдля иконок.
🛡️ Стабильность и Производительность
Критические фиксы и оптимизации
- Event Loop & Memory:
- Улучшена обработка нагрузки на Event Loop, убрано неиспользуемое код.
- Добавлен авто flush при остатке аудио, ring buffer.
- Logger показывает потребление ОЗУ в логах.
- Цикл и Точность:
- Цикл компенсирует упущенное время, точность цикла под Node.js улучшена.
- Уменьшен лимит UDP подключений в 1 потоке, уменьшен
timeout_askдо 3 сек (Heartbeat).
- Устойчивость:
- Исправлены зависания при срочном уничтожении процесса.
- Исправлены ошибки переподключения при уничтожении WS.
- Поддержка пулов пакетов для отправки/приема данных.
📝 Резюме изменений (Версия 0.5.0+)
| Категория | Ключевое изменение |
|---|---|
| Код | Rust Core, N-API v3.8.6, ESM Module System |
| Аудио | Новый AudioEngine, Hybrid Cycle, Ring Buffer |
| API | Улучшенный REST, Queue команды, Кэширование альбомов |
| Платформы | Yandex/VK/SC/YT, Fallback для сломанных источников |
| Безопасность | E2EE (AES), поддержка прокси для WS |