Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 39 additions & 45 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down Expand Up @@ -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
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "DatabentoAPI"
uuid = "feb0aed8-3291-460b-9688-521dcb17a4bf"
version = "0.1.2"
version = "0.1.1"
authors = ["Tyler Beason <tbeas12@gmail.com>"]

[deps]
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
Loading