All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.15.0 - 2026-02-22
- All connectors enabled: Kafka, WebSocket, PostgreSQL CDC, PostgreSQL sink, MySQL CDC, Delta Lake, Iceberg, Parquet Lookup
- DuckDB-style API on
QueryResult:df(),pl(lazy=False),arrow()— DataFrame conversion aliasesfetchall(),fetchone(),fetchmany(size)— row-oriented fetch methodsshow(max_rows=20)— terminal preview_repr_html_()— Jupyter notebook HTML rendering__len__(),__iter__()—len(result)andfor row in result
- DuckDB-style API on
Connection:sql(query)— alias forquery()tables()— alias forlist_tables()materialized_views()— alias forlist_streams()explain(query)— query execution planstats(table)— table statistics as dict
- New exceptions:
StreamError,CheckpointError,ConnectorError(all subclassLaminarError) - Python wrapper types (
laminardb.types):Schema,Column,TableStats,Watermark,CheckpointStatus,MetricsChangeRow,ChangeEvent— structured change data captureMaterializedView— high-level stream wrapper withquery(),subscribe(),schema()
- Module-level functions:
laminardb.sql(),laminardb.execute(),laminardb.mv()with thread-safe default connection - Aliases:
Config = LaminarConfig,BatchWriter = Writer - Benchmarks: ingestion, query, and streaming throughput benchmarks
- Examples:
quickstart.py(DuckDB-style API),streaming_analytics.py(MaterializedView pattern)
- CI workflows now clone the laminardb monorepo for local path dependencies
- CI test matrix updated to Python 3.11+ (matches abi3-py311 build target)
maturin developin CI now runs inside a virtualenvschema()andquery()now work correctly for streams
- Minimum Python version is now 3.11 (was 3.10) to match the
abi3-py311stable ABI target
0.1.0 - 2026-02-08
- Connection management:
open(path)andconnect(uri)with context manager support - Configuration:
LaminarConfigwithbuffer_size,storage_dir,checkpoint_interval_ms - Schema operations:
create_table(),list_tables(),list_streams(),list_sinks(),schema(),execute() - Data ingestion from 10 input types:
- Python dicts (single row, list of rows, columnar)
- pandas DataFrame, polars DataFrame
- pyarrow RecordBatch, pyarrow Table
- JSON string (
insert_json()), CSV string (insert_csv()) - Any object implementing
__arrow_c_stream__(zero-copy)
- Streaming writer with context manager,
insert(),flush(),close(),watermark(),current_watermark - SQL queries with
query()and streamingstream()iterator - ExecuteResult: rich DDL/DML introspection with
result_type,ddl_type,ddl_object,rows_affected,int(),bool()coercion - Result export to 6 output formats:
to_arrow()→ pyarrow.Tableto_pandas()→ pandas.DataFrameto_polars()→ polars.DataFrameto_dicts()→ columnar dictto_df()→ auto-detect best library__arrow_c_stream__→ zero-copy Arrow PyCapsule
- Subscriptions: sync (
subscribe()) and async (subscribe_async()) continuous queries- Iterator/async iterator protocols
try_next()non-blocking poll (sync)is_activeproperty,cancel()method
- Named stream subscriptions:
subscribe_stream()/subscribe_stream_async()with schema access,next_timeout(ms),try_next() - Catalog introspection:
sources(),sinks(),streams(),queries()returning typed info objects - Pipeline control:
start(),shutdown(),checkpoint(),cancel_query() - Pipeline metrics:
metrics(),topology(),source_metrics(),stream_metrics(), per-source/stream observability - Connection properties:
is_closed,pipeline_state,pipeline_watermark,total_events_processed,source_count,sink_count,active_query_count,is_checkpoint_enabled - Async context manager:
async with conn as db: ... - Exception hierarchy:
LaminarErrorbase withConnectionError,QueryError,IngestionError,SchemaError,SubscriptionError - Error codes: numeric
.codeattribute on all exceptions,laminardb.codesmodule with 44 constants - PEP 561 type stubs with
py.typedmarker (800+ lines, passesmypy --strict) - GIL release on all blocking operations via
py.allow_threads() - Free-threaded Python support (all pyclasses are
Send + Sync) - CI/CD pipeline: lint, test (Python 3.11-3.13), type check, multi-platform wheel builds
- PyPI trusted publishing via OIDC
- Linux x86_64, aarch64
- macOS x86_64, aarch64 (Apple Silicon)
- Windows x86_64