Skip to content

Releases: marykdb/maryk

0.9.0

03 Apr 11:26

Choose a tag to compare

Highlights

  • Added new string index types: Normalize, Split, and AnyOf.
  • Added search filters for Matches, MatchesPrefix, and MatchesRegEx.
  • Added named search query support and deduplication of named search terms.
  • Added ScanUpdateHistoryRequest for efficient update-history scans.
  • Improved update listeners, scan planning, and fetch optimization across stores.
  • Refactored reference caching and index conversion to reduce crashes and handle nested embedded indexes.

Store Support

  • Added update-history and scan-updates support to memory, rocksdb, and foundationdb.
  • Extended remote store codec/server support for the new request and response types.
  • Improved soft-delete and historical scan handling across store backends.

Documentation

  • Expanded core and store docs for filters, index design, and storage behavior.
  • Updated getting-started and module READMEs to reflect the new capabilities.

Maintenance

  • Bumped Gradle wrapper and dependency versions.
  • Updated Android compileSdk to 36.
  • Added and expanded tests for indexing, filtering, update history, and store behavior.

Full Changelog: 0.8.0...0.9.0

0.8.0

06 Mar 13:46

Choose a tag to compare

Highlights

  • store/foundationdb

    • New distributed transactional store.
    • Supports add/get/change/delete/scan/changes/updates.
    • Supports historic scans, unique indexes, migration checks, and cluster-wide update propagation with HLC sync.
    • Hardened startup, shutdown, retries, cancellation, and metadata handling.
  • store/remote

    • New HTTP/SSH remote store layer.
    • Adds RemoteDataStore client and RemoteStoreServer.
    • Lets CLI and app connect to RocksDB/FoundationDB running on another machine.
  • cli

    • New command line tool to operate on Maryk data stores.
    • Added connect, disconnect, list, model, get, scan, add, load, changes, undelete.
    • Added inline mutation commands: set, unset, append, remove, delete.
    • Added one-shot execution with --exec.
    • Added serve to expose local stores over HTTP.
  • app

    • New desktop UI for browsing and editing stores.
    • Includes model catalog, scan/filter/sort, record editor, inspector, history, time-travel, import/export, and aggregations.
  • website

    • New website publishes the documentation in a more accessible structure.
    • Added GitHub Pages deployment and improved cross-linking from repo docs.

Breaking Changes

  • Root model metadata uses indexes instead of indices.

    • Rename indices = ... to indexes = ....
    • Rename Meta.indices to Meta.indexes.
  • Values construction moved to the newer DSL.

    • Removed DM.values(context) { ... } helpers.
    • Prefer create { ... }.
    • Use emptyValues() when you need a mutable values object.
  • Top-level TypedValue(type, value) factory is no longer public.

    • Replace TypedValue(MyEnum.Type, value) with MyEnum.Type(value).
  • Store construction moved to open(...) factories.

    • InMemoryDataStore(...) -> InMemoryDataStore.open(...)
    • RocksDBDataStore(...) -> RocksDBDataStore.open(...)
    • FoundationDB uses suspending open/init flow.
  • Public store constructor CoroutineContext parameters were removed.

    • Let the store manage its own dispatching.
    • Isolate lifecycle with your own scope if needed.
  • Encryption APIs are now suspending.

    • Custom field encryption/token providers must use suspend signatures.
  • GetUpdatesRequest now uses the correct request type GetUpdates.

    • Relevant for protocol routing and mixed-version deployments.
  • HBase store removed.

    • Use RocksDB for embedded/single-node workloads.
    • Use FoundationDB for distributed/transactional workloads.

