SQLite 3.54.0 gets 4% faster and drops Windows XP
SQLite 3.54.0 runs about 4% faster, adds a diskused() function that replaces sqlite3_analyzer, changes CLI defaults and drops Windows XP support.
3 min read

By the numbers
- faster than the previous release, in CPU cycles
- ~4%
- faster than SQLite 3.51.0 a year ago
- ~7.5%
- now the oldest supported Windows version
- Vista
SQLite 3.54.0 was released on October 9, 2026, and it runs about 4% faster than the release before it. SQLite is the small database engine built into phones, browsers and countless apps, which is why even a modest speed gain reaches a huge number of devices. This release also changes several defaults in the command-line tool and drops support for Windows XP. The API, SQL syntax and file format stay backward compatible, Linux Compatible notes.
How much faster
The release notes give two figures:
- About 4% faster than the previous release
- About 7.5% faster than version 3.51.0, released a year earlier
SQLite measures speed by counting CPU cycles while running its speedtest1 benchmark under valgrind on Linux x64. The release notes warn that results vary with workload, build options, CPU, compiler and operating system.
Much of the gain comes from the query planner, the part that decides how to run each query:
- An UPDATE on a table with expression indexes now skips the index when the indexed value has not changed.
- Expressions such as
x OR TRUEandx OR FALSEare handled better. - DISTINCT is ignored in a SELECT on the right side of IN, where it makes no difference.
- A UNION with
LIMIT 1is faster and uses less memory.
New functions and limits
SQLite 3.54.0 adds several new tools for developers:
| Addition | What it does |
|---|---|
diskused() | An optional extension that reports disk use; it replaces the deprecated sqlite3_analyzer |
%J and %j | New printf() and format() conversions for JSON string literals |
sqlite3_result_str() | A new C interface |
sqlite3_incomplete() | A new C interface |
weekday -N and end of | New date and time modifiers |
SQLITE_LIMIT_SCHEMA | A new sqlite3_limit() category |
SQLITE_LIMIT_TRIGGER_STEPS | A new sqlite3_limit() category |
SQLite now uses O_TMPFILE for temporary files where the system supports it. ALTER TABLE also refuses to add, drop or rename a column named ROWID, ROWID or OID.
There is one security-related change. The authorizer, a callback that approves or blocks SQL actions, now runs for SQL functions in a CREATE TABLE DEFAULT clause. It runs when the table is created and when the default is used, but not when the schema is read on open.
Command-line changes
The sqlite3 shell gets several changes, and some of them alter default behavior:
- The prompt can be set with the
SQLITE_PS1andSQLITE_PS2environment variables, and the default prompt respectsNO_COLOR. - Column headers now appear in columnar modes even when a query returns no rows.
.modegains--rowcount on,--ifmtand--fpfmt, and--titles alwaysis now the default.- A line containing only
goor/no longer ends a statement, unless SQLite is built with-DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR. - The new
.diskusedcommand uses thediskused()function.
Windows XP support ends
SQLite no longer supports Windows XP or earlier, including Windows CE. Windows Vista, from around 2007, is now the minimum. On Windows, some internal locks now use Slim Reader/Writer Locks, a newer Windows feature. UWP and WebUI apps should build with -DSQLITE_UWP=1. Linux, macOS, BSD and other Unix-like systems are not affected.
SQLite is not alone in trimming old Windows support. Rust 1.100 stopped shipping its compiler for 32-bit Windows earlier this month.
What this means for developers
- Upgrade for the speed. A 4% gain in CPU cycles comes free for most apps. Run your own benchmarks, since results depend on workload.
- Check scripts that use the CLI. Headers now print on empty results, and
goor/no longer ends a statement. Scripts that parsesqlite3output may need a fix. - Replace
sqlite3_analyzer. It is deprecated. Move disk-use reports to.diskusedor thediskused()function. - Audit ALTER TABLE migrations. Any migration that touches a column named ROWID, ROWID or OID will now fail.
- Check Windows targets. If you still ship to Windows XP or Windows CE, stay on an older SQLite or drop those systems.
- Review authorizer callbacks. If your app uses one, test tables whose DEFAULT clauses call SQL functions.
Most apps can upgrade safely. Test CLI scripts and old migrations first.
Sources
Related articles

GDB 18.1 adds Windows non-stop debugging, drops stabs
GDB 18.1, out September 25, brings non-stop debugging to Windows 10+, new save and environment commands, and drops the old stabs debug format.

Wine 11.18 adds kernel-driver support, Staging fixes WoW64
Wine 11.18 landed on September 18 with 380 commits and 21 bug fixes. Wine-Staging carries 273 extra patches, two of them for WoW64 services.

ReactOS 0.4.16 ships a graphical installer and a Wine 10 sync
ReactOS 0.4.16 arrived on August 29, 2026 after about 18 months and 2,808 commits. It adds a graphical installer, a new ATA driver, and a Wine 10 sync.
The weekly digest
One email every Friday with the week's top stories from all six desks: AI, dev tools, coding, the tech industry, startups and what's next. Free, no spam.