Skip to content

Version 1.5.0.0#13

Merged
dusrdev merged 27 commits intostablefrom
pre-release
Jul 23, 2025
Merged

Version 1.5.0.0#13
dusrdev merged 27 commits intostablefrom
pre-release

Conversation

@dusrdev
Copy link
Owner

@dusrdev dusrdev commented Jul 23, 2025

  • File based serializers FileSerializer and AesFileSerializer now use a new base class implementation and have gained the ability to journal (maintain durability through crashes and other IOException, and ensure successful atomic write or complete rejection of changes), and cross-process isolation, preventing race condition that could be caused when multiple processes try to access the same ArrowDb file.
    • If you had a class implementing FileSerializer this change may or may not break functionality and you should run tests to ensure everything still works as expected (With that said, my tests were not broken and did not require any adjusting).
  • Thread-safe counters types were changed from int to long, this includes PendingChanges and RunningInstances.
  • ArrowDbTransactionScope was updated to allow nested transactions, and prevent corruption that can be caused by multiple transactions running concurrently on the same ArrowDb instance. In addition, it was made public and also implements the regular IDisposable interface to allow usage in synchronous context. However, it is still your responsibility to ensure the contexts match.
  • Upsert and all its overloads will now reject (return false) whenever the value to be upserted is a null reference type. This is to enforce a no null policy that will simplify development by eliminating null checks on retrieved values.

Perf Improvements

  • Random queued (Non serialized) operations are up to 20% faster due to improvement in cross-threaded state management.
  • Serialization allocates up to 250% less memory 🔥 across all benchmarks.

@dusrdev dusrdev merged commit d768c52 into stable Jul 23, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant