Outline of structs as a general 'definition' system #7069
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Usage and product changes
We introduce the architecture around structs definitions, and definitions in general.
The idea of a
definition
is that it is a general schema construct outside the regularthing
andtype
system - this will initially be used for structs and functions.Definitions are interesting because their interesting payload is in the value, not the key. However, the key contains the ID of the definition. As a result, you can consider the new
DefinitionKey
to be analogous toTypeVertex
, but the interesting data structure is theStructDefinition
, which serialises a struct's content.In doing this, we also realise that
ValueType
must encompass the built-in value type category, plus the ID of the struct definition, and create a newValueTypeCategory
which can map to a Prefix and doesn't contain the ID of struct definitions. Lastly, we create a the serialised form ofValueTypeBytes
, which is used as the property of an attribute type's value type, including the definition ID if it exists.What isn't implemented yet:
StructDefinition