Continue reading »


Release Notes:

NOTES: Major version increment primarily due to extensive changes in BPlusTree’s capabilities and storage format. The next release will flag the v1 Options class as Obsolete to ensure people are using the latest version. All new code should be using ‘OptionsV2′ when constructing a BPlusTree.

Additions in this release:

  1. Added BPlusTree.OptionsV2 to provide a more simple set of options and uses the v2 file format.
  2. BPlusTree now supports key range enumeration as well as accessing first/last key in the tree.
  3. BPlusTree now supports optimized AddRange and BulkInsert methods.
  4. BPlusTree now supports transaction logging for improved durability and recovery.
  5. BPlusTree now has a completely new file format (use the OptionsV2 class) for improved performance and reliability.
  6. The generator’s ResXtoMC complier now supports application manifest files and the inclusion of win32 resource files.
  7. Added the IConcurrentDictionary interface to provide an abstraction on concurrent dictionary implementations.
  8. BPlusTree now supports all relevent members of the .NET ConcurrentDictionary class and implements IConcurrentDictionary.
  9. Updated SynchronizedDictionary to implement IConcurrentDictionary, great for testing code without a BPlusTree backend.
  10. Added BTreeDictionary<TKey,TValue> to support in-memory always sorted key/value dictionary.
  11. Added BTreeList<T> to support an in-memory B+Tree backed sorted list.
  12. Added collection classes to deal with KeyValue comparision, ordering, enumerating, etc.
  13. Added MergeSort (stable sorting) static class for more efficient sorting with custom comparer implementations.
  14. Added an alternative to FragmentedFile called TransactedCompoundFile to support the rewite of the BPlusTree file format.
  15. CmdTool.exe now supports a boolean ‘stop’ attribute on the FileMatch tag, allowing complete override of files that appear higher in the folder structure.

Fixes in this release:

  1. XmlLightElement CDATA handling was incorrectly decoding html content.
  2. OrdinalList had a bug in the IntersectWith and UnionWith implementations where the inputs were the same length.
  3. BPlusTree enumeration of Keys or Values would load the entire tree into a list, this is now fixed.

Breaking changes in this release:

  1. The following breaking changes were made to BPlusTree to bring it’s concurrent interface members inline with .NET 4′s ConcurrentDictionary.
    • BPlusTree changed the delegate type provided to TryUpdate to include both Key and Value.
    • BPlusTree changed the method name and delegate type of Add(TKey, delegate) to TryAdd(TKey, delegate).
    • BPlusTree changed the delegate types provided to AddOrUpdate to include both Key and Value.
  2. BPlusTree.Options is still backwards compatible with existing files; however, BPlusTree.OptionsV2 uses a new format.

For more information on the BPlusTree changes read BPlusTree 2.0 Changes Part 1 – Interface Changes