Skip to content

v2.8.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 21:50
d746dc6

✨ Features

  • .ipc.open options dict with a compress threshold
  • one framing per distinct subscriber compression policy

🐛 Bug fixes

  • order integer partitions by value; reject names past int64
  • reject integer partition names past int64 as corrupt
  • establish type contracts and repair narrow group outputs
  • preserve dense grouping with full default worker pool
  • chunk-zone all-fail arms must keep null rows for NE / LT / LE
  • reset call_lambda's cached self sym ID with the runtime
  • re-place the upsert key map from a chain start when it grows
  • address grouped query audit regressions
  • synchronize parallel sortedness detection
  • clarify atomic pointer declarations for cppcheck
  • validate all option key forms, restore compressed-frame coverage
  • derive the radix key width against keys[0] in every task
  • keep every aggregate column when a grouped select matches no row
  • run dispatch_n past the task ring in rounds instead of dropping tasks
  • keep literal projection columns when a grouped select matches no row
  • don't deref a declined upsert key map; correct agg-v2 doc
  • keep equal keys in source order on every sort path
  • emit index rows and pivot columns in first-seen order
  • pearson_corr must be null when a side has no variance
  • keep the first-seen order compaction serial rather than relying on it
  • numerically stable grouped variance and stddev
  • a framing failure must not drop subscribers or report success
  • admit a symbol-vector by: to the count-distinct rewrite
  • admit only elementwise key expressions to the per-symbol path; name a computed key consistently
  • probe before allocating, reject quoted column names, keep the key name off an output alias
  • rename only an expression key — a bare column symbol keeps its name
  • per-symbol key path — shadow-aware allowlist, route counter, right-sized probe
  • mask the probe's first slot; cap the slot count at int32

⚡ Performance

  • put per-query scratch on the buddy heap, gate the filter gather dispatch (#531)
  • drop the per-query SYM null scan for null-safe comparisons (#533)
  • complete typed query fast paths
  • replace stale direct-cache blocks within the byte budget
  • write a keyed upsert of a vector payload column by column (#535)
  • carry the key hash in the upsert map slot and grow from the slots
  • share grouping work across aggregate families
  • parallelize dominant-group consumers
  • balance grouped consumers and reduce scratch work
  • reduce shared directory allocation and first-touch contention
  • specialize native validity and balance small dense tasks
  • emit native results across streaming aggregates
  • complete mixed scatter records in bounded chunks
  • split medium rank groups at the parallel grain
  • batch-intern SYM decode, frame buffers on the buddy heap
  • never compress loopback and UNIX-domain links
  • stable bucket scatter for STR keys instead of the in-place swap
  • cache SYM id -> (bytes, len) per thread when encoding
  • evaluate a single-SYM-column group key once per distinct symbol
  • bail out of the per-symbol key path after one block on a near-unique column

📚 Documentation

  • record grouping acceptance evidence
  • finalize grouping scaling validation
  • record audit remediation validation
🔧 Maintenance & internal
  • test(expr): drive fused_pred zone arms per row now that dev admits nullable numerics
  • test(journal): cover snapshot function restart
  • test(aggr): verify dense keys without assuming output order
  • test(ipc): wire-level characterization before the server refactor
  • refactor(ipc): delete the second server implementation
  • test(group): drive the fused count-distinct kernel with nulls and floats
  • test: count-distinct vector by — build the probe index list with (list …), not a mixed vector literal

Full changelog: v2.7.0...v2.8.0