v0.7.0 (2026-03-04)

  • Breaking changes
    • PubSub functionality has been removed in order to simplify the codebase
      • This change removes Goblin.subscribe/1 and Goblin.unsubscribe/1
    • Goblin.select/2 has been renamed to Goblin.scan/2
  • Enhancements
    • Added ARCHITECTURE.md which displays the inner workings of Goblin

v0.6.0 (2026-02-20)

  • Breaking changes
    • Disk table format was updated to include a field stating whether the disk table is compressed or not
    • Keys can now be tagged, allowing separation of data when querying
    • Goblin.Tx.select is removed; use Goblin.select/2 instead, which runs outside a transaction
  • Enhancements
    • Added automatic lazy migration of disk tables when a legacy version is detected
    • Change key-value pair block size to 1024 bytes
  • Improvements
    • Key comparison is enforced to compare value only (i.e. via ==) throughout the database
  • Bug fixes
    • Fix race condition where the memory table can be cleaned up when active readers are iterating

v0.5.0 (2026-01-11)

  • Breaking changes
    • The Bloom filter struct has changed (incompatible with previous versions)
  • Improvements
    • The manifest can only delete previously tracked files upon start
    • If a .tmp file already exists when trying to write a new, then the previous version is removed before continuing to write
    • The Bloom filter implementation was refactored into a scalable Bloom filter implementation
  • Bug fixes
    • Fixes a bug where the arguments to a function call were in the wrong order

v0.4.2 (2026-01-10)

  • Changes
    • Rename is_*? function names to *? only
    • Refactorings of some modules

v0.4.1 (2026-01-08)

  • Bug fixes
    • Fix recursion bug in binary search iterator algorithm for disk tables.

v0.4.0 (2026-01-06)

  • Breaking changes
    • Changed disk table encoding format (not compatible with previous versions)
    • Goblin.is_flushing/1, Goblin.is_compacting/1 is changed to Goblin.is_flushing?/1, Goblin.is_compacting?/1, respectively.
    • Goblin.transaction/3 is split into Goblin.transaction/2 and Goblin.read/2.
  • Improvements
    • A lot more focus on consistency guarantees for transaction operations.
    • Goblin.{put_multi/2, remove_multi/2, get_multi/2, select/2} are now available.

v0.3.2 (2025-12-04)

  • Enhancements
    • Flush and compaction are now triggered via byte sizes instead of amount of keys
  • Bug fixes
    • Add functionality for iterators to clean up after iteration ends
    • Fix key range computation when compacting from flush level to higher level

v0.3.1 (2025-11-23)

  • Bug fixes
    • Writes are published on a database specific topic instead of a global topic
    • Compaction algorithm rewritten, fixes overlapping key ranges in higher SST levels

v0.3.0 (2025-11-21)

  • Breaking changes
    • Changed the format in the manifest file
  • Improvements
    • Make WAL follow the manifest as the source of truth
  • Enhancements
    • Added Goblin.export/2 which exports a .tar.gz of a snapshot of the database to a specified directory

v0.2.2 (2025-11-16)

  • Enhancements
  • Bug fixes
    • Fix registry name in Goblin.is_flushing/1 and Goblin.is_compacting/1
    • Fix sequence counting bug when write-transaction commits

v0.2.1 (2025-11-13)

  • Enhancements
    • Add checksum verification to SST files
    • Data and metadata are compressed in SSTs for levels > 1

v0.2.0 (2025-11-12)

  • Enhancements
    • The transaction model is changed to true serial execution.
    • The MemTable and Store utilize ETS tables to allow concurrent reads.
    • Bloom filter false positive probability is configurable
  • Bug fixes
    • Change how hashes are stored in BloomFilter structs. Anonymous functions are no longer stored directly in the struct, instead the salt and range for the hash is stored instead. This prevents BadFunctionError if the module is updated.

v0.1.5 (2025-11-02)

  • Improvements
    • Improved SST filtering from store
  • Enhancements
    • Add benchmarking scripts

v0.1.4 (2025-11-01)

  • Enhancements
    • Add registry for process discovery within the database server
    • Add registry for pubsub functionality within the database server
    • Add new supervisor for processes separate from registry processes
  • Bug fixes
    • Provide name scopes to WAL and Manifest. This fixes the bug that multiple database servers couldn't start simultaneously.

v0.1.3 (2025-10-29)

  • Enhancements
    • Add is_flushing/1 and is_compacting/1 functions
    • Refactor Reader.select/4 stream

v0.1.2 (2025-10-29)

v0.1.1 (2025-10-27)

  • Enhancements
    • Add get_multi/2 functionality

v0.1.0 (2025-10-26)

  • Enhancements
    • First public release