Skip to content

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 10:06
· 56 commits to main since this release

Crates.io Docs.rs

Added

  • Configured rust-toolchain.toml with nightly-2022-08-22 for reproducible builds
  • Added comprehensive CONTRIBUTING.md with development guidelines
  • Added changelog fragment system with changelog.d/ directory for conflict-free versioning
  • Added utility scripts for version management and release automation
  • Added .pre-commit-config.yaml for code quality hooks
  • Added code coverage reporting with cargo-llvm-cov and Codecov integration
  • Added extensive test coverage for data module (Link, Doublet, Error, Handler/Fuse)
  • Added comprehensive tests for traits module (Doublets, DoubletsExt, Links)
  • Added tests for memory module components (LinksHeader, stores)

Changed

  • Improved CI/CD workflow with template best practices
  • Added concurrency control to prevent duplicate CI runs
  • Added automatic release workflow based on changelog fragments
  • Added manual release dispatch option for maintainers

Fixed

  • Updated README installation guidance to use doublets 0.3.0 and stable Rust 1.85 or newer.
  • Added a CI documentation check that prevents stale nightly Rust and crate version guidance from returning.

Added

  • Ported the whole Platform.Data.Doublets decorator layer to Rust as the new doublets::decorators module: UniquenessValidator, UniquenessResolver, CascadeUniquenessAndUsagesResolver, UsagesValidator, CascadeUsagesResolver, InnerReferenceExistenceValidator, ItselfConstantToSelfReferenceResolver, NullConstantToSelfReferenceResolver, NonExistentDependenciesCreator, NonNullContentsLinkDeletionResolver, LoggingDecorator and NoExceptionsDecorator.
  • Added the DecoratorsExt builder, which takes a store by value and returns the concrete composed type, and the zero-sized Validate / Resolve / CascadeResolve policy markers selected through the UniquenessPolicy and UsagesPolicy traits.
  • Added doublets/examples/uniqueness.rs, showing duplicate (source, target) creation with and without a uniqueness policy.
  • Added a fusion check (integration/tests/fusion.rs) asserting that a nine-layer decorator stack disassembles to exactly the same machine code as the bare store.

Fixed

  • unit::Store::update_links now reports the previous link to write handlers; it used to pass the incoming change as both before and after, unlike split::Store.

Added

  • Add doublets::sequences with balanced variants, C# hybrid raw-number converters,
    conversion caching, a default stack and an iterative sequence walker.
  • Add reusable target criteria and store-backed UTF-16 symbol/string converters
    compatible with Platform.Data.Doublets.Sequences 0.6.5, including raw UTF-16
    methods, checked address ranges, cycle detection and typed conversion errors.
  • Add a Unicode string storage example and interoperability/regression tests.

Added

  • Generic TransactionsDecorator with commit/rollback handles, rollback on drop, reversible transitions, memory and durable checksummed file journals, and recovery of interrupted transactions.
  • Transaction builder, runnable example, optional diagnostics, and tests for both store backends, I/O failures, journal corruption and subprocess crash recovery.

Fixed

  • Classify split-store self references before detaching index nodes, preventing an update from moving a live reference to the external index and later panicking during rollback.

Fixed

  • Doublets::rebase_with now updates each usage once and replaces both endpoints together when both reference the old address, including through the automatic uniqueness and usages resolution stack.

Fixed

  • Count and list each usage once when a link references the same value as both source and target, while excluding the referenced link itself.
  • Delete overlapping usage and query matches once, avoiding spurious NotExists errors and duplicate deletion callbacks.

Fixed

  • Keep split-store source and target references searchable when their IDs are
    created later, including reuse of deleted IDs. Move existing external index
    entries directly into the new ID's internal indexes before creation callbacks.
  • Count concrete split-store pairs with absent sources by both endpoints instead
    of counting every usage of the source.

Changed

  • BREAKING: Migrated from nightly Rust to stable Rust (1.85+)
  • BREAKING: Fuse no longer implements FnMut; use .call() method instead
  • BREAKING: Removed Handler trait; handlers now use FnMut(Link<T>, Link<T>) -> Flow directly
  • Migrated platform-mem dependency from git submodule to crates.io v0.3.0
  • Migrated platform-trees dependency from git submodule to crates.io v0.3.3
  • Replaced JavaScript CI/CD scripts with Rust scripts matching template best practices
  • Updated CI/CD pipeline to use stable Rust toolchain with release.yml pattern
  • Updated rustfmt.toml for stable Rust compatibility

Fixed

  • Fixed CI/CD release pipeline failing on Cargo workspace repositories
  • All release scripts now correctly resolve the publishable member crate's Cargo.toml instead of reading the workspace root manifest
  • Fixed bump-version.rs failing on versions with pre-release suffixes (e.g. 0.1.0-pre+beta.15)
  • Fixed publish-crate.rs to pass -p <package> flag for workspace repos

Fixed

  • Replaced stale README workflow badges with the active branch-scoped CI/CD Pipeline badge.
  • Added a documentation badge check to prevent badges from pointing at deleted or unscoped legacy workflows.