Limbo: A complete rewrite of SQLite in Rust
Motivation and Goals
- Limbo is a from-scratch Rust reimplementation of SQLite, not a C fork, with goals of:
- Full SQL and file-format compatibility (at least initially).
- Memory safety, async I/O, and WASM as first‑class targets.
- Built‑in Deterministic Simulation Testing (DST), inspired by FoundationDB/TigerBeetle.
- Some see strong motivation for a memory‑safe SQLite‑compatible engine, especially given SQLite’s closed development model and proprietary “best” test suite.
- Others argue SQLite is already exceptionally high quality and the last C project that “needs” a rewrite; many worse C codebases exist.
Performance and Language Choice
- The blog cites a microbenchmark where Limbo is ~20% faster than SQLite on a trivial SELECT; critics say:
- Single microbenchmarks on incomplete code are not meaningful.
- Missing features and checks often explain early wins.
- Supporters counter that:
- Matching or approaching SQLite performance this early shows no inherent Rust penalty.
- Modern storage and CPUs make language and architecture choices more important than “I/O dominates anyway”.
Compatibility, Forking, and Features
- SQLite does not accept substantial external patches and uses a “cathedral” model; this is cited as a reason for independent reimplementations.
- Limbo/libSQL are seen as “hard” forks in spirit, since they plan MVCC and other semantics that likely break ABI/shared‑memory compatibility.
- There is interest in cleaning up SQLite “baggage” (loose typing, opt‑in foreign keys), but this conflicts with strict backward compatibility; tension here is unresolved.
Licensing and Openness
- SQLite is public domain; Limbo is MIT and explicitly not public domain.
- Debate centers on:
- Whether public domain counts as “open source”.
- Legal uncertainty of PD in some jurisdictions vs. clarity and attribution of MIT.
- Ethics of creating more restrictively licensed derivatives of PD code.
Testing, Reliability, and Certification
- SQLite’s extensive proprietary test suite (aiming at 100% MC/DC coverage) is both admired and criticized:
- Admired as a reliability model and revenue source (support, certification).
- Criticized because forks cannot easily reach parity.
- Some note Rust’s safety guarantees change the calculus for needing that level of C‑oriented testing.
Maturity, Ecosystem, and Practical Concerns
- Limbo is very early; many SQL features are missing, and basic operations can still panic.
- Concerns raised:
- Feature parity may take years; “first 90% vs second 90%” problem.
- Binary size (Limbo ~6MB vs SQLite ~1.6MB) matters for embedded use.
- Ecosystem fragmentation (SQLite, libSQL, DuckDB, etc.) adds cognitive load for users.