Release 10th July 2025

Change Control note Hiperspace --version 2.4.0 HiLang --version 2.4.0

Overview

Hiperspace uses the protobuf wire format to serialize elements in the domain SubSpace for persistence as a key/value in the store (primarily RocksDB), with minimal transformation and no padding.

The schema can evolve without the need to alter history, using two rules:

  • #id numeric aliases for {entities, segments, aspects, keys, values, indexes} are never reused
  • The datatype of {keys, values} is never changed (other than by renaming items)

MetaModel

The MetaModel contains a list of all the Element types stored within a Hiperspace and the data types of each key and value. The MetaModel is eternal—additional Element types are added as the schema changes, but never removed, to ensure that older builds can still read the data that they understand.

When a Hiperspace is opened, the domain MetaModel is compared with the MetaModel stored in the Hiperspace to ensure the above rules have not been compromised. All reads and writes after opening use the wire format directly, without transformation, from store through to the client application (including browser web-assembly).

MetaMap

To support range access, the bytes in the wire format for keys are reordered to place message lengths at the end of the byte[] for each key. This is especially important for segments (where the parent knows only the owner part of the key) and indexes.

The MetaMap is an ordered array of #id and mapping of key/value #id to the element #id of references. The MetaMap is coded in the domain assembly. This release adds the capability to remove key references without the need to create a new element type, by regenerating the MetaMap from the MetaModel stored in Hiperspace.

Change

This release changes the method signatures of {KeyPath, IndexPath} to support a MetaMap built at load time, and adds additional abstract methods to Hiperspace to load and merge the MetaModel.

The MetaModelException exception type has been added to provide detailed diagnostics if the MetaModel is not compatible.

Release 10th July 2025 Release 1st July 2025 Release 18th June 2025
Copyright © Cepheis 2024