Skip to content

1.4.0

Compare
Choose a tag to compare
@craigfe craigfe released this 16 Jun 20:56
· 110 commits to main since this release

CHANGES:

Fixed

  • Fixed a crash-consistency bug due to a potential flush of an incomplete entry
    to disk. Entries are now flushed as complete strings. (#301)

  • Fixed a performance issue for Index.sync when there is a blocking merge in
    progress: the log_async file was not cached properly and fully reloaded
    from disk every time. (#310)

  • Added fsync after Index.clear to signal more quickly to read-only instances
    than something has changed in the file (#308)

  • Attempt to recover from log_async invariant violations during an explicit
    sync operation, rather than failing immediately. (#329)

Changed

  • Release overly defensive warnings occuring when pre-fetching the disk. (#322)

  • Specialise IO.v to create read-only or read-write instances. (#291)

  • Optimised the in-memory representation of index handles and intermediate
    buffers, resulting in a significant reduction in memory use. (#273, #279)

  • Benches are now executed 3 times and a new option nb-exec has been added (#292)

  • clear removes the files on disks and opens new ones containing only the
    header. (#288)

  • Index.Make now requires an implementation of a monotonic time source.
    (#321)

  • The Index.Make functor now takes a single Platform argument containing
    all system dependencies (i.e. IO, Clock, Semaphore and Thread). The
    Platform module holds the necessary types for these modules. (#321, #330)

Added

  • Added benchmarks that replay a trace of index operations. (#300)

  • Log reporter for the benches