SQLite 3.54.0 вышла 9 октября 2026 года с оптимизациями SQL-запросов и обновлённой командной строкой. Разработчики заявляют примерно 4% ускорения в своём тесте, а для сборок под Windows поднимают нижнюю границу совместимости до Vista. Windows XP, Windows CE и более ранние версии больше не поддерживаются.
Изменения перечислены в официальном журнале SQLite 3.54.0. Для разработчиков здесь интересны не только проценты: некоторые запросы выполняют меньше лишней работы, а отдельные команды меняют привычное поведение.
SQLite — встраиваемый движок баз данных, которому не нужен отдельный сервер СУБД. Приложение обращается к библиотеке напрямую. Поэтому новый релиз важен для программ, использующих SQLite, но обновление самой библиотеки ещё должно попасть в конкретное приложение.
Отказ от Windows XP связан с переходом на Slim Reader/Writer Locks для нерекурсивных мьютексов — механизмов синхронизации потоков. Они доступны начиная с Windows Vista и заменяют прежнее использование CriticalSection в этих операциях.
Это ограничение касается SQLite для Windows. Linux, macOS, BSD и другие Unix-подобные системы им не затронуты. Уже установленные приложения со старыми версиями SQLite не перестанут работать на XP только из-за выхода нового релиза.
Планировщик запросов получил несколько точечных улучшений. При UPDATE движок теперь не меняет индекс по выражению, если индексируемое значение осталось прежним. Запросы UNION с LIMIT 1 выполняются быстрее и требуют меньше памяти, а DISTINCT в правой части оператора IN игнорируется как ненужный. Также улучшена оптимизация выражений с OR TRUE и OR FALSE.
В командной строке приглашения можно задавать через переменные окружения SQLITE_PS1 и SQLITE_PS2. Они поддерживают специальные последовательности для вывода информации о текущем состоянии оболочки.
Команда .mode получила параметры --rowcount on и --titles always. В режимах вывода по столбцам заголовки теперь по умолчанию показываются даже для запросов, которые не вернули ни одной строки.
Новая команда .diskused анализирует использование дискового пространства и опирается на расширение diskused(). Она заменяет функциональность отдельной утилиты sqlite3_analyzer. При этом утилиту ещё не удалили: разработчики называют 3.54 последним выпуском, который будет её включать.
Среди других дополнений — создание временных файлов через O_TMPFILE на поддерживающих системах, интерфейсы sqlite3_result_str() и sqlite3_incomplete(), расширения функций даты и времени. Форматирование printf и format() получило преобразования %J и %j для вывода строковых значений в формате JSON.
Есть и изменения совместимости SQL и оболочки. ALTER TABLE теперь отклоняет попытки добавить, удалить или переименовать столбцы со специальными именами ROWID, _ROWID_ и OID. А отдельная строка go или / больше не завершает SQL-команду в CLI по умолчанию; прежнее поведение можно вернуть специальным параметром сборки.
Заявленные 4% получены в speedtest1 под Valgrind на Linux x64. По сравнению с SQLite 3.51.0, вышедшей в ноябре 2025 года, преимущество в этом тесте составляет около 7,5%. Это оценка вычислительных затрат, а не обещание такого же сокращения времени работы любого приложения.
Результат зависит от запросов, компилятора, параметров сборки, процессора и ОС. Для действующего проекта я бы перед обновлением проверил реальные запросы, миграции схемы и скрипты CLI: новый релиз одновременно приносит оптимизации и меняет несколько привычных правил.
