On 29 Jul 2026, at 18:07, Norbert Hartl via Pharo-dev <pharo-dev@lists.pharo.org> wrote:_______________________________________________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 (
SoilPersistentDictionaryand 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>>garbageCollectcompacts object segments offline by cloning and atomically swapping them in. There's also a new opt-inSoil>>checkConsistencyyou 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
SoilCommitErrorhierarchy 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
Pharo-dev mailing list -- pharo-dev@lists.pharo.org
To unsubscribe send an email to pharo-dev-leave@lists.pharo.org