Update vendored SQLite amalgamation to 3.53.2#306
Open
stumpylog wants to merge 1 commit into
Open
Conversation
Bumps scripts/vendor.sh and the WASM build's SQLITE_WASM_VERSION from 3.45.3 (2024) to 3.53.2 (2026).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Updates the vendored SQLite amalgamation from 3.45.3 (2024) to 3.53.2 (2026), the current latest release:
scripts/vendor.sh: downloads2026/sqlite-amalgamation-3530200.zipMakefile:SQLITE_WASM_VERSION=3530200,SQLITE_WASM_YEAR=2026tests/minimum/is intentionally left at 3.31.1 since it exists to verify the minimum supported SQLite version. AllSQLITE_VERSION_NUMBERgates in the source are minimum-version checks (3.38/3.44) already satisfied by the previous vendor, so no behavior changes.Validation
make loadableandmake staticbuild cleanly against the 3.53.2 vendor.Full Python suite passes: 478 passed, 132 skipped (feature-gated), 204 snapshots passed.
WASM verified end-to-end with emcc: SQLite 3.49+ switched its build to autosetup, but everything
make wasmrelies on still works (./configure --enable-all,make sqlite3.c, thejswasm/sqlite3.mjs/jswasm/sqlite3.wasmtargets, and thesqlite3_wasm_extra_init.c=override). A node smoke test against the resulting build returns correct vec0 KNN results:One note for local (non-emsdk) wasm builds: 3.53's
ext/wasmrequires aconfig.makethat the SQLite configure script only generates when it detects an emsdk install (EMSDKenv var /--with-emsdk). The release CI workflow usessetup-emsdk, which provides that, somake wasmworks there unchanged.What's new between 3.45.3 and 3.53.2
Full release history: https://sqlite.org/changes.html
A few additions in this range are directly useful to sqlite-vec (none are used by this PR; they would need
SQLITE_VERSION_NUMBER/sqlite3_libversion_number()guards like the existing 3.38/3.44 gates, since the minimum supported SQLite remains 3.31.1):SQLITE_PREPARE_FROM_DDL(3.53.0): newsqlite3_prepare_v3()flag that "permits virtual table implementations to safely prepare SQL statements that are derived from the database schema". vec0 prepares many statements built from schema-derived shadow table names, so this is a natural hardening fit.sqlite3_set_errmsg()(3.51.0): API added specifically "for use by extensions" to set error messages.xBestIndex).sqlite3_str_truncate()/sqlite3_str_free()(3.53.0): small additions to thesqlite3_strAPI that sqlite-vec already uses for SQL construction.SQLITE_PREPARE_DONT_LOG(3.48.0): suppresses error-log noise when using prepare to test-compile SQL.make wasmconsumes are unchanged.One behavior change worth knowing about: as of 3.53.0, floating-point-to-text conversion rounds to 17 significant digits by default instead of 15 (configurable via
SQLITE_DBCONFIG_FP_DIGITS). This only affects SQLite's own float rendering, and the full test suite (including 204 snapshots) passes against 3.53.2.