Releases: marykdb/maryk
0.9.0
Highlights
- Added new string index types:
Normalize,Split, andAnyOf. - Added search filters for
Matches,MatchesPrefix, andMatchesRegEx. - Added named search query support and deduplication of named search terms.
- Added
ScanUpdateHistoryRequestfor 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, andfoundationdb. - Extended
remotestore 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
compileSdkto 36. - Added and expanded tests for indexing, filtering, update history, and store behavior.
Full Changelog: 0.8.0...0.9.0
0.8.0
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
RemoteDataStoreclient andRemoteStoreServer. - 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
serveto 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
indexesinstead ofindices.- Rename
indices = ...toindexes = .... - Rename
Meta.indicestoMeta.indexes.
- Rename
-
Values construction moved to the newer DSL.
- Removed
DM.values(context) { ... }helpers. - Prefer
create { ... }. - Use
emptyValues()when you need a mutable values object.
- Removed
-
Top-level
TypedValue(type, value)factory is no longer public.- Replace
TypedValue(MyEnum.Type, value)withMyEnum.Type(value).
- Replace
-
Store construction moved to
open(...)factories.InMemoryDataStore(...)->InMemoryDataStore.open(...)RocksDBDataStore(...)->RocksDBDataStore.open(...)- FoundationDB uses suspending open/init flow.
-
Public store constructor
CoroutineContextparameters 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
suspendsignatures.
- Custom field encryption/token providers must use
-
GetUpdatesRequestnow uses the correct request typeGetUpdates.- 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.
UUIDv4Keyis the default root key.UUIDv7Keyadded for time-ordered UUIDs.UUIDKeyis deprecated in favor ofUUIDv4Key.
-
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.
ReferenceToMaxindex type.- Map any-key / set-any-value indexing.
- Historic traversal for those index types.
-
Core DSL moved further toward
createand 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
indicestoindexes. - Rename
Meta.indicestoMeta.indexes.
Values DSL
- Replace
values { ... }helper usage withcreate { ... }where possible. - Use
emptyValues()for explicit values objects. - Replace
TypedValue(MyEnum.Type, value)withMyEnum.Type(value).
UUID keys
- Prefer
UUIDv4Keyfor default/distributed-safe behavior. - Use
UUIDv7Keyonly when you want key ordering by time. - Existing
UUIDKeyusages should be migrated toUUIDv4Key.
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
Many bug fixes and improvements.
Full Changelog: 0.6.0...0.7.0
0.6.0
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