#sqlite #minimalist #tiny #api #variant #amalgamation #ships

sqlite-tiny

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

2 releases

0.1.1 Feb 19, 2024
0.1.0 Feb 19, 2024

#899 in Database interfaces

Download history 214/week @ 2024-02-16 46/week @ 2024-02-23 6/week @ 2024-03-01 9/week @ 2024-03-08 3/week @ 2024-03-15 85/week @ 2024-03-22 18/week @ 2024-03-29

115 downloads per month

BSD-2-Clause OR MIT

9MB
173K SLoC

C 170K 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