Skip to content

4.4.0

Latest

Choose a tag to compare

@cberner cberner released this 13 Oct 22:31
· 4 commits to master since this release

New features

  • Implement Value and Key for the NonZero integer types, NonZeroU8 to NonZeroU128 and
    NonZeroI8 to NonZeroI128.
  • Add Value::NICHE, an optional byte string that a type never encodes to. When a type declares
    one, Option of that type encodes None as it, in place of a tag byte. Adding a niche to a type
    changes the encoding of Option of it, and its type name with it, so the two are not equivalent
    types: a table that stores Option of the type from before it declared the niche fails to open
    with TableTypeMismatch instead of being misread, and can be read through a copy of the type
    that declares no niche.
  • Stabilize ReadableTable::lower_bound() and ReadableTable::upper_bound(), which return a read-only
    Cursor, modeled on the standard library's BTreeMap cursors.
  • Stabilize Table::lower_bound_mut() and Table::upper_bound_mut(), which return a CursorMut
    modeled on the standard library's BTreeMap cursors. Inserting sorted data through
    insert_before() can be around 3x faster than insert().

Bug fixes

  • Fix a bug where check_integrity() could report that it repaired corruption, after a transaction
    that grew the file size was aborted.
  • Fix Database::create() repairing the database it had just created, which failed with
    RepairAborted under a repair callback that aborts.
  • Fix unbounded memory growth in the page cache under write workloads, when the cache never
    reached its configured size limit.
  • Fix Durability::None commits being lost on a clean close, after a panic was caught inside
    an earlier write transaction.
  • Fix compact() leaving free regions at the end of the file, when the compaction emptied more
    of them than it made commits.
  • Fix compact() waiting forever when the caller holds a write transaction. It fails with
    CompactionError::TransactionInProgress, as it does for a read transaction.