Release 21st December 2025

Change Control note Hiperspace --version 2.5.26 HiLang --version 2.5.26

Overview

Change method signatures for Path functions to use Route instead of RouteMap for remote calls.

Add Session2 to Subspace to support time-travel sessions over a graph space to support partial refresh of GPU cache for GPU parallel search of Graph methods without the need for recursive cycle detection.


Sequence support

Sequence numbers are a relational database feature that has largely been replaced by UUID (especially v7) since they do not require a sequence source and can be allocated within a client. They still have a use as an alternate key especially with GPGPU that need primitive points, but do not wish to use the expense of mapping UUID to int128 values that may not be supported by the device

Hiperspace implements sequences as unsigned 64-bit integers (1 to 18,446,744,073,709,551,616), and can be stored for any element key value

Hiperspace

Added UseSequenceAsync() for driver implementation, together with proxy methods in {BrowserSpace, FailoverSpace, GenerationSpace, PartitionSpace, SessionSpace}

Hiperspace.Heap

Implemented UseSequenceAsync() in Hiperspace.Heap and added additional driver CacheHeapSpace for use by caches that do not require history to be maintained for elements. CacheHeapSpace should only be used by caches since it lacks the ability to reconcile concurrent changes through version inspection.

LatestSpace is replaced by CacheHeapSpace and will be removed in a future release.

Hiperspace.Rocks

Implemented UseSequenceAsync()inHiperspace.Rocksand added additional driverCacheRockSpace` for use by caches that do not require history to be maintained for elements. CacheRockSpace should only be used by caches since it lacks the ability to reconcile concurrent changes through version inspection.

The underlying RocksDB driver has been updated.

SubSpace

SubSpace forwards the UseSequenceAsync() function to the underlying driver

SetSpace

Added two functions to get a sequence counter from the driver:

  • GetSequenceAsync<TEntity>(TEntity? element) to get the current sequence number associated with the domain key
  • UseSequenceAsync<TEntity>(TEntity? element) to get a new sequence number for the with the domain key

NB While the main use of Sequence numbers is to provide an alternate (GPGPU friendly) sequence number for a Node, it can be applied to any key value.

// get an order number that is unique within all orders
var orderNo = await space.Orders.UseSequenceAsync (new Order { });

// get a line number within the owning Order {1,2,3..}
var lineNo = await space.Lines.UseSequenceAsync (new Line { Order = order }); 

HiLang

Added code generation for the SubSpace methods.


OnInitialized

Addition of virtual void OnInitialized() function to SubSpace to allow domian subspaces to perform additional initialization after the Domain Space has been created by a generic container (e.g. Hiperspace.DB)

Release 21st December 2025 Release 10th December 2025 Release 3rd December 2025
Copyright © Cepheis 2024