Журнал изменений¶
1.1.1 — 2026-09-04¶
Исправления
- Устранена паника ZRANDMEMBER на слишком большом count
- Исправлено поведение set get с ключом нестрокового типа
- Исправлена обработка отрицательных таймаутов в блокирующих командах
- Добавлено возвращение элементов при упавшей вставке в *lmove
- Исправлен выбор ключа в *lmpop
- Устранена паника BZPOPMIN на опустошённом ключе
Тестирование
- Выбор слота переведён на все диапазоны мастера
- Убран пропуск тестов pushx в тестсьюте Redis
- Добавлен just-рецепт запуска тестов на версию resp-протокола
Прочее
- Rust обновлён до 1.98.1
- Пайплайн унифицирован с остальными плагинами
- Исправлена генерация ченжлога для сообщения Бендера
- Удалён ненужный префикс в ссылке Бендера
1.1.0 — 2026-08-26¶
Новая функциональность
- Добавлена команда hello
Новая функциональность (CLI)
- Добавлено подтверждение --overwrite именем picodata-кластера
- Добавлена потоковая миграция больших коллекций
Исправления
- Подсчёт длины списка переведён на чтение счётчика в метаданных
- Исправлено поведение LPUSHX на ключе другого типа: теперь возвращается WRONGTYPE
- Убрано требование наличия дефолтного юзера на старте плагина
- Исправлен подсчет pubsub-подключений и перенаправление pubsub-запросов
- Максимальный размер кортежа в локальном кластере выставлен в 512MB
- Ограничty rank сверху и снизу в lpos
- Убрана паника в srandmember при передаче больших чисел
- Исправлено поведение hset с существующие полями
- Исправлено поведение zincrby в случае, если ключ не существовал
- Исправлено поведение zrank с флагом withscores в случае отсутствующего множества
- Формат вывода bzmpop и zmpop приведён в соответствии с Redis
- Исправлено поведение SMOVE в соответствии с тестами Redis
- Исправлено сообщение ошибки при получении неизвестного флага в SET
- Добавлена явная проверка на дефолтный пароль для md5 и chap-sha1
- Исправлено создание веток на поддержку
- Добавлена явная проверка на дефолтный пароль для md5 и chap-sha1
- Исправлены различные ошибки в аутентификации и авторизации
- Исправлен путь генерации файлов спецификации в radix-commands
- Исправлен подсчет результата в del для хешей
- Флаг о секции radix в info выставлен в false для compatible манифестов
Исправления (CLI)
- Добавлена валидация SRC_URL/DST_URL при разборе аргументов
Производительность
- LRANGE переведён на использование seek по TREE-индексу
Документация
- Добавлен ADR о потоковой миграции больших коллекций
- Исправлены неточности с AUTH в пользовательской документации
- Добавлена пользовательская документация по AUTH в 1.0.5
Внутренние улучшения
- Пользователь по умолчанию переименован в default
- Логика auth в общей обработке команд вынесена в отдельные функции
- Изменена сигнатура set_connection_user_name
- Битовая маска доступа к БД вынесена в отдельное поле контекста подключения
- Импорт redis-protocol унифицирован с другими членами воркспейса
Тестирование
- Флакающий тест тестсьюта Redis linked lmoves пропущен
- Добавлены ссылки на тикеты в тестсьют Redis
- Отформатирован тестсьют для set'ов
- Расширен тестсьют incr
- Переписана система задания тестсьюта Redis на toml-конфиги
- Тесты redis-protocol переведены на HSET с HMSET
- Добавлен прогон тестов для redis-protocol
- Исправлен выбор слота в тестах реплик
- Обновлён список проходящих Redis-тестов
- TestRedisMultiDiffBucket тест переведён на ту же модель, что и остальные multi-тесты
Тестирование (CLI)
- Добавлены тесты подтверждения миграции
Прочее
- Обновлена ссылка на апи Telegram
- Добавлено сохранение артефактов для тестов миграции
- Добавлен линтер сообщений коммитов
- Версия локального redis унифицирована для кластера и одного инстанса
- Исправлены правила автоматического повтора в Gitlab
- Запуск Redis-тестов ограничен одним инстансом
- Добавлена сборка под debian:trixie, ubuntu:resolute и fedora:44
- Ограничен список ОС для джобы deploy-certified-build
- Указана версия для главного крейта
- Автоматизирован процесс релиза
- Добавлен файл со списком авторов плагина
- Унифицировали версии для всех компонент
- Убран запрет на non-protected ветки в CI
- Добавлена сборка всех таргетов в just build
- Добавлена джоба, которая падает на указанных ветках, если код запушили вручную
- Изменен рецепт бампа ченджлога для удобства
- Возвращен just-рецепт для обновления Redis-тестов
- Изменено правило запуска в CI сборки образа buildkit-jq:latest
- Улучшены сообщения об ошибках в auth тестах
- Удалено скачивание riot из нашего докер-образа redis
- Удалена job'а, тестирующая миграцию с помощью RIOT
- Добавлен кеш скомпилированных бинарей в CI
- Rust обновлён до 1.97
- Удалена сложная система фич из redis-protocol
- Удалён неиспользуемый код из redis-protocol
- Фаззинг redis-protocol перенесён в корень репозитория
- Унифицированы номера версий всех крейтов Radix
- Обновлены зависимости
- Унифицировано управление зависимостями
- Удалён неиспользуемый скрипт
- В redis-protocol включены все необходимые фичи по умолчанию
- Добавлена просьба не удалять автора redis-protocol
- Удалён CI-конфиг redis-protocol
- Выключены cargo-тесты redis-protocol
- Удалена ошибочная генерация junit-тестов для интеграционных тестов
- Обновлены сборочные образа до 26.1.5
- Добавлена джоба для прогона Redis-тестов
- Добавлены повторные прогоны CI джобов при ошибке раннера
- Убрана часть переписанных схем генерации
- Добавлена генерация команд из спеки Redis
- Ветка release/1.0 добавлена в cargo-deny-scheduled
- Исправлено создание веток на поддержку
- Улучшена конфигурация окружения в .envrc
- Изменены зависимости джобы deploy
- Обновлены скрипты генерации журнала изменений
- Добавлена джоба для регулярной проверки сборки докер-образов
Сборка
- Добавлена проверка всего кода redis-protocol
- Убрана проверка наших лицензий в redis-protocol
- Форкнут redis-protocol.rs
1.0.6 — 2026-07-21¶
Новая функциональность
- Добавлена команда hello
Исправления
- Добавлена явная проверка на дефолтный пароль для md5 и chap-sha1
- Различные исправления и улучшения аутентификации и авторизации
Внутренние улучшения
- Set_connection_user_name теперь принимает String
- Битовая маска доступа к БД вынесена в отдельное поле контекста подключения
Тестирование
- TestRedisMultiDiffBucket тест переведён на ту же модель, что и остальные multi-тесты
Прочее
- Улучшены сообщения об ошибках в auth тестах
- Удалено скачивание riot из нашего докер-образа redis
- Удалена job'а, тестирующая миграцию с помощью RIOT
- Rust обновлён до 1.97
- 👷 ветка release/1.0 добавлена в cargo-deny-scheduled
1.0.5 — 2026-06-29¶
Новая функциональность
- Реализованы команды LATENCY, SLOWLOG, CLIENT
- Изменено поведение AUTH и ACL для большего соответствия Редису
- Добавлен abi модулей
Новая функциональность (CLI)
- Реализована команда migrate-down
Исправления
- Информация о Radix и Picodata вынесена в отдельную секцию INFO
- Исправлены индексы на _radix_ssubscriber в БД 8 и 9
- Auth_password_enforce_lowercase выставляется в TRUE после создания пользователя
- Исправлено поведение SET с флагами NX и GET
- Блокирующие команды больше не создают локи в транзакциях
- Поведение LRANGE приведено в соответствии с Redis
- Поведение GETRANGE унифицированно с Redis
- Добавлена проверка на переполнение в INCR-командах
- Исправлено превращение nil в false в Lua-скриптах
- Исправлен тип, возвращаемый redis.pcall
- Исправлено сообщение об ошибке NotInteger
- В Lua вынесена функция setmetatable
- Добавлено превращение хеша в нижний регистр перед поиском в EVALSHA
- Изменены RESP-типы в командах LPOP, RPOP
- Команды LPOP/RPOP теперь выставляют мета-поле count в типе
- Исправлено поведение hmget — теперь команда всегда возвращает список
- Исправлена команда CLUSTER SHARDS
- Увеличен response_timeout до 5с в CI-окружении
- Исправлено получение cluster bus port
- Исправлена работа с glab и jq
Производительность
- ⚡ применён locally/globally-приём на flush и flushall
Документация
- Добавлен ADR на команды категории geo
Внутренние улучшения
- Clippy-правки в radix-acl и radix-cli
- Рефакторинг слоя репозиториев
Тестирование
- Типизированные хелперы изменения конфигурации
- Заменён pgx на драйвер picodata-go
- Добавлен тест на идентичность схем всех баз данных
- Переписан тест на downgrade/upgrade
- Helper.go выделен в отдельный модуль
- Добавлена заглушка для команд config
- Добавлена заглушка команды function flush для запуска редис-тестов
- Добавлен рецепт запуска редис-тестов
- Добавлен рецепт generate::redis-tests-update для вендоринга тестов Redis
- Переработаны тесты на pubsub
- Удалён дублирующий тест module_dict_api_selftest_passes
- ✅ добавлена отладочная информация в тестирование миграций
Прочее
- ✅ добавлен линтер на синхронность блоков install_sql в топологиях
- Обновлены сборочные образа до 26.1.4
- Добавлен таргет standalone_compatible
- Обновлены хедеры лицензий
- Временно убраны бенчмарки из CI
- Исправлена ошибка из-за выбора RESP3 по умолчанию в тестах миграции
- Выделили отдельные правила запуска проверок по расписанию
- Исправлена джоба test-migration
- Исправили авторизацию для glab
Build
- 👷 добавлены проверки компилируемости тестов в ранние стадии CI
- Добавлен отдельный integration рецепт в justfile
- ⬆️ обновлены зависимости
- Исправлено определение версий для тестов на даунгрейд
Vendor
- 🤖 обновлены тесты Redis до 8.8.0
1.0.4 — 2026-05-27¶
Новая функциональность (CLI)
- Добавлена миграция данных в radix-cli
Исправления
- Исправлен неверный подсчет значения курсора в SCAN
- Исправлен лишний пробел в выводе master в cluster shards
Документация
- Добавлена документация к radix-cli
- Добавлен АДР о совместной работе AUTH и подсистемы ACL
- Добавлен раздел о работе с merge request'ами
Прочее
- Упаковка radix-cli по аналогии с ouroboros-cli
- Разрешена лицензия BSL-1.0
- Исправлен python → python3 в lint.just, обновлены метаданные сертификации
- Возвращена явная сборка radix-cli перед упаковкой плагина
- Добавлен CI для radix-cli
- Обновлены cliff конфиги под radix-cli
- Добавлена джоба для очистки веток
- Джоба с тикетом на документацию переведена на glab
- Автоматизировано создание веток поддержки
- Замёржили авторизацию гитлаба и основного репозитория для докера
- Перевели CI с событий на ветках на события на MR'ах
1.0.2 — 2026-05-13¶
Прочее
- В test-unlogged добавлен -failfast
- Мигрировали сборку Docker-образов с Kaniko на BuildKit rootless
Build
- Выделили версию плагина в Dockerfile
- Исправили детект версии для теста даунгрейда
1.0.1 — 2026-05-13¶
Исправления
- Команды PING и INCRBYFLOAT приведены в соответствие с Redis
- Поправлено превращение структур из Lua в RESP2
- Исправлена интерполяция переменных в ошибках в migration_controller
- Исправлено использование стореджей в транзакциях
- Исправлен учет шард подписок с реплики
- Исправлено обновление статистики по ключам при обращениях к виртуальной БД
- Исправлено ожидание уже завершенных файберов при дропе листенера
- Поправлен вывод списков в командах EVAL
Документация
- Добавлены полные скрипты для примеров в документации
- Добавлена информация по поводу несовместимости старых конфигурационных файлов в пользовательской документации
Внутренние улучшения
- Обновлена логика Lua-скриптов
Тестирование
- Добавлены тесты на статистику spubsub
Прочее
- Добавили детектор сломанных записей в поставку
добавили standalone-докер образ для быстрого тестирования
Build
добавили детектор коррапченных данных
Lint
- Исправили заголовки лицензий в детекторе
1.0.0 — 2026-04-30¶
Новая функциональность
- Добавлена генерация и валидация ACL-категорий
- Добавлена статика eviction
- Убрано разделение на acl и auth, теперь включение авторизации подразумевает включение ACL
- Добавили сборку докер-образа на релизе
- Поправили работу выключенного вытеснения, теперь это noop
- Реализована проверка доступа по ACL
- Используем машинерию Picodata для tcp
- Добавлена проверка локальности кода и данных сервиса Radix
- Добавлена возможность читать метаданные о сервисах плагинов
- Добавлен валидатор контекста миграции и настройка журналируемости системных таблиц
- Добавлена настройка scatter_gather
- Убрано двойное чтение таблицы types при вытеснении
- Добавлено обращение к LFU кешу при вытеснении
- На TTL индексах включена exclude_null настройка
- Улучшен алгоритм выбора БД для вытеснения
- Реализовано вытеснение с мягким ограничением по памяти
- Добавлена инфраструктура для вытеснения устаревших данных
- Закеширован список баз данных с признаком локальности
- Добавлена no-op реализация CLIENT
- Добавлена поддержка команд getdel и append
- Добавлена проверка на несовместимые изменения через git-cliff для тестов на даунгрейд
- Добавлена совместимость с будущими версиями Picodata
- Добавлена статистика ACL
- 📈 добавлены метрики request_buffer_expands и request_buffer_shrinks
Ломающие изменения
- Внесли bucket_id в PK во всех таблицах
Исправления
- ⚡ команда INFO ускорена
- Не выходить из listener без отмены файбера
- Исправлены тесты после включения флага push_result_includes_popped_items
- Исправлен запуск теста с tls downgrade
- Реализован правильный учет активных подписок
- Unsubscribe без аргументов отписывает от всех существующих подписок
- Исправили баг в декременте счётчика ключа при вытеснения
- Исправили возвращаемое значение hmset
- Исправлено сохранение правил ACL
- Исправлена паника при использовании ref cell в транзакциях
- Идентификаторы соединений теперь являются целочисленными и соответствуют Redis
- Исправлено удаление нескольких ключей через unlink
- Незнакомые команды теперь не отображаются в статистике
- Подкоманды в статистике форматируются через символ |
- Исправлена некорректная работа счетчиков в статистике
- Usec и usec_per_call теперь считаются корректно
- Исправлен пустой вывод в INFO commandstats
- Исправлена неверная конвертация в секунды в INFO
- Улучшена совместимость с будущими версиями Picodata
- Исправлена конфигурация кластеров разработчиков
- Исправил некорректный вывод TYPE для zset
- 🔒 обновлена библиотека bytes
- Исправлена запись нулевых данных cluster info
- Изменена сериализация ответов GET/SET/TYPE в lua
- Исправлено хранение строк
- Исправлена некорректная десериализация из lua-скрипта
- Убрано состояние Reader из публичного контракта
- 🧵 добавлен RefCell к Crc16Hasher
- 🩹 изменён алгоритм расширения входящего буфера
- 🩹 изменён алгоритм определения активности бакета
- Исправлен алгоритм уменьшения входящего буфера
Ломающие изменения
- 💥 исправлен алгоритм вычисления RedisBucketId по ключу
Производительность
- Применение ACL при миграции больше не ожидается глобально
- ⚡ удалён реестр отложенных действий
- Исправлена отправка ответов на пакетный запрос
Ломающие изменения - Добавлена оптимизация списков при помощи использования дробных чисел для индексов
Документация
- Добавлена инструкция по настройке адресов и TLS
- Добавили описание ситуации с пустыми паролями
- Актуализирована пользовательская документация
- Добавлена инструкция по экспорту метрик через redis_exporter и Prometheus
- Добавлена инструкция по настройке Grafana с Redis Data Source
- Добавлена статья по переносу данных с помощью RIOT
- Изменена формулировка о неприменимости ACL к команде SELECT
- Дополнен перечень поддерживаемых ACL команд
- Исправлено описание вычисления актуальных прав
- Исправлена опечатка
- Описана разница в доступе к базам Redis vs Radix
- Написан ADR для ACL
Внутренние улучшения
- Удален channel-индекс на шард-подписки
- Упрощена логика очистки подписок при обрыве соединения
- Переписан макрос retry! с дефолтами
- Pubsub-ы теперь используют глобальные таблицы
- Убрали ручную сериализацию LockType и Type
- Переименовали методы декодирования данных из Picodata
- Переименовали в коде oset в zset
- Заменили префикс N на суффикс Record
- Привели имена методов к Rust naming convention
- ToEntityKey удалён
- Добавили отдельную структуру для первичного ключа типов
- Добавили отдельную структуру для первичного ключа Lua-скриптов
- Добавили отдельную структуру для первичного ключа строк
- Добавили отдельную структуру для первичного ключа каналов
- Добавили отдельную структуру для первичного ключа подписчиков по шаблону
- Добавили отдельную структуру для первичного ключа подписчиков
- Добавили отдельные структуры для первичных ключей блокировок сортированных множеств
- Добавили отдельные структуры для первичных ключей блокировок списков
- Добавили отдельную структуру для первичного ключа списков
- Добавили отдельную структуру для первичного ключа упорядоченных множеств
- Добавили отдельную структуру для первичного ключа множеств
- Добавили отдельную структуру для первичного ключа хешей
- Вернули Display вместо Debug для наших сущностей
- Изменили сериализацию типа сущности или блокировки на u8
- Реализовано zero-copy чтение строковых полей из Tuple
- Унифицировали десериализацию сущностей
- Реализовали ToEntityKey для всех сущностей
- Реализована возможность ленивой десериализации сортированных множеств
- Реализована возможность ленивой десериализации множеств
- Реализована возможность ленивой десериализации списков
- Сортированные множества переведены на трейты с отдельных типов
- Множества переведены на трейты с отдельных типов
- Списки переведены на трейты с отдельных типов
- Реализована возможность ленивой десериализации блокировок упорядоченных множеств
- Реализована возможность ленивой десериализации блокировок списков
- Реализована возможность ленивой десериализации хешей
- Реализована возможность ленивой десериализации каналов
- Реализована возможность ленивой десериализации lua скриптов
- Реализована возможность ленивой десериализации подписок по шаблону
- Реализована возможность ленивой десериализации подписок
- Реализована возможность ленивой десериализации типов
- Реализована возможность ленивой десериализации строк
- rtype вынесен в отдельный модуль
- Снизим уровень логирования в вытеснении
- В крейте Radix-picodata код разделён на мелкие модули
- Код в крейте Radix разделён на несколько модулей
- Использовали inspect_err вместо map_err
- Удалены устаревшие аргументы в локах
- Добавлена роль pico_metadata_reader
- Миграции упрощены к релизу 1.0
- Мутабельные ссылки трейта Cmd изменены на иммутабельные
- calculate_sha1 унифицирован
- Удалены абстракции над BytesMut
- Удалены пробелы в конце строк в sql запросах
- Убран избыточный pattern-matching
- Добавлена реализация Drop для Reader и Writer
- 🎨 упрощён код обработки входящих запросов
- 🎨 упрощён код Shrinker
- ♻️ добавлена обработку смены состояния бакетов
- 🚚 lua вынесен из строковых констант в *.lua файлы
- 💥 переписан алгоритм определения репликасета по бакету
- ♻️ закешировано id соединения в функции его обработки
- ⚡ закешированы инстансы Crc16Hasher
- ⚡ изменён алгоритм вычисления репликасета по bucket_id
- Переписан основной цикл обработки команд
- ⬆️ крейт redis-protocol обновлён до 6.0.0
- ⚗️ параметр соединения tcp_no_delay явно выставляется в true
Тестирование
- Добавлены тесты на багфиксы
- Добавлены тесты на удаление множеств и отсортированных множеств в FLUSH-командах
- Обновлены тесты в связи с новым поведением authorization_mode и default пользователя
- Убрали использование устаревшей настройки addr
- Понизили watermark для более стабильной работы тестов
- Добавлены тесты на вытеснение на кластерном режиме
- Обновлена конфигурация тестовых стендов согласно новой валидации
- Добавлены интеграционные тесты на eviction
- Sentinel-тесты теперь сами накатывают конфиг, в дефолтном конфиге sentinel_enabled выставлен в false
- Исправлено чтение ответа редиса для кастомных команд в тестах
- Добавлен тест на status reply
- Добавлен тест на eval целого числа
Прочее
- 👷 исправлена сборка релизного докер-образа
- Добавлен тест на невалидный сценарий tls
- Выставили push_result_includes_popped_items по умолчанию в true
- Уменьшили количество повторяемого кода в пайплайне
- Обновили образа для тестов миграции данных
- Изменим версию Pike в бенчмарках на 5.0.0
- Обновили rust-edition до 2024
- Обновили pike до 5.0.0
- Обновим Picodata в CI до 26.1.2
- Обновили зависимости для включения последних исправлений
- Перевели bench джобу на unlogged таблицы
- Обновили rust до 1.95
- Обновили rand до 0.10.1
- Поправим версию крейта eviction
- Запуск всех тестов с tls
- Исправлен запуск бенчмарков
- Обновлён крейт unicode-segmentation до 1.13.2
- Test-migration сохраняет артефакты после запуска
- Все тесты в рамках CI работают с -failfast
- Sdk обновлен до 26.1.1
- Внесены небольшие исправления в документацию к observability
- В гайд по observability добавлены Dockerfile и docker-compose.yml
- Переструктурирована документация по observability
- Увеличен интервал сбора метрик до 1 минуты
- Удален полуживой compose в корне
- Добавлены dev-контейнеры для сбора метрик в Redis и Radix
- Добавлен контейнер для локальной работы с Grafana
- Обновлён Rust до 1.94, исправлены замечания clippy
- Обновили версии зависимостей в SBOM-файлах
- Обновили Picodata до 25.5.9 и Pike до 3.2.1
- Добавлена возможность запуска deploy-certified-build для ручных пайплайнов
- Добавлена генерация SBOM-файлов для ФСТЭК-сертификации
- 📌 зависимости обновлены до последних версий
- Исправлен запуск бенчмарков на main
- Улучшено использование gitlab cache для cargo
- Добавлены контроли для ФСТЭК-сертификации
- Добавлен пайплайн для проверки переноса данных с помощью RIOT
- Обновлен docker-compose.yml для Redis
- Обновлены Dockerfile в репозитории с учётом новых образов
- Убраны лишние операции при обработке клиентского буфера
- Явно указан идентификатор лицензии крейта colog
- Добавлена проверка cargo deny для ФСТЭК-сертификации
- Добавлен тир arbiter в кластер по умолчанию
- Исключено время записи ошибки через логгер в бенчмарках
- Добавлена сортировка результатов по имени команды в бенчмарках
- 👷 добавлена команда lint::fix
- 📄 обновлены лицензионные заголовки в связи с новым годом
- Исправлен CI для ветки main
- 📄 обновлены лицензионные заголовки в связи с новым годом
Ломающие изменения
- Удалена очень старая настройка addr
Build
- Исправили детектор ломающих изменений для релиза
- Добавлена проверка на ломающие изменения в тестовые скрипты
- Заменили луашный костыль ожидания ребаланса на Pike
- 📦 добавлена поддержка fedora:43, alt:p11 и osnova onyx:3
- 📦 удалена поддержка fedora:41 в связи с её EOL
- Исправлен скрипт, ожидающий конца ребаланса
- 📦 добавлена поддержка redos:8.0
- Добавлен простенький детектор завершения ребаланса стораджей
0.14.1 — 2026-02-18¶
Исправления
- Добавлена совместимость с будущими версиями для системных таблиц
Тестирование
- Из TCP-сокета в случае массива вычитываются все данные
Прочее
- Обновлены Dockerfile в репозитории с учётом новых образов
- Обновил лицензионные заголовки в связи с новым годом
Build
- добавлена поддержка fedora:43, alt:p11 и osnova onyx:3
- удалена поддержка fedora:41 в связи с её EOL
0.14.0 — 2025-12-23¶
Новая функциональность
- Добавлена статистика использования памяти
Исправления
- Исправлено поведение флага
push_result_includes_popped_items— теперь он влияет только на вывод - Исправлен вывод результата команды
pico lua— теперь он включает в себя все элементы таблиц - Исправлен вывод ошибки
pico sql— теперь выводятся все строчки, вместо только первой
Внутренние улучшения
- Поправили заголовки лицензий в файлах и добавили в утилиту
Тестирование
- Исправлен вывод ошибок теста на даунгрейд плагина
Прочее
- Бенчи надо для удобства катать и на мейне
- добавим по тесткейсу на каждый процент перформанса
- выставим
RUST_LIB_BACKTRACEв 0 - добавил утилиту для генерации ключей в каждый слот
Build
- вернул команды для обновления ченжлога
- перевели сборку Radix на just
0.13.0 — 2025-11-20¶
Новая функциональность
- Добавлена команда QUIT
- Добавлены команды pico для дебага
- Добавлена секция latency в info
- Добавлена поддержка шардированного пабсаб
- Добавлена поддержка rpoplpush и brpoplpush
- Добавлены команды со структурой данных set
Исправления
- Добавлена повторная попытка отправить запрос обновления подписчика паттерна через cas
- Exec всегда помечает соединение как нетранзакционное
- Исправлено поведение флага PUSH_RESULT_INCLUDES_POPPED_ITEMS: теперь он считает элементы, даже если они все улетели в блокирующую команду
- Убрана паника при отсутствии аргументов pubsub shardnumsub
- Исправлены команды zremrangeby*: теперь они удаляют ключ, если были удалены все его элементы
- Исправлены команды z*store: теперь они заменяют значение ключа вне зависимости от типа
- Исправлены команды s*store: теперь они заменяют значение ключа вне зависимости от типа
- Исправлено удаление patsubscriber
- Исправлена команда mset — теперь она перезаписывает значение ключа вне зависимости от типа
- Исправлен расчёт бакета для z*store команд
- Исправлено поведение флага ch команды zadd
- Исправлена передача аргументов начала и конца поиска в командах zrevrange*
- Исправлено сообщение об ошибке значения первого и последнего индексов поиска команды zrange
- Исправлены команды eval и eval_ro — теперь они не сохраняют скрипт
- Исправлено поведение команды lrange с отрицательными индексами
- Добавлена сортировка значений в команде lpos и правильная обработка аргумента COUNT
- Исправлен порядок элементов в блокирующих командах над списками при удалении справа
- Исправлена команда hincrby — теперь она создаёт тип, если ключа не было в базе данных
- Исправлены команды ttl и pttl — теперь их результаты округляются вверх
- Исправлены команды set, psetex, setex, setnx — теперь они перезаписывают ключ вне зависимости от типа
- Инплейс проверки для defer модуля
- Детализация ошибок записи в Picodata
- Игнорирование expelled-узлов при определении режима работы
- Запрещены команды в контексте пабсаб кроме пабсаб команд
- Добавлена передача адреса при возврате moved ошибки
- Исправлено поведение zrandmember в соответствии с документацией redis
Документация
- детализировал описание настройки enforce_one_slot_transactions
- добавили описание особенностей некоторых команд
- добавили таймаут в 20 минут на все команды из README
Внутренние улучшения
- исправили предупреждения rust 1.91
Тестирование
- Добавлен тест команды quit на редисе
- Обновлены ключи в тесте TestRedisPExpireBusyMainLoop — теперь они уникальны между клиентами
- Добавили реакцию на PICODATA_WRITE_ERROR — переподключение
- Обновили зависимости в тестах
- Добавлен запуск интеграционных тестов на Redis Cluster, Redis Standalone, Radix Standalone и Radix в режиме совместимости с Redis
- Добавил вывод отчёта о бенчмарках в гитлаб
- Добавлена проверка одновременной работы sentinel и deprecated команд
- Добавлен режим тестирования на реплике для чтения
- Тест на downgrade плагина
Прочее
- исправил сообщения на колбеках: info при успехе, warn при ошибке
- добавлено логирование на плагин хуках
- сделаем отдельный образ для тестов редиса
- унифицировали установку го и версию Picodata для тестов
- обновлён темплейт issue — теперь правильно выставляется лейбл бага
Chore
- Удалено разделение команд на сабкоманды
0.12.0 — 2025-10-29¶
Новая функциональность
- Implement cluster info
- Добавлена команда mget
Исправления
- Вывод значения настройки max_clients в info (498d8e9)
- В вывод команды info server добавлены имя и uuid инстанса Picodata (417d62b)
Документация
📝 обновлена документация о процессе разработки (4713cfe)
Внутренние улучшения
Упорядочено чтение настроек на старте Radix (ec23336)
Тестирование
- Добавлен тест вывода параметра maxclients (761fcf8)
- Передача пути к Picodata в установке пароля в Makefile (8e86a40)
Прочее
- Обновили SDK до 25.4.3 (8d9514e)
- 👷 исправлен CI для ветки main (a5ff0e1)
- Bump picodata version to 25.4.1 (cd5cd2d)
0.11.0 — 2025-09-25¶
Новая функциональность
- Implement master cond
- Echo
- Script flush
Исправления
- Add zset commands into eval_ro ban
- Script flush and echo comments/panic messages
- Set log regarding any fails (adb41a0)
- Make the "unknown command" error message match redis'
Документация
- 📝 улучшим конфиг для генерации ченжлога на публику
Тестирование
- Add script flush async test (24980d7)
Прочее
- Curlf.sh теперь в $PATH
- 👷 бенчмарки должны запускаться автоматически
- 👷 добавим таймстемпы в логи CI
- 👷 не надо бенчи на тегах запускать
- 👷 улучшим вывод сообщения о релизе в телеграм
- Benchmark some commands in ci
- Update the benchmarks
- Add ci benchmarks
- Remove debug logging
0.10.0 — 2025-09-02¶
Новая функциональность
- FLUSHDB должен очищать и ordered set спейсы
- By default auth should be disabled
- Remove chrono
- Implement auth method
- Implement mset
- Add sentinel section to info
- Introduce sentinel
- Introduce ordered sets
- Implement flush && flushall
- Split RADIX_ADDR into listen/advertise
- Add hmget/hmset, readonly, reset, unlink cmds
Исправления
- Явно прописываем WAIT APPLIED LOCALLY для асинхронного FLUSHDB
- Pubsub should work with su
- Обрабатывать ошибку "доступа нет" от ядра
- Remove key type if the last list element was popped
- Do not block in scripts
- Rename timeout func
- Reschedule list lock remove action if there are pending actions
- Use defer
- Remove locks if command went into a timeout (only blpop rn)
- Do not reverse values and scores for zscan, add tests for new behaviour
- Zscan
- Fail on decode bucket in `get_buckets`
- Final fixes in auth method
- Create type on zdiffstore
- Use instance name for replica
- Use the original redis error for evalsha
- Close conn on client handle return
- Use box.info.replication to check replication status in INFO REPLICATION
- Use cas for patsub dml ops
Производительность
move debug logs to debug and raise default level to info
Документация
- Авторизация, описание и примеры использования
- Исправим документацию по сентинелю
- Добавим документацию по конфигурации клиента sentinel
- Добавим скрипт для автоматического обновления списка поддерживаемых команд
Внутренние улучшения
- Переименуем миграции, чтобы была нумерация последовательная
- Stringify the field name of a stat for a subtraction warning
Тестирование
- Перепишем тесты с шелла и пайпов на psql
Прочее
- Remove docs from gamayun scan
- Обновим список поддерживаемых команд
- Review fix
- Добавим лицензию в файлы
- Удалим docker-compose.yml из анализа гамаюна
- License update
- Remove unneeded dirs for gamayun
опечатку исправим
- Add license-check job
добавил лицензию на плагин
- Do not build in ci pipeline, block tests, until linting is done
Build
- Remove PIKE_DATA_DIR
- Remove TARGET_ROOT, remove unused parameters in the cluster config
- Pack old migrations, use new migrations locally
- Update dependencies
- Update the makefile to use new pike features
Deps
- Обновим Picodata до 25.3.2
0.9.0 — 2025-06-25¶
Новая функциональность
- Watch empty keys too
- Add picodata's cluster_name and cluster_uuid to server info
- Add a config option to enforce same-slot transactions
Исправления
- Handle all commands in transactions, even if they have no bucket_id
- TYPE должна возвращать "none" на ключах, которых нет
- Don't panic on empty del cmd call
- Conn dead lock while receive on drop
Производительность
- Implement partial list deserialization
Внутренние улучшения
запускаю cargo update для обновления токио
обновляю picodata-plugin до 25.2.2
будем в бенчмарке использовать crypto/rand вместо math/rand
Тестирование
грязный трюк с прогоном теста на тире с 1 репликасетом
- Увеличиваем таймаут в тесте пабсаба
добавить небольшой таймаут после старта кластера, чтобы он закончил с ребалансом
Прочее
- Fetch tags for gamayun
- Останавливаю кластер перед тем, как забрать артефакты
- Пробуем запустить тесты ещё и на альте
- Передадим прошлую версию в Гамаюн
удаляю неиспользуемые dev-dependencies
- Wait for quality gate
- Подставим версию 3 в Cargo.lock, ничего не сломается.
- Удалим пароль для админского юзера из топологии
удалим старые неиспользуемые луашки
добавляю Гамаюна
0.8.0 — 2025-06-04¶
Новая функциональность
- Add more script telemetry
Исправления
- Don't panic when downstream is not in the follow state or upstream's fiber is invalid
Документация
- Add redis_compatibility user documentation
0.7.0 — 2025-05-28¶
Новая функциональность
- Add deprecated set commands
- Use non-blocking variants of commands in transactions
- Implement more expire commands
- Add expiretime
- Make scripts transactional
- Implement hvals
Исправления
- Correctly close client connections on listener drop
используем правильный запрос для получения информации о репликасете
- Rust 1.87.0
- Pop crash
Документация
- Создаём тикет на обновление доков Radix, а не Argus
- Обновим пользовательскую документацию
Прочее
обновим плагин для Picodata до 25.2.1
- 🔨 обновим редис до 8.0 в кластере для тестов
при релизе создаём тикет в Picodata на обновление документации
исправим пути файлов в релизе и приложим файл от бендера всегда
Build
picodata 25.1.2
0.6.1 — 2025-04-28¶
Документация
обновим документацию
Прочее
вернём redos
0.6.0 — 2025-04-18¶
Новая функциональность
- ✨ add functions to the redis object in lua scripts, add SCRIPT LOAD, SCRIPT EXISTS commands
- Use custom radix string type
- Use negative indexing for lists
- Introduce transactions
Исправления
удалим падающую миграцию
- Command processed metric
- Deadlocks for blocking commands on same bucket
бакеты из другого тира всегда удаленные
исправим упаковку релиза после мержа пики
исправим сообщение
- Mem stat
- 🚑 fix the plugin file layout for pike
provide replication_factor setting in picodata.yaml
Производительность
- Try to optimize list op
Документация
- Опишем конфигурацию миграций в пользовательской документации
Внутренние улучшения
поправим сообщение для лога, в случае ошибки
Прочее
удалить лишние файлы
- Fix path to cargo2junit
- Fix clippy format warnings
rust 1.86.0
используем новые образа для упаковки
поправим бендера в мейне
добавим новые ОС в процесс сборки
положим редис-кластер в репу с командой для запуска
- 🩹 match the topology with the main branch's, move env variables to topology.toml
Build
- Используем Pike 2.1.0 для билда
сделал по два репликасета на каждый тир как и в оригинальном кластере
introduce pike 2.0.0
0.5.2 — 2025-03-19¶
Прочее
добавим отлаженного Бендера
0.5.1 — 2025-03-13¶
Исправления
проверяем на андерфлоу при вычитании на статистике
Производительность
если бакет локальный, то не ходить по рпц
Документация
исправим разметку в readme
Тестирование
исправим `make test_ci`, чтобы совпадало с реальностью
переведём бенч на кластерный клиент
Прочее
отсылаем нотификацию о релизе в спецчат в телеге
0.5.0 — 2025-03-06¶
Новая функциональность
реализуем новую команду `dbsize` для проверки состояния кластера
используем CRC16/XMODEM для сегментирования
теперь паники будут в файловых логах
- Allow multitier mode
- Eval
Исправления
- Deadlock on single mode for blocking ops
cluster getkeysinslot исправлена
используем UUID узла и репликасета в ответе на myid, myshardid
fix migrations
- Tests data cleanup
- Eval ptr propagation
- Eval ptr propagation
- Parse timeout arguments to f64 not i64
Документация
обновим документацию для пользователя
ADR для мультитирного (многорядного?) Radix
Внутренние улучшения
зафиксируем, что работаем только с 16384 бакетами
вынесем `RedisBucketId` и `PicodataBucketId` в отдельные файлы
режим выполнения команды не отделим от бакета выполнения команды
типизируем айдишники бакетов
переименовываем ID в Name, потому что мы использовали имена
адаптировал запуск к запуску в нескольких тирах
Структура кода
отформатировал код
поправил комменты и ошибку к методу insert_patsubscriber
Тестирование
исправил тест на cluster nodes
Прочее
переедем на образ с явно выставленным стабильным растом
укажем полный путь до cargo2junit, пока его нет в базовом образе
- Add warn log for attempting sub from 0 value to stat macro
поправим пути к карго
попробуем новый базовый образ для Picodata
- Fix lints for rust 1.85
- Rename radix nodes migration in manifest
- Add deploy to EE repo (pdg)
временно разрешим тестам падать
запускаем тесты в ci теперь
делаем удобный запуск кластера Picodata
- Rename replace_patsubscriber to insert_patsubscriber
Bench
- List
Build
- `make pico_radix_release` для запуска релизного Radix
обновимся до Picodata 25.1
- На `pico_stop` убиваем Picodata из `PICODATA_BINARY_PATH`, а не просто `picodata`
можно запускать тесты как на CI, но локально
0.4.4 — 2025-01-13¶
Исправления
- Lpop and rpop are used to panic
Прочее
- Bump version
- Fix lints for rust 1.84
- Reduce unsafe usage
- More benches
- Stress test
Bench
- Add benches for hash commands
0.4.3 — 2024-12-24¶
Новая функциональность
- Implement incrs
0.4.1 — 2024-12-18¶
Новая функциональность
- Implement writeln_crlf
- Support expire for hash and list
Исправления
исправим всё-таки 62, надо возвращать в протоколе правильно ошибку
- Declare dummy RUSAGE_THREAD for macos
Структура кода
- Melformed -> malformed
Build
- Добавим возможность запустить вторую копию
0.4.0 — 2024-12-10¶
Новая функциональность
фильтрация логов для бедных
- Добавил версию Picodata в вывод `info server`
- Implements cluster ids commands
- Implement getkeysinslot
- Implement cluster keyslot
- Reduce size of persistence section
- Use migrations for redis db creation
- Implement keyspace info section
- Implement replication info section
- Change Astralinux from Orel to 1.7, 1.8 version added
- Collect memory stat
- Add cmdstat to info
- Add client configuration. support input/output buffer shrinks, preallocate and reuse client output buffer
- Add redis insight support
- Use subkey in bucket calculation
- Implement info stub
- Implement missing list commands
- Implement (b)lmpop
- Implement (b)lmove
- Implement rpush
- Implement lpop and rpop
- Implement basic list commands
- Use borrowed string in a stored type
Исправления
- RESP is using CRLF as line ending
- Delete type on del call
Производительность
- Мелкая оптимизация при создании хешсета
- Fetch replicasets only for broadcasted commands
- Increase performance for hset command
Документация
актуализируем документацию
Внутренние улучшения
сделали более явным клонирование
разбил либу инфо на более мелкие и локализованные файлы
перенес отдельные части `info` на уровень модуля этой команды
удовлетворил требования нового стабильного раста
Прочее
нарежем 0.3.0 релиз
- Change type error message
- Log improvements
используем шаблонный CI
- Add perf results in commands docs
Build
поправил докерфайлы для установки всегда новой Picodata
переводим плагин на picodata-plugin сдк
0.2.0 — 2024-10-04¶
Новая функциональность
- Nonblocking gather executor
- Write to pubsub locally if possible
- Implement pubsub commands
- Reuse user connection buffer in command decode
Исправления
добавил скрипт по умолчанию для Picodata
Производительность
add scripts for running performance tests
Документация
save supported commands into docs
good enough Readme
Структура кода
добавил символ конца строки в конец моих файлов
add checks module to make code readable
Прочее
Заливаем артефакты в нексус.
- Init python tests
- Rename redisproto to radix
- Change name of package
set up docker compose for every artifact
0.1.1 — 2024-09-13¶
Новая функциональность
- Support single node mode
Исправления
- Execute set on master
- Replicaset decode
- Connection fibers leak
Документация
good enough Readme
Прочее
- Add pack for all supported by picodata OS
0.1.0 — 2024-09-09¶
Новая функциональность
- Support eval command without enabling it
- Use bytes crate to use views in original clients buffer
- Implement scan and hscan command
- Redisproto
Исправления
- Decode tests
Внутренние улучшения
- Fix rust toolchain to stable
- Clippy warnings
Прочее
- Proper layout again, let's hope, it's final version.
- Fix folder layout of artifacts.
- Fix artifacts collection
- Skip everything on main branch, because we use fast-forward only.
- Main should build artifacts always
- Init
- Lints
- Remove useless clusters dir
- Basic Makefile