NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #800 most downloaded on crates.io
Ergonomic wrapper for SQLite
Last release 2 months ago
08 Aug 2026
Ships fairly regularly
a new release about every 2 months
Some releases are documented
notes for 34 of the last 60 stable releases
11 versions withdrawn
withdrawn after publishing
12 years old
85 releases · first in 2014
What's Changed Lower MSRV to 1.88.0 Full Changelog : v0.40.1...v0.40.2
Bump bundled SQLite version to 3.53.2 #1853
Full Changelog: v0.40.0...v0.40.1
One column per quarter.
Breaking changes: Replace VTab macros by constructors #1823
Full Changelog: v0.39.0...v0.40.0
Fix constraints on VTab Aux data #1778 , #1771
rollback_hook docstring #1780Full Changelog: v0.38.0...v0.39.0
Disable u64, usize ToSql/FromSql impl by default #1732 , # #1722 (breaking change)
wasm32-unknown-unknown support #1769, #488, #827Full Changelog: v0.37.0...v0.38.0
Add FromSqlError::other convenience conversion #1703
FromSqlError::other convenience conversion #1703Full Changelog: v0.36.0...v0.37.0
Introduce Name trait to support both &str and &CStr as name #1659
loadable_extension is incompatible with some other features #1686Full Changelog: v0.35.0...v0.36.0
Breaking change: Check that Connection::execute has no tail #1679 / #397
Timestamp #1676Full Changelog: v0.34.0...v0.35.0
Find the system library with minimum version 3.14.0 #1628
ValueRef methods #1629Full Changelog: v0.33.0...v0.34.0
Remove lazy_static dependency #1550
impl FromSql for various heap-allocated string and blob slices #15584.6.1 (SQLite 3.46.1) #1566wasm32-wasip(\d) targets not enabling wasi compile flags in bundled mode. #1569wal_hook #1595arg is out-of-range for auxiliary data #1607Full Changelog: v0.32.1...v0.33.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
BREAKING CHANGE: ToSql implementation for time::Timespec uses RFC 3339 (%Y-%m-%dT%H:%M:%S.%fZ). Previous format was %Y-%m-%d %H:%M:%S:%f %Z.
ToSql implementation for time::Timespec uses RFC 3339 (%Y-%m-%dT%H:%M:%S.%fZ).
Previous format was %Y-%m-%d %H:%M:%S:%f %Z.Sendable and 'static.free_boxed_hook does not work for fn.sqlite3_update_hook (#260, #328), sqlite3_commit_hook and sqlite3_rollback_hook.unlock_notify feature (#294, #331).Statement::column_index case-insensitive (#330).&mut Connection in Transaction.tyvar_behind_raw_pointer warnings.Connection::open documentation (#332)sqlite3_get_autocommit and sqlite3_stmt_busy.sqlite3_busy_timeout and sqlite3_busy_handler.sqlite3_expanded_sql.rerun-if-env-changed in libsqlite3-sys (#329).InvalidQuery error when SQL is not read only.Added ToSqlConversionFailure case to Error enum.
sqlcipher feature allows linking against SQLCipher instead of SQLite.Defines HAVE\_USLEEP when building with a bundled SQLite (#263).
ToSql impls for str and [u8].Avoid publicly exporting SQLite constants multiple times from libsqlite3-sys.
FromSql and ToSql impls for isize. Documents why usize and u64 are not included.Nothing published for this version
Nothing published for this version
Updates the bundled SQLite version to 3.17.0.
bundled SQLite version to 3.17.0.bindgen. This should improve
build times and no longer require a new-ish Clang. See the README for more
details.This check can be skipped by calling the unsafe function rusqlite::bypass_sqlite_initialization(). This is technically a breaking change but is unlike…
ErrorCode enum from libsqlite3-sys.version() and version_number() functions for querying the version of SQLite in use.limits feature, exposing limit() and set_limit() methods on Connection.libsqlite3-sys 0.7.0, which runs rust-bindgen at build-time instead of assuming the
presence of all expected SQLite constants and functions.rusqlite::bypass_sqlite_initialization(). This is
technically a breaking change but is unlikely to affect anyone in practice, since prior to this
version the check that rusqlite was using would cause a segfault if linked against a SQLite
older than 3.7.0.rusqlite::bypass_sqlite_version_check().libc dependency in favor of using std::os::rawAdd impls of Clone, Debug, and PartialEq to ToSqlOutput.
Clone, Debug, and PartialEq to ToSqlOutput.* Update dependencies.
Make ToSqlOutput itself implement ToSql.
ToSqlOutput itself implement ToSql.Bugfix: The FromSql impl for i32 now returns an error instead of truncating if the underlying SQLite value is out of i32's range.
FromSql impl for i32 now returns an error instead of
truncating if the underlying SQLite value is out of i32's range.FromSql and ToSql impls for i8, i16, u8, u16, and u32.
i32 and i64 already had impls. u64 is omitted because their range
cannot be represented by i64, which is the type we use to communicate with
SQLite.BREAKING CHANGE: Connection::close() now returns a Result<(), (Connection, Error)> instead of a Result<(), Error> so callers get the still-open connec…
Connection::close() now returns a Result<(), (Connection, Error)> instead
of a Result<(), Error> so callers get the still-open connection back on failure.Nothing published for this version
Nothing published for this version
BREAKING CHANGE: The FromSql trait has been redesigned. It now requires a single, safe method instead of the previous definition which required implem…
FromSql trait has been redesigned. It now requires a single, safe
method instead of the previous definition which required implementing one or two unsafe
methods.ToSql trait has been redesigned. It can now be implemented without
unsafe, and implementors can choose to return either borrowed or owned results.query_row, query_row_and_then, query_row_safe,
and query_row_named now expects a &Row instead of a Row. The vast majority of calls
to these functions will probably not need to change; see
https://github.com/jgallagher/rusqlite/pull/184.Error enum have sprouted additional information
(e.g., FromSqlConversionFailure now also includes the column index and the type returned
by SQLite).#[deprecated(since = "...", note = "...")] flags (new in Rust 1.9 for libraries) to
all deprecated APIs.query_row convenience function to Statement.bundled feature which will build SQLite from source instead of attempting to link
against a SQLite that already exists on the system.DatabaseBusy; see https://github.com/jgallagher/rusqlite/issues/186.Nothing published for this version
Fixes an incorrect failure from the insert() convenience function when back-to-back inserts to different tables both returned the same row ID (#171).
insert() convenience function when back-to-back inserts to
different tables both returned the same row ID
(#171).BREAKING CHANGE: Rows no longer implements Iterator. It still has a next() method, but the lifetime of the returned Row is now tied to the lifetime of…
Rows no longer implements Iterator. It still has a next() method, but
the lifetime of the returned Row is now tied to the lifetime of the vending Rows object.
This behavior is more correct. Previously there were runtime checks to prevent misuse, but
other changes in this release to reset statements as soon as possible introduced yet another
hazard related to the lack of these lifetime connections. We were already recommending the
use of query_map and query_and_then over raw query; both of those still return handles
that implement Iterator.Transaction::savepoint() now returns a Savepoint instead of another
Transaction. Unlike Transaction, Savepoints can be rolled back while keeping the current
savepoint active.Connection or savepoints from a Transaction
now take &mut self instead of &self to correctly represent that transactions within a
connection are inherently nested. While a transaction is alive, the parent connection or
transaction is unusable, so Transaction now implements Deref<Target=Connection>, giving
access to Connection's methods via the Transaction itself.Transaction::set_commit and Transaction::set_rollback have been replaced
by Transaction::set_drop_behavior.Connection::prepare_cached. Connection now keeps an internal cache of any statements
prepared via this method. The size of this cache defaults to 16 (prepare_cached will always
work but may re-prepare statements if more are prepared than the cache holds), and can be
controlled via Connection::set_prepared_statement_cache_capacity.query_map_named and query_and_then_named to Statement.insert convenience method to Statement which returns the row ID of an inserted row.exists convenience method returning whether a query finds one or more rows.serde_json crate. Requires the serde_json feature.chrono crate. Requires the chrono feature.load_extension feature from libsqlite3-sys. load_extension is still available
on rusqlite itself.trace feature.clippy feature and addresses issues it found.column_count() method to Statement and Row.types::Value for dynamic column types.functions Cargo feature).RowIndex trait allowing columns to be fetched via index (as before) or name (new).ZeroBlob type under the blob module/feature exposing SQLite's zeroblob API.handle() method to Connection. Please file an issue if you actually use it.Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →