Limbo is a project to build the next evolution of SQLite.
Find a file
2024-07-08 22:18:12 +03:00
.github/workflows github: First build things, then test 2024-06-19 16:32:24 +03:00
bindings/wasm Initial pass on deterministic simulator 2024-06-27 18:32:04 +03:00
cli Merge pull request #104 from KunalSin9h/dot-commands 2024-07-08 20:51:50 +03:00
core add max aggregate function 2024-07-09 02:45:34 +08:00
docs Update compatibility matrix and changelog 2024-07-08 22:18:12 +03:00
simulator Remove unused lifetime parameter 2024-07-03 11:40:08 +03:00
sqlite3 fix: lint warnings 2024-07-08 22:43:11 +05:30
testing add max aggregate function 2024-07-09 02:45:34 +08:00
.gitignore fix: replace unwrap() with ? 2024-07-07 19:12:48 +08:00
Cargo.lock Merge pull request #90 from crrow/topic/fix-error-handling-for-invalid-file 2024-07-07 14:19:47 +03:00
Cargo.toml Initial pass on deterministic simulator 2024-06-27 18:32:04 +03:00
CHANGELOG.md Update compatibility matrix and changelog 2024-07-08 22:18:12 +03:00
CONTRIBUTING.md Add helper guide for contributors 2024-07-06 08:48:28 +03:00
LICENSE.md License 2024-05-07 16:33:44 -03:00
limbo.png Limbo mascot 2024-07-05 09:51:56 +03:00
Makefile Merge pull request #99 from vivek378521/improve-makefile 2024-07-08 08:58:13 +03:00
README.md Tweak mascot size 2024-07-05 09:52:29 +03:00

Limbo

Limbo

Limbo is a work-in-progress, in-process OLTP database management system, compatible with SQLite.

Build badge MIT


Features

  • In-process OLTP database engine library
  • Asynchronous I/O support with io_uring
  • SQLite compatibility
    • SQL dialect support (wip)
    • File format support (read-only)
    • SQLite C API (wip)
  • JavaScript/WebAssembly bindings (wip)

Getting Started

Limbo is currently read-only. You can either use the sqlite3 program to create a database:

$ sqlite3 database.db
SQLite version 3.42.0 2023-05-16 12:36:15
Enter ".help" for usage hints.
sqlite> CREATE TABLE users (id INT PRIMARY KEY, username TEXT);
sqlite> INSERT INTO users VALUES (1, 'alice');
sqlite> INSERT INTO users VALUES (2, 'bob');

or use the testing script to generate one for you:

./testing/gen-database.py

You can then start the Limbo shell with:

$ cargo run database.db
Welcome to Limbo SQL shell!
> SELECT * FROM users LIMIT 1;
|1|Cody|Miller|mhurst@example.org|525.595.7319x21268|33667 Shaw Extension Suite 104|West Robert|VA|45161|`

Developing

Run tests:

cargo test

Test coverage report:

cargo tarpaulin -o html

Run benchmarks:

cargo bench

Run benchmarks and generate flamegraphs:

echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
cargo bench --bench benchmark -- --profile-time=5

Publications

  • Pekka Enberg, Sasu Tarkoma, Jon Crowcroft Ashwin Rao (2024). Serverless Runtime / Database Co-Design With Asynchronous I/O. In EdgeSys 24. [PDF]
  • Pekka Enberg, Sasu Tarkoma, and Ashwin Rao (2023). Towards Database and Serverless Runtime Co-Design. In CoNEXT-SW 23. [PDF] [Slides]

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Limbo by you, shall be licensed as MIT, without any additional terms or conditions.