Skip to content

Releases: rerun-io/quiver

0.3.0

15 Jun 13:05

Choose a tag to compare

A performance-focused release: reading and iterating a validated Column now skips arrow's per-element bounds checks, plus a new record-batch constructor.

⚠️ Breaking changes

  • Replace the implicit by-value IntoIterator for Column with an explicit .into_iter_owned() (#16)

New features

  • Add Column::from_record_batch_and_name (#13)

Performance

  • Skip per-element bounds checks when iterating Column/ListValue (#15)
  • Unchecked reads for AnyList, an unchecked null probe for Option, and #[inline] on the per-element accessors (#17)

Other improvements

  • Add benchmarks (#14)

Full diff: https://github.com/rerun-io/quiver/compare/0.2.0..0.3.0

0.2.0

10 Jun 19:05

Choose a tag to compare

Full diff at https://github.com/rerun-io/quiver/compare/0.1.1..0.2.0

This release adds a family of new logical types, "any-encoding" types that abstract over the multiple arrow encodings of the same logical value, and support for arrow 59.

⚠️ Breaking changes

  • Replace Column<String> with Utf8/LargeUtf8/Utf8View markers #5 by @emilk

New logical types

  • Add four arrow logical types: BinaryView, LargeList, Map, Run #6 by @emilk
  • Add ListView and LargeListView logical types #7 by @emilk
  • Add AnyList<L>: one logical type for any list encoding #8 by @emilk
  • Add AnyBinary: one logical type for any binary encoding #9 by @emilk
  • Add AnyUtf8: one logical type for any UTF-8 encoding #10 by @emilk

Other improvements

  • Give ListValue a Column-like read API #11 by @emilk
  • Add support for arrow 59 #12 by @emilk

0.1.1

05 Jun 13:41

Choose a tag to compare

Full diff: https://github.com/rerun-io/quiver/compare/0.1.0..0.1.1

PRs

  • Expose the datatype-matching hook: Datatype::matches #1 by @emilk
  • Bulk zero-copy as_slice() for fixed-size binary columns #2 by @emilk
  • Fix CI: cargo-deny wildcard policy + redundant doc link #4 by @emilk

0.1.0 - Initial release

05 Jun 12:45

Choose a tag to compare

A zero-copy, strongly typed interface for Apache Arrow columns and record batches, for Rust's arrow-rs.

Highlights:

  • Column<L>: a strongly-typed, validated, zero-copy view of one record batch column,
    where L is a logical type like String, Option<i64>, or List<Option<String>>
  • One eager, cheap validation at the parse boundary; after that,
    element access is infallible, fully typed, and zero-copy
  • Logical types for primitives, f16, strings, binaries, timestamps, durations,
    dates, times, lists, fixed-size lists, fixed-size binaries, and dictionaries
  • #[derive(Quiver)]: convert a struct of columns to and from arrow RecordBatches,
    mixing strongly-typed Column<L> fields with raw arrow arrays
  • COLUMN_* descriptor constants for single-column extraction without hard-coding names
  • Per-column metadata, declared (#[quiver(metadata("key" = "value"))]) or per-instance
  • newtype_datatype! for domain newtypes, and the As adapter for foreign types

Published crates: quiver, quiver_types, quiver_derive