0
0
mirror of https://github.com/tursodatabase/libsql.git synced 2024-11-21 15:45:20 +00:00
libSQL is a fork of SQLite that is both Open Source, and Open Contributions.
Go to file
2024-11-20 14:02:00 +00:00
.cargo Fix sqld test (#1579) 2024-07-19 17:17:11 +00:00
.config Fix sqld test (#1579) 2024-07-19 17:17:11 +00:00
.github tests: harden encryption tests 2024-09-10 09:57:04 -04:00
bindings Add statement reset to libsql_reset_stmt C binding 2024-08-31 22:07:36 +02:00
bottomless bottomless: add upload on shutdown skip option 2024-10-09 10:54:46 -04:00
bottomless-cli slightly rework approach with namespace parameter in CLI and introduce --db-name optional argument 2024-08-26 17:22:12 +04:00
docker-compose make sqld compile 2023-10-17 17:41:26 +02:00
docs Merge pull request #1796 from jwetzell/fix-docker-readme 2024-11-14 21:19:34 +00:00
libsql libsql: fix feature flag for http connector and sync 2024-11-19 13:25:23 -05:00
libsql-ffi Revert "Merge pull request #1791 from awakecoding/libsql-ffi-build-cp-fix" 2024-11-15 10:55:30 +02:00
libsql-hrana libsql: prepare v0.4.0 release (#1469) 2024-06-11 14:27:13 +00:00
libsql-replication libsql-{sqlite3,ffi}: Add xReadFrameRaw() to the virtual WAL API 2024-10-29 13:30:27 +02:00
libsql-server rename variables a bit 2024-11-07 00:43:54 +04:00
libsql-shell Add support for .load command 2023-12-12 15:12:31 +05:30
libsql-sqlite3 Merge pull request #1788 from tursodatabase/wal-api 2024-11-11 12:00:39 +00:00
libsql-storage libsql-{sqlite3,ffi}: Add xReadFrameRaw() to the virtual WAL API 2024-10-29 13:30:27 +02:00
libsql-storage-server Improve error handling 2024-07-31 20:28:21 +05:30
libsql-sys libsql-{sqlite3,ffi}: Add xReadFrameRaw() to the virtual WAL API 2024-10-29 13:30:27 +02:00
libsql-wal libsql-{sqlite3,ffi}: Add xReadFrameRaw() to the virtual WAL API 2024-10-29 13:30:27 +02:00
tools Fuzz parser (#1205) 2024-03-13 10:17:31 +00:00
vendored libsql: prepare v0.6.0 release 2024-09-20 15:36:46 -04:00
xtask tests: harden encryption tests 2024-09-10 09:57:04 -04:00
.dockerignore Ignore SQLite3MultipleCiphers build folder during Docker build (#941) 2024-01-24 16:55:26 +00:00
.env server: fix SIGTERM shutdown process 2023-11-16 11:49:13 -05:00
.gitignore React Native support (#1423) 2024-06-25 17:39:27 +00:00
.gitmodules un-submodule SQLite3MultipleCiphers: 1.8.1 2024-01-09 18:12:03 +01:00
Cargo.lock libsql: Switch to hyper for local offline sync-switch-hyper 2024-11-19 10:11:25 -05:00
Cargo.toml libsql: prepare v0.6.0 release 2024-09-20 15:36:46 -04:00
CODE_OF_CONDUCT.md Fix mistakenly moved CODE_OF_CONDUCT.md from libsql-sqlite3 to root dir 2023-11-05 13:18:41 +09:00
CONTRIBUTING.md Update CONTRIBUTING.md 2024-07-25 12:33:12 +03:00
docker-entrypoint.sh fix docker-entry point http basic auth (#1098) 2024-02-27 21:03:21 +00:00
docker-wrapper.sh use gosu instead of native docker USER in the entrypoint (#1590) 2024-07-24 07:50:59 +00:00
Dockerfile add bottomless-cli in the final sqld docker image 2024-08-26 12:18:27 +04:00
Dockerfile.dev use gosu instead of native docker USER in the entrypoint (#1590) 2024-07-24 07:50:59 +00:00
Dockerfile.musl libsql: fix musl builds failing due to fcntl64 2024-09-09 13:40:44 -04:00
fly.toml make sqld compile 2023-10-17 17:41:26 +02:00
LICENSE.md make sqld compile 2023-10-17 17:41:26 +02:00
README-libsql.md fix readme: go-libsql link (#1367) 2024-05-02 07:29:02 +00:00
README.md Update Dataflare description 2024-08-05 15:40:04 +08:00
rust-toolchain.toml add missing wal-toolkit tools 2024-09-17 16:50:08 +02:00

libSQL by Turso

libSQL

libSQL is an open source, open contribution fork of SQLite, created and maintained by Turso.

libSQL Docs · libSQL Manifesto · Turso · Turso Docs · Discord · Blog & Tutorials

MIT discord activity phorm.ai


Documentation

We aim to evolve it to suit many more use cases than SQLite was originally designed for, and plan to use third-party OSS code wherever it makes sense.

libSQL has many great features, including:

  • Embedded replicas that allow you to have replicated database inside your app.
  • libSQL server for remote SQLite access, similar to PostgreSQL or MySQL
  • Supports Rust, JavaScript, Python, Go, and more.

There are also various improvements and extensions to the core SQLite:

The comprehensive description can be found here

Official Drivers

Experimental Drivers

  • Python (experimental)
  • C (experimental)

Community Drivers

  • PHP
  • D (experimental, based on the C driver)

GUI Support

Getting Started

The project provides two interfaces: the libSQL API, which supports all the features, and the SQLite C API for compatibility.

To build the SQLite-compatible C library and tools, run:

cargo xtask build

To run the SQL shell, launch the libsql program:

$ cd libsql-sqlite3 && ./libsql
libSQL version 0.2.1 (based on SQLite version 3.43.0) 2023-05-23 11:47:56
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
libsql>

Docker

To run libSQL using docker, refer to the Docker Docs

Why a fork?

SQLite has solidified its place in modern technology stacks, embedded in nearly any computing device you can think of. Its open source nature and public domain availability make it a popular choice for modification to meet specific use cases.

But despite having its code available, SQLite famously doesn't accept external contributors and doesn't adhere to a code of conduct. So community improvements cannot be widely enjoyed.

There have been other forks in the past, but they all focus on a specific technical difference. We aim to be a community where people can contribute from many different angles and motivations.

We want to see a world where everyone can benefit from all of the great ideas and hard work that the SQLite community contributes back to the codebase. Community contributions work well, because weve done it before. If this was possible, what do you think SQLite could become?

You can read more about our goals and motivation in our product vision.

Compatibility with SQLite

Compatibility with SQLite is of great importance for us. But it can mean many things. So here's our stance:

  • The file format: libSQL will always be able to ingest and write the SQLite file format. We would love to add extensions like encryption, and CRC that require the file to be changed. But we commit to always doing so in a way that generates standard sqlite files if those features are not used.
  • The API: libSQL will keep 100% compatibility with the SQLite API, but we may add additional APIs.
  • Embedded: SQLite is an embedded database that can be consumed as a single .c file with its accompanying header. libSQL will always be embeddable, meaning it runs inside your process without needing a network connection. But we may change the distribution, so that object files are generated, instead of a single .c file.

License

libSQL is licensed under an Open Source License, and we adhere to a clear Code of Conduct.