All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.13.0 - 2026-03-10
TxnRetryExceptioncaught by generichandleErrorWithin theTxnHandleErrorcompiler case, causingretryinsidehandleErrorWithto fail instead of retryingTxnVarMapcommit-time lock returningNonefor new keys, leaving commits unlocked when the underlyingTxnVardoesn't exist yet — now falls back to the map's structuralcommitLock- TOCTOU race in
TxnVarMap.addOrUpdate: check for key existence and the add/update were not atomic — moved insideinternalStructureLock - TOCTOU race in
TxnVarMap.delete: same pattern — moved the check-then-act inside the lock completionSignalnot completed on unexpected exceptions inexecute, causing caller deadlocks — wrapped inhandleErrorWiththat ensuresregisterCompletionand signal completion- Unsupervised fiber in
commit: errors fromsubmitTxnbeforeexecuteis reached now complete the signal withLeftto prevent hangs
- 4 new tests (139 → 143): retry-through-handleErrorWith, concurrent new-key set/delete, new-key lock fallback, error-completes-not-hangs
0.12.0 - 2026-02-27
- Multi-key map bug in
TxnLogContextwheresetVarMapValueandmodifyVarMapValueused the map's structure runtime ID instead of the per-key runtime ID, causing multiple set/modify operations for different keys in the same transaction to overwrite each other's log entries
- Scalafix CI enforcement with import ordering checks
- Code coverage reporting in CI
- 77 new tests (62 → 139, 2 ignored as flaky): targeted coverage for
TxnVarMap,TxnVar,waitFor,handleErrorWith,pure/delay,TxnLogEntrytypes, and multi-key regression tests
- Scala 3 bumped from 3.3.4 to 3.3.7 LTS
- ScalaCheck bumped from 1.18.1 to 1.19.0
- cats-effect-testing bumped from 1.6.0 to 1.7.0
- sbt-typelevel bumped from 0.8.4 to 0.8.5
- Refactored
TxnLogContext: extractedgetLogEntryhelper, unified duplicate entry/value write methods (−12% lines) - Adjusted CI stress test timeouts for reliability
- Repository moved from
gvonness-apoliticaltoEntrolutionorganisation - Updated CONTRIBUTING.md with cross-build guidance and CODE_OF_CONDUCT.md contact
0.11.0 - 2026-02-15
- Cross-build for Scala 2.13 and Scala 3, publishing
_2.13and_3artifacts - Changed
asyncFvisibility toprivate[stm]for Scala 3 compatibility - Used sbt-typelevel for common compiler flags (removed from
build.sbt)
0.10.1 - 2026-02-15
- Fixed lock ordering deadlock in transaction commit
- Fixed semaphore leak via bracket pattern in transaction runtime
- Fixed
MutableMaprace condition by switching toTrieMap - Fixed
registerRunningno-op bug in transaction scheduler
- FUNDING.yml for GitHub Sponsors and Patreon
0.10.0 - 2026-02-15
- Removed unused
internalSignalLockfield fromTxnVarMap(binary-incompatible)
- Bumped Scala to 2.13.16
- Bumped cats-effect to 3.6.3, cats-free to 2.13.0
- Bumped ScalaCheck to 1.18.1, ScalaTest to 3.2.19, cats-effect-testing to 1.6.0
- Bumped sbt-scoverage to 2.4.1, Scalafmt to 3.8.6
- Added explicit ScalaTest dependency
- Updated sbt-typelevel to 0.8.4
- Updated deprecated scalafmt config keys
- Removed orphaned
docs/assets/logo.svg
- Comprehensive test suite: IdFootprint unit & property tests, concurrency stress tests (62 total)
- CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md
- Bug report and feature request issue templates
0.9.6 - 2026-01-10
- Updated sbt-typelevel to 0.8.1 and require Java 21
- Updated Scalafmt to Scala 3 dialect parser
0.9.5 - 2023-08-13
- Migrated to Typelevel SBT plugin (
sbt-typelevel) for build management, CI, and publishing - Code cleanup: modifier ordering and style improvements
0.9.4 - 2023-08-06
- Code cleanup: modifier ordering improvements
0.9.3 - 2023-07-31
- General code cleanup and internal improvements
0.9.2 - 2023-07-12
- Improved retry efficiency in the transaction runtime scheduler
0.9.1 - 2023-06-27
- Fixed serialisation issue in transaction log handling
0.9.0 - 2023-06-26
- Scala version update
0.8.0 - 2023-06-26
- Reactive graph-based transaction scheduler for smarter retry scheduling
0.7.0 - 2022-09-06
- Refactored suspended effect handling to use
F[_]instead of thunks
0.6.0 - 2022
- Build cleanup and README updates
0.5.0 - 2022
- API refactor for cleaner public interface
0.4.0 - 2022
- Higher-kinded type updates
- Encapsulated
TxnVarinternal parameters from public API
- Initial public release
- Software Transactional Memory implementation for Cats Effect
TxnVarfor transactional mutable variablesTxnVarMapfor transactional mutable maps- Intelligent runtime scheduler with static analysis phase
- Semantic blocking via
waitFor/ retry mechanism handleErrorWithfor transaction-level error recovery