---
title: "rusqlite Breaking Changes on crates.io | Since.dev"
description: "What each rusqlite release removed, renamed or changed: 33 breaking changes in 1 version on crates.io, each with its source."
canonical_url: https://since.dev/packages/crates/rusqlite
last_updated: 2026-10-24
---

# rusqlite breaking changes

Every breaking API change we have recorded in rusqlite on crates.io: 33 breaking changes in 1 version. Below are its newest version, removals and renames first, each with its source.

Newest change October 24, 2026

## 0.41.0

33 breaking changes, first published October 24, 2026.

- **Removed** `rusqlite::Connection::profile`  

Use trace_v2 instead. [crates.io](https://crates.io/crates/rusqlite/0.41.0)
- **Removed** `rusqlite::Connection::trace`  

Use trace_v2 instead. [crates.io](https://crates.io/crates/rusqlite/0.41.0)
- **Renamed** `rusqlite::hooks::CheckpointMode`  

Use rusqlite::wal::CheckpointMode instead. [crates.io](https://crates.io/crates/rusqlite/0.41.0)
- **Behavior changed**  

The bundled SQLite build no longer enables SQLITE_ENABLE_MEMORY_MANAGEMENT, which can change memory behavior for existing code. [github.com](https://github.com/rusqlite/rusqlite/releases/tag/v0.41.0)
- **Configuration changed**  

The minimum supported SQLite version is now 3.45.3, so users linking an older SQLite must upgrade it. [github.com](https://github.com/rusqlite/rusqlite/releases/tag/v0.41.0)
- **Signature changed** `rusqlite::BindIndex`  

Was trait BindIndex: sealed::Sealed; now trait BindIndex: sealed::Sealed + Copy. [crates.io](https://crates.io/crates/rusqlite/0.41.0)
- **Signature changed** `rusqlite::blob::ZeroBlob`  

Was struct ZeroBlob(pub i32); now struct ZeroBlob(pub u64). [crates.io](https://crates.io/crates/rusqlite/0.41.0)
- **Signature changed** `rusqlite::Connection::authorizer`  

Was fn authorizer<'c, F>(&self, hook: Option<F>) -> Result<()> where F: for<'r> FnMut(AuthContext<'r>) -> Authorization + Send + 'static,; now fn authorizer<F>(&mut self, hook: Option<F>) -> Result<()> where F: for<'r>... [crates.io](https://crates.io/crates/rusqlite/0.41.0)
- **Signature changed** `rusqlite::Connection::backup`  

Was fn backup<N: Name, P: AsRef<Path>>(&self, name: N, dst_path: P, progress: Option<fn(Progress)>) -> Result<()>; now fn backup<N: Name, P: AsRef<Path>, F: Fn(Progress)>(&self, name: N, dst_path: P, progress: Option<F>) -> Result<()>. [crates.io](https://crates.io/crates/rusqlite/0.41.0)
- **Signature changed** `rusqlite::Connection::busy_handler`  

Was fn busy_handler(&self, callback: Option<fn(i32) -> bool>) -> Result<()>; now fn busy_handler<F>(&mut self, callback: Option<F>) -> Result<()> where F: FnMut(i32) -> bool + Send + 'static,. [crates.io](https://crates.io/crates/rusqlite/0.41.0)

And 23 more in this version.

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