API and Model Changes

  • Added explicit UUID key variants.

    • UUIDv4Key is the default root key.
    • UUIDv7Key added for time-ordered UUIDs.
    • UUIDKey is deprecated in favor of UUIDv4Key.
  • Added typed sensitive-field encryption across stores.

    • Sensitive fields are encrypted at rest.
    • Sensitive + unique is supported with a token provider.
    • Sensitive + regular indexing is still not supported.
  • Added new indexing/query features.

    • ReferenceToMax index type.
    • Map any-key / set-any-value indexing.
    • Historic traversal for those index types.
  • Core DSL moved further toward create and invoke-style APIs.

Store and Migration Changes

  • FoundationDB introduced as the supported distributed backend.
  • RocksDB metadata moved to file-based metadata, making store layout easier to inspect and tooling easier to build.
  • Migration framework expanded substantially.
    • Runtime tracking and observability
    • Pause/resume/cancel
    • Leases
    • Dependency ordering and cycle detection
    • Verify phase and verification hooks
    • Audit/runtime details
    • Broader RocksDB and FoundationDB migration test coverage

Platform and Build Changes

  • RocksDB support expanded across more targets.

    • Added/validated Linux support.
    • Added Windows support via MinGW.
    • Continued support for JVM, Apple targets, Android, and Android Native.
  • Android support/build publishing improved.

    • Android 21 support fixes
    • Android RocksDB test fixes
    • Android publishing/configuration updates
  • Broader multiplatform work landed.

    • watchOS/tvOS support updates
    • WASM support enabled
    • Web-specific code split into reusable webMain
    • JDK 21 toolchain update while keeping Java 17 output

Fixed

  • Soft-delete and time-travel regressions in store behavior and tests.
  • Scan edge cases, including descending index scans and start-key handling.
  • FoundationDB startup/install/runtime reliability across macOS and Linux.
  • Windows file creation and cross-platform folder handling.
  • Varint/protobuf parsing edge cases.
  • JSON/YAML escaping and quoting for booleans, numerics, multiline strings, timestamps, and special characters.
  • Multiple serialization, test stability, and shutdown/cancellation issues.

Docs

  • Large documentation expansion across core, stores, CLI, app, migrations, and serialization.
  • Docs reorganized into docs/ folders.
  • Added the website module and GitHub Pages publishing.
  • README and module docs now link to the published docs site.

Migration Guide

Model metadata

  • Rename indices to indexes.
  • Rename Meta.indices to Meta.indexes.

Values DSL

  • Replace values { ... } helper usage with create { ... } where possible.
  • Use emptyValues() for explicit values objects.
  • Replace TypedValue(MyEnum.Type, value) with MyEnum.Type(value).

UUID keys

  • Prefer UUIDv4Key for default/distributed-safe behavior.
  • Use UUIDv7Key only when you want key ordering by time.
  • Existing UUIDKey usages should be migrated to UUIDv4Key.

Store bootstrap

  • Replace direct constructors with open(...).
  • Remove custom constructor coroutine contexts.
  • Treat FoundationDB opening as suspending initialization.

HBase users

  • Migrate HBase setups to FoundationDB for distributed usage.
  • Migrate HBase setups to RocksDB for embedded usage.
  • Re-test migrations, index rebuilds, and query parity before cutover.

0.7.0

09 Aug 17:33

Choose a tag to compare

Many bug fixes and improvements.

Full Changelog: 0.6.0...0.7.0

0.6.0

14 Jan 09:16

Choose a tag to compare

Added targets to core for more native targets like Windows, Linux, watchOS, tvOS.
Added RocksDB targets for Linux.

Many bug fixes and improvements.

Full Changelog: 0.5.0...0.6.0

0.5.0

30 Aug 11:56

Choose a tag to compare

Release version 0.5.0

0.4.1

11 Dec 20:13

Choose a tag to compare

0.4.0

11 Dec 20:13

Choose a tag to compare

0.3.0

11 Dec 20:13

Choose a tag to compare

Release version 0.3

0.2.0

10 Dec 19:51

Choose a tag to compare

Update to 0.3-SNAPSHOT after release. Update README to reflect the li…