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

sqlite-tiny

一个提供合并变体和微型Rust API的最小化SQLite包

7个版本 (4个破坏性更新)

0.5.0 2024年8月19日
0.4.0 2024年7月23日
0.3.0 2024年6月17日
0.2.1 2024年6月13日
0.1.1 2024年2月19日

#826数据库接口

Download history 108/week @ 2024-06-06 305/week @ 2024-06-13 25/week @ 2024-06-20 2/week @ 2024-07-04 86/week @ 2024-07-18 59/week @ 2024-07-25 7/week @ 2024-08-01 102/week @ 2024-08-15

每月204 次下载

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

欢迎来到 sqlite-tiny 🎉

这个包是一个最小化的SQLite库包,提供合并变体和微型Rust API。如果您只想嵌入SQLite库以及生成的C绑定,可以禁用 api 特性(默认启用)。

性能考虑

为了简化,这个包在以下假设下运行: malloc 是便宜的。为了保持代码的简洁和可读性,我们相当自由地分配内存和复制数据,以避免过于复杂的生命周期管理。

我们这样做的一些地方(非详尽)

  • 绑定值:由于某些值在绑定之前需要临时中间表示形式,并且语句应该能够超出传递的参数的生命周期,因此我们指示SQLite将值复制到内部缓冲区
  • 读取值:为了避免生命周期问题,我们总是在访问时立即将值从行/列复制出SQLite上下文到Rust管理的内存中

分布式SQLite版本

为了简化,这个包不链接到外部SQLite版本,而是仅在 dist-文件夹 中构建和嵌入合并。更多信息请参阅 dist/README.md

无运行时依赖