#sqlite #minimalist #api #tiny #variant #version #amalgamation

sqlite-tiny

A minimalistic SQLite crate which ships the amalgamation variant and provides a tiny Rust API

7 releases (4 breaking)

0.5.0 Aug 19, 2024
0.4.0 Jul 23, 2024
0.3.0 Jun 17, 2024
0.2.1 Jun 13, 2024
0.1.1 Feb 19, 2024

#751 in Database interfaces

BSD-2-Clause OR MIT

9MB
178K SLoC

C 175K SLoC // 0.3% comments Rust 3K SLoC // 0.0% comments

License BSD-2-Clause License MIT AppVeyor CI docs.rs crates.io Download numbers dependency status

sqlite-tiny

Welcome to sqlite-tiny 🎉

This crate is minimalistic SQLite library crate which ships the amalgamation variant and provides a tiny Rust API. If you just want the embedded SQLite library plus the generated C bindings, you can disable the api-feature (enabled by default).

Performance Considerations

For the sake of simplicity, this crate operates under the following assumption: malloc is cheap. To keep the code clean and readable, we are quite liberal with allocating memory and copying data to avoid overly complex life-time juggling.

Some locations where we do this are (non-exhaustive):

  • Binding values: Since some values require a temporary intermediate representation before they can be bound, and statements should be able to outlive a passed argument, we instruct SQLite to copy the values into an internal buffer
  • Reading values: To avoid lifetime troubles, we always copy a value from a row/column out of the SQLite context into Rust-managed memory immediately on access

Distriuted SQLite Version

For simplicity, this crate does not link to external SQLite versions, but exclusively builds and embeds the amalgamation in the dist-folder. For more information see dist/README.md.

No runtime deps