Skip to content

8. Processing model

Contents of DID 0.1

8.1 Loading a definition

  1. Parse; read language.id and language.version. If the id differs from the specification's, refuse.
  2. If the definition's language version is older, run the specification's migrations (DISL 11.9) on the raw structure.
  3. Validate against $defs/Definition and the specification's metamodel (types exist, attributes typed, references resolvable).
  4. Resolve view data; run layout for elements lacking view data if the specification's layout trigger is onLoadIfMissing or always (DISL 10).
  5. Evaluate constraints with live timing; show problems.
  6. Render.

A definition with a newer minor or patch language version than the loaded specification is opened with a warning; a newer major version is opened read-only or refused (DISL 11.9).

8.2 Unknown content

Elements of unknown types, unknown attributes and unknown view properties in a definition (for example written by a newer language version or a vendor extension) MUST be preserved on save. Unknown elements are shown as neutral placeholders ("Unknown element of type X") and reported by std.typeExists (DISL 8.7). Readers MUST NOT silently drop data.

8.3 Saving

  1. Evaluate constraints with save timing, as DISL 14.5 describes.
  2. Serialize the logical definition canonically (section 6).
  3. Write files according to the specification's files.mode atomically (write to temporary file, then rename).

Referenced from