Skip to content

Show HN: Timelog – C-native, fast, in-memory LSM-style time index for Python

github.com/VldChk
1 pointvld_chkdiscuss
On HN

I built *Timelog*, a Python library for time-indexed workloads with a C17 core and CPython bindings. My goal was to make [t1, t2) as first-class citizens and enable fast workloads under out-of-boundary semantics.

- PyPI package: `timelog-lib` - Import: `from timelog import Timelog` - Model: in-memory, LSM-inspired layered index, timeseries queries as first-class citizens - Query semantics: half-open ranges `[t1, t2)`, snapshot-consistent reads, zero-copy views - Correctness focus: sequenced range deletes, so insert → delete → reinsert behaves correctly - Concurrency model: single writer, concurrent readers - Complexity: ~O(1) insert; O(log N + M) with bounded fanout range queries; ~O(log N) point lookup; O(C) deletion where C is number of overlapping active tombstones - Benchmarks: in C engnine-only benchmarks Timelog reaches 20M+ inserts/sec; ~1M/sec range scans. Python end-to-end throughput is constraint by Python object creation

Install: ```bash pip install timelog-lib # or uv add timelog-lib ```

Quick example: ```python from timelog import Timelog

log = Timelog(time_unit="ms") log.append(1772964242, "A") del log[1772964244] # log.delete() log.append(1772964246, [39, "B"]) print(log[1772964246]) # [[39, 'B']] print(list(log[1772964242:1772964246])) # [(1772964242, 'A')] ```

V1 limitations: - No in-built flush-to-disk/read-from-disk method (persistent copy) - `.copy()` and `.copy(deep=True)` not supported yet.

I’d value feedback on API design, semantics clarity, and where this fits vs existing options.

Comments

No comments yet.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.