Release 31st December 2025
Change Control note Hiperspace --version 2.5.28 HiLang --version 2.5.28
Overview
Change to the GetSequence and UseSequence functions to take a parameter to allow the use of KeyType for Sequences
Extended Session2(DateTime? AsAt = null) to Session2(DateTime? AsAt = null, DateTime? DeltaFrom = null) to allow the DeltaFrom parameter to be used in addition to AsAt.
Obsolete
Several interfaces function have been marked as Obsolete and will be removed in the next version.
Currently Hiperspace uses a key prefix convention to distinguish immutable and versioned elements, VectorSpaces (for nearest neighbor search) and sequences
| │ | Prefix | │ | Description | │ |
|---|---|---|---|---|
| │ | 00 | │ | The meta data dictionary for the Hiperspace, used to ensure that incompatible libraries cannot corrupt a store | │ |
| │ | 0... | │ | Versioned element that includes a timestamp suffix at the end of the key | │ |
| │ | 00... | │ | VectorSpace indexes | │ |
| │ | 001... | │ | Sequence numbers for mutable items | │ |
| │ | │ | Keys without a prefix are immutable elements without version | │ |
Performance testing of Hiperspace.DB has highlighted that the rebuilding of the MetaMap used to translate between protobuf tag/length/value to tag/value/length for index search can be expensive top build when a store has experienced multiple schema changes. The next version will change the prefix to:
| │ | Prefix | │ | Description | │ |
|---|---|---|---|---|
| │ | 1 | │ | The meta data dictionary for the Hiperspace, used to ensure that incompatible libraries cannot corrupt a store | │ |
| │ | 2 | │ | cached MetaMap entries for key encode/decode |
│ |
| │ | 3 | │ | validated client library fingerprint to avoid the need for MetaMap build |
│ |
| │ | 4 | │ | immutable elements without version suffix | │ |
| │ | 5 | │ | Versioned element that includes a timestamp suffix at the end of the key | │ |
| │ | 6 | │ | VectorSpace indexes | │ |
| │ | 7 | │ | Sequence numbers for mutable items | │ |
The #id for {Node, Edge, VectorNode, HiperEdge,PathMessage} will also be moved to a reserved set of low values with all domain keys moved to higher values
SetSpace
Added two functions to get a sequence counter from the driver:
GetSequenceAsync<T>(T element)to get the current sequence number associated with the domain keyUseSequenceAsync<T>(T 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 { });
var orderNo = await space.Orders.UseSequenceAsync (new Order.KeyType { });
// get a line number within the owning Order {1,2,3..}
var lineNo = await space.Lines.UseSequenceAsync (new Line { Order = order });
var lineNo = await space.Lines.UseSequenceAsync (new Line.KeyType { Order = order.self });
Get and GetASync() functions now handle not found errors by returning null for scenarios where a reference object cannot be found. This is especially useful for views where not found is better handled by Horizon<> filters that
Bind Version
All versions of Bind Function have been marked as Obsolete, with a preference to use the optimistic locking instead (that include the original AsAt copied to AsWas for comparison).
Versions of Bind functions that include the priorVersion DateTime value use optimistic concurrency control to prevent updates to a version that has been changed by another session
Nearest
Hiperspace provides nearest neighbor search using a VectorSpace aspect for geospatial and RAG search. These functions have been extended to include a maximum distance search
Hilang
The Hilang ahead of time compiler has been updated to remove indexes that are a subset of the element key, and will not be used
Hiperspace.Rocks
The RocksDB driver has been upgraded to verion 10.4.2.63147
Release 31st December 2025 Release 21st December 2025 Release 10th December 2025