Repository navigation
Immutable
release. Only release title and notes can be modified.
Added
lakekit-core: loko'sStore,Clock, andRandomservices with their test and native implementations
(TokioClockwith featuretokio,OsRandomwith featuregetrandom);Services, the three borrowed
together for commits; oneErrortype, which a store's error converts into.lakekitfeatureobject-store: aStoreover anobject_storeclient (S3, GCS, Azure, local files, memory),
from a client or a URL (loko-object-store).lakekit-iceberg: Iceberg table metadata, schemas, partition specs, manifest lists, and manifests read for format
versions 1 to 3, including delete files and deletion vector references; values in Iceberg's single-value encoding.lakekit-icebergfeaturewrite: format v2 manifests, manifest lists, and metadata updates, and commits to
file-system tables with options (CommitOptions) and hooks (CommitHooks). A writer whose clock is behind the
table's last update dates its commit at that update, so the snapshot log stays in order.lakekit-icebergfeaturesarrow(schemas as Arrow schemas with field ids) andparquet-stats(a data file's
Iceberg statistics from its Parquet footer; a bound or null count only when every row group gives it exactly, and
decimals as Iceberg's shortest big-endian bytes).lakekit: re-exports the format crates behind a feature each.
Changed
- The project is named lakekit, and its crates
lakekit-core,lakekit-iceberg, andlakekit; it was lakebed
(lakebed-core, …) until 2026-10-21. Nothing was published under the old names; GitHub redirects the old
repository URL. - The I/O boundary is three traits,
Store(objects),Clock(the time and a timer), andRandom(random numbers),
instead of oneHost;MemoryHostisMemoryServices. UUIDs come from theuuidcrate. - The three traits are loko's, and
Clock::sleeptakes aDuration. The
object_storeadapter isloko-object-store, re-exported aslakekit::object_store;lakekit-object-storeis
gone (it was never published).
The Iceberg code started as Timelake's shared writer (timelake-format), made general.