Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 00:26
· 53 commits to main since this release

TinyStore 0.2.0

What's new, with code in every language: https://tinyshed.org/tinystore/docs/releases/v0.2.0

bun add @tinyshed/tinystore@0.2.0
npm install @tinyshed/tinystore@0.2.0
pip install tinyshed-tinystore==0.2.0

Built for linux-x64, linux-arm64, linux-x64-musl, linux-arm64-musl, darwin-arm64, darwin-x64, win32-x64. Each archive holds the
tinystore executable in bin/, and in lib/ the core's library and the Node addon; the Go
SDK fetches its platform's at the first open. SHA256SUMS checks them all.

Changes since v0.1.1

Changed names

  • records: an event may carry an id, kept with it and read back, and an append of an id its stream holds writes nothing (REC-11). An append now says whether it wrote:

    SDK One event Several
    Rust append → Result<bool>, awaited too append_all → Result<usize>
    Bun, Node append(name, fields, options) → Promise<boolean> append(events) → Promise<number>
    Python append(name, fields, ...) → bool append(events) → int
    Go Events.Append → (bool, error) AppendMany → (int, error)

    Code that ignored the result still builds in Rust, Bun, Node and Python; Go's err := events.Append(...) becomes _, err := events.Append(...). The id is .id("…") in Rust, { id } in Bun and Node, id= in Python and records.ID("…") in Go. A store 0.1.x wrote opens as it is: records adds its table of ids at the first open.

Features

  • metrics: stream an exposition larger than one message from every sdk, written whole
  • metrics,records: cut an aggregate into days, weeks or months of a time zone's calendar, a rate counting its bucket's own seconds
  • jobs: bound each group's starts with a group rate beside the queue's, a job of a group past it waiting for its group's turn
  • metrics: write an exposition of up to 100,000 samples whole in one write, ten ingests' worth
  • config: load a rust program's settings without a store, a live setting refused by its path (CFG-10)
  • metrics: give the names an exposition writes their family's help, and its unit where their values are in it, where describe gave none
  • metrics: read prometheus 3's quoted metric and label names in an exposition, kept as they are, dots and all
  • metrics: let an ingest sent again after packing change nothing, and name what its series has packed when a sample behind it differs (MET-16)

Fixes

  • metrics: reserve the memory a prometheus text's series hold before reading it, and let each line's series go once gathered
  • config: answer an awaited config loaded without a store as the blocking one does
  • metrics: refuse an exposition's empty quoted name at its line, and say that the samples counter counts those sent again
  • records: let go of an event's id once no part its stream keeps spans the event's time or a drop of damage removed it, and print the id in tinystore logs
  • jobs: claim no job of a group rate ahead of a free handler, give a waiting job its group's next turn once, and give back the starts a failed claim counted
  • release: list the commits since the release before in its notes, which the notes never called, those marked ! first under changed names

Performance

  • jobs: read back a job's id, its lease's attempt and its spill with a select beside the write rather than returning
  • metrics: register a series without insert returning, its pairs shared with the series before and the store's count written once a write

Full history: v0.1.1...v0.2.0.