From 5cf4baf9c7555fe2bc573de443ee80ecb17e6bb9 Mon Sep 17 00:00:00 2001 From: Tyler Beason Date: Tue, 26 May 2026 13:28:08 -0500 Subject: [PATCH] Release v0.1.1: consolidate post-0.1.0 work into one version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We never tagged the intermediate 0.1.1 / 0.1.2 versions in git or pushed them to the registry, so Registrator AutoMerge would flag a 0.1.0 → 0.1.2 jump. This consolidates every unreleased change since v0.1.0 (the rename, unified-Live multi-schema streaming, exponential backoff, live capture durability, do-block APIs, Documenter site, CHANGELOG) under a single 0.1.1 release. Bumps Project.toml version 0.1.2 → 0.1.1, rewrites CHANGELOG so the 0.1.1 entry contains every Added/Changed/Fixed bullet from the prior 0.1.1 + 0.1.2 + Unreleased sections, and updates the README status line. Co-Authored-By: Claude Opus 4.7 --- CHANGELOG.md | 84 ++++++++++++++++++++++++---------------------------- Project.toml | 2 +- README.md | 2 +- 3 files changed, 41 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bce5b91..980e328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,67 +7,62 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Added -- Documenter.jl documentation site at https://tbeason.github.io/DatabentoAPI.jl. -- This `CHANGELOG.md`. -- Docstrings for every exported function/type (`to_csv`/`to_json`/`to_parquet`, - the `BentoError` hierarchy, the historical metadata/batch/symbology - endpoints, and every DatabentoAPI-specific enum). - -### Changed -- `README.md` slimmed and reorganised; long examples migrated into the - Documenter guides. +## [0.1.1] - 2026-05-26 -## [0.1.2] - 2026-05-26 +First release after v0.1.0. Bundles all work since the initial registry tag — +the dependency rename, the unified-Live multi-schema streaming refactor, live +capture durability features, and the Documenter.jl site. ### Added -- `Live(f, args...; kwargs...) do client … end` do-block constructor (mirrors - `Base.open`) — guarantees `close(client)` on `Ctrl-C`, exceptions, or +- **Live do-block constructor.** `Live(f, args...; kwargs...) do client … end` + mirrors `Base.open` — guarantees `close(client)` on `Ctrl-C`, exceptions, or normal exit. The manual `connect! → subscribe! → start! → close` lifecycle still works unchanged. -- `open_dbn_writer(f; kwargs...) do writer … end` and `write_record!(writer, - rec)` — public do-block file writer for custom subscribe-and-iterate - loops, with the same crash-safety features `stream_to_file` uses - internally. -- In-file zstd frame rotation in `RotatingDBNFile`, controlled by the new +- **`open_dbn_writer` + `write_record!`** — public do-block file writer for + custom subscribe-and-iterate loops, with the same crash-safety features + `stream_to_file` uses internally. +- **In-file zstd frame rotation** in `RotatingDBNFile`, controlled by the new `frame_seconds` kwarg on `stream_to_file` / `stream_multi_to_files` (default `60.0`). Multi-frame `.dbn.zst` is standards-compliant; a hard kill loses ≤ one frame of records instead of corrupting the whole file. Pass `nothing` to write a single frame. -- Full-jitter exponential backoff on reconnect (1s base, 60s cap) with a +- **Full-jitter exponential backoff on reconnect** (1s base, 60s cap) with a configurable `max_reconnect_attempts` (default 10, `nothing` = unlimited). - -### Changed -- `SymbolMappingMsg` records are now written to the `.dbn.zst` capture file - via `_write_record!`. Previously they were dropped on the floor due to a - v1→v3 encoder layout bug; that bug is fixed upstream in - [DatabentoBinaryEncoding 0.1.1](https://github.com/tbeason/DatabentoBinaryEncoding.jl/pull/21) - and compat has been raised to `"0.1.1"`. -- `Base.close(::Live)` hardened: flag-flip happens up-front so re-entry is a - no-op; channel cleanup runs unconditionally so a single bad close doesn't - strand the others. -- `stream_to_file` internally uses `open_dbn_writer` (dogfooding the new API). - -### Fixed -- Backoff sleep is now interruptible by the deadline / shutdown signal at - 0.5s granularity, so `duration_s` is honoured even if the deadline is - crossed mid-backoff. - -## [0.1.1] - 2026-05-22 +- **Unified-Live multi-schema streaming** (#12): one TCP connection serves N + schemas via per-schema typed channels, routed to per-schema files by + `stream_multi_to_files`. The gateway dedupes `SymbolMappingMsg` within a + connection, halving the mapping-record count on multi-schema captures. +- **Documenter.jl documentation site** at + https://tbeason.github.io/DatabentoAPI.jl — home, install, quick start, + five user guides (Authentication, Historical, Live, Capture, Conversion), + per-topic API reference, performance, and troubleshooting pages. +- `CHANGELOG.md` (this file). +- Docstrings for every exported function/type — `to_csv`/`to_json`/`to_parquet`, + the `BentoError` hierarchy, the historical metadata/batch/symbology + endpoints, and every DatabentoAPI-specific enum. ### Changed - **Renamed dependency:** `DBN.jl` → `DatabentoBinaryEncoding.jl` (#13). Adopted the new package name; updated `[compat]` and all `import DBN` sites. Re-exports of `Schema`, `SType`, `Compression`, `Encoding`, `Action`, `Side`, `InstrumentClass` keep user code source-compatible. - -### Added -- Unified-Live multi-schema streaming (#12): one TCP connection serves N - schemas via per-schema typed channels, routed to per-schema files by - `stream_multi_to_files`. The gateway dedupes `SymbolMappingMsg` within a - connection, halving the mapping-record count on multi-schema captures. + Compat bumped to `DatabentoBinaryEncoding = "0.1.1"` (required for the + `SymbolMappingMsg` write path below). +- **`SymbolMappingMsg` records are now written to the `.dbn.zst` capture + file** via `_write_record!`. Previously they were dropped on the floor + due to a v1→v3 encoder layout bug; that bug is fixed upstream in + [DatabentoBinaryEncoding 0.1.1](https://github.com/tbeason/DatabentoBinaryEncoding.jl/pull/21). +- **`Base.close(::Live)` hardened:** flag-flip happens up-front so re-entry + is a no-op; channel cleanup runs unconditionally so a single bad close + doesn't strand the others. +- `stream_to_file` internally uses `open_dbn_writer` (dogfooding the new API). +- `README.md` slimmed and reorganised; long examples migrated into the + Documenter guides. ### Fixed +- Backoff sleep is now interruptible by the deadline / shutdown signal at + 0.5s granularity, so `duration_s` is honoured even if the deadline is + crossed mid-backoff. - `stream_to_file` no longer hangs when a mock TCP gateway closes its half of the socket mid-stream — the reader now treats mid-stream `EOFError` as a clean end-of-stream (#11). @@ -108,7 +103,6 @@ Initial public release. Registered in the General registry. `ReconnectPolicy`, `JobState`, `SplitDuration`, `Packaging`, `Delivery`, `SymbologyResolution`, `RollRule`, `SlowReaderBehavior`. -[Unreleased]: https://github.com/tbeason/DatabentoAPI.jl/compare/v0.1.2...HEAD -[0.1.2]: https://github.com/tbeason/DatabentoAPI.jl/compare/v0.1.1...v0.1.2 +[Unreleased]: https://github.com/tbeason/DatabentoAPI.jl/compare/v0.1.1...HEAD [0.1.1]: https://github.com/tbeason/DatabentoAPI.jl/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/tbeason/DatabentoAPI.jl/releases/tag/v0.1.0 diff --git a/Project.toml b/Project.toml index 90caf57..603c9b7 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "DatabentoAPI" uuid = "feb0aed8-3291-460b-9688-521dcb17a4bf" -version = "0.1.2" +version = "0.1.1" authors = ["Tyler Beason "] [deps] diff --git a/README.md b/README.md index 06589d3..abd4eb5 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ for details. ## Status -Current version: **0.1.2**. Offline test suite: **1500+ tests**, ~30 s. +Current version: **0.1.1**. Offline test suite: **1500+ tests**, ~30 s. Live-network smoke tests are gated behind `DATABENTO_LIVE_TESTS=1`. See [CHANGELOG.md](CHANGELOG.md) for the full release history.