L is a columnar database and vector language in a single small binary: an interpreter, a query engine, and a storage layer with no dependencies and nothing to configure. You type a query; it runs at memory speed.
The latest release, docs, and quickstart live at lv1.sh.
Fusion. L reads whole expressions before executing them. A chain like filter, group, aggregate compiles into one pass over the data, so intermediate results are never materialized just to be thrown away.
SIMD everywhere, threads when they pay. Every kernel is written for the vector units it runs on (AVX-512 on x86-64, NEON on ARM). A cost model decides per operation whether to fan out across cores, so small queries stay on one core and large scans use the whole machine, with no tuning from you.
Compute on compressed. Columns are stored encoded, in memory and on disk, and most operations run directly on the encoded form: filters probe frame-of-reference codes, group-bys work on dictionary codes, aggregates fold closed-form over blocks. Decompression is the exception, not the rule, which means the working set stays a fraction of the raw data.
On the db-benchmark groupby suite at 50 GB (1 billion rows), L is faster than DuckDB on all ten queries, 3.1× on the geometric mean, with every result checksum validated. On the TSBS cpu workload it wins all fifteen query types against the leading commercial time-series engine, 2.4× on the geometric mean. Full tables, hardware, and methodology are in each repo.
| rust_ipc | Rust client (l-rs) |
| python_ipc | Python client, prebuilt wheels |
| bun_ipc | Bun/TypeScript client |
| arrow_interop | Apache Arrow IPC reader/writer |
| parquet_interop | Apache Parquet reader/writer |
| db-benchmark | groupby suite vs DuckDB |
| tsbs | time-series benchmark |
| master-benchmark | 135-op cross-runtime suite |
Reading: why L, compute on compressed, SIMD: making every cycle count, docs.