- Numerous minor internal improvements (@polytypic)
- Added many benchmarks to allow better understanding of the overheads of composable transactions (@polytypic)
- Exposed shape of
_ Loc.tto avoid float array pessimization (@polytypic) - Made
Accumulatorautomatically scaling and removed optionaln_wayarguments (@polytypic) - Use polymorphic variant for
mode(@polytypic) - Add
?backofftoLoc.compare_and_set(@polytypic) - Remove the Op API (@polytypic, @lyrm)
- Fix
Hashtbl.clear(@polytypic) - Fix single location updates to be linearizable (@polytypic)
- Add
Xt.compare_and_set(@polytypic) - Add
Dllist.create_node value(@polytypic) - Workarounds for CSE optimization (@polytypic)
- Changed to use
(implicit_transitive_deps false)(@polytypic) - Move
Backoffmodule to its ownbackoffpackage (@lyrm, @polytypic) - Support padding to avoid false sharing (@polytypic)
- Pass through
?timeoutfto blocking operations on data structures (@polytypic) - Ported to OCaml 4.13 (@polytypic)
- Ported to OCaml 4.14 (@polytypic)
- Add timeout support to potentially blocking operations (@polytypic)
- Add explicit
~xtparameter toXt.callto make it polymorphic (@polytypic)
- Fix to also snapshot and rollback post commit actions (@polytypic)
- Fix
Loc.compare_and_setto have strong semantics (@polytypic) - Fix single location no-op updates to be strictly serializable (@polytypic)
- Add
Dllist.move_l node listandDllist.move_r node list(@polytypic)
- Improve
Hashtblread-write performance and addswap(@polytypic) - Avoid some unnecessary verifies of read-only CMP operations (@polytypic)
- Add synchronizing variable
Mvartokcas_data(@polytypic) - Fix to allow retry from within
Xt.updateandXt.modify(@polytypic)
- Add nested conditional transaction support (@polytypic)
- Add explicit location validation support (@polytypic)
- Allocation of location ids in a transaction log friendly order (@polytypic)
- Per location operating mode selection (@Dashy-Dolphin, review: @polytypic)
- Injectivity
!'a Kcas_data.Dllist.tannotation (@polytypic)
- Added doubly-linked list
Dllisttokcas_data(@polytypic) - Minor optimizations (@polytypic)
- Remove the
TxAPI (@polytypic) - Add blocking support to turn kcas into a proper STM (@polytypic, review: @lyrm)
- Add periodic validation of transactions (@polytypic)
- Introduce
kcas_datacompanion package of composable lock-free data structures (@polytypic) - Add
is_in_logoperation to determine whether a location has been accessed by a transaction (@polytypic) - Add
Loc.modify(@polytypic) - Add transactional
swapoperation to exchange contents of two locations (@polytypic) - Injectivity
!'a Loc.tand variance+'a Tx.tannotations (@polytypic)
- Add support for post commit actions to transactions (@polytypic)
- Bring
XtandTxaccess combinators to parity and addcompare_and_swap(@polytypic)
- New explicit transaction log passing API based on idea by @gasche (@polytypic, review: @samoht and @lyrm)
- New k-CAS-n-CMP algorithm extending the GKMZ algorithm (@polytypic, review: @bartoszmodelski)
- Complete redesign adding a new transaction API (@polytypic, review: @bartoszmodelski)
- Fix a bug in GKMZ implementation (@polytypic, review: @bartoszmodelski)
- Change to use the new GKMZ algorithm (@polytypic, review: @bartoszmodelski)
- Add preflights sorting and checks (@bartoszmodelski, review: @polytypic)
- Republish in opam (update opam, dune) (@tmcgilchrist, review: @Sudha247)