We are happy to announce the availability of Soil version 5. What is new? Automatic change tracking: Soil now computes a recursive content hash for objects and uses it to detect modifications automatically. This removes the need for the explicit markDirty: calls that were previously required — something we called out as a goal back in the v4 announcement. Read-only transactions have been hardened: we now distinguish a transaction that is intentionally read-only from one that just happens to end up with no changes, and read-only transactions abort automatically instead of committing a no-op. Indexed collections (SoilPersistentDictionary and indexed dictionaries) can now be used as non-root objects, not just at the root of the database. A first working garbage collector has landed — a preview, not a finished feature: Soil>>garbageCollect compacts object segments offline by cloning and atomically swapping them in. There's also a new opt-in Soil>>checkConsistency you can run separately without slowing down the GC itself. The data-layer primitives for a future online/segment-based GC are also in place, though not yet wired up. A new SoilCommitError hierarchy lets you catch any commit-time failure with one exception class instead of several unrelated ones. A good number of crash and silent-data-corruption fixes, notably around the graph exporter/importer, backup version history, and depth-first traversal. Full changelog: https://github.com/ApptiveGrid/Soil/blob/main/docs/versions/changelog-v5.md I also wrote up the release on the blog, with a bit more context: https://norbert.hartl.name/blog/2026-07-29_soil-v5-released.html What is planned next? Integrating the Windows support work that's already sitting there Process-specific variables A preview of an online GC, building on the primitives that landed in v5 Multi-index collections and partial indexes (carried over from v4's plan) Hope you like it. Give it a spin and then tell us! Norbert & Marcus
participants (1)
-
Norbert Hartl