Documentation

Introduction

DixScript is under active development and not production-ready. The C# prototype is the current reference implementation. The Rust port is in progress.

DixScript (.mdix) is a programmable configuration format where you define patterns once and reuse them everywhere. It combines configuration, compile-time functions, encryption, and compression in a single file — with zero external dependencies.

Everything Is Optional

Every section in a DixScript file is optional. A completely empty file is valid. If @DATA is absent the compiler issues a warning but continues normally. @SECURITY is auto-filled by the compiler when DEncryptor is present in @DLM and no @SECURITY block is provided. The minimal valid file is simply an empty file, or one that contains only a comment.

Section Keywords Are Case-Insensitive

Section opener keywords are matched case-insensitively by the compiler. @data, @DATA, and @Data are all equivalent. The conventional form uses all-caps, which is what formatters will normalise to.

@data(          // valid — normalised to @DATA
  app = "x"
)

@Config(        // valid — normalised to @CONFIG
  version -> "1.0.0"
)

File Sections

@CONFIG optional Compiler settings and file metadata. All keys are optional.
@IMPORTS optional Import QuickFuncs and enums from other .mdix files — local or via URL.
@ENUMS optional Named constant sets enforced at compile time.
@QUICKFUNCS optional Compile-time functions. Zero runtime overhead.
@DATA optional Your configuration data. A warning is issued if absent, but omission is valid.
@SECURITY optional Encryption mode and key configuration. Required when using DEncryptor — auto-filled by the compiler if omitted.
@DLM optional Data Lifecycle Modules: compression, encryption, auditing.

Section Order

Sections must appear in the order shown above when multiple are present. The compiler enforces ordering to enable single-pass resolution — for example, @ENUMS must precede @QUICKFUNCS so enum types are known when function signatures are parsed.

Which Section Can Access Which

Each section has a defined resolution scope. A section can only reference symbols from sections that precede it in the file.

Section Used By Can Access
@CONFIG Compiler
@IMPORTS @QUICKFUNCS, @DATA External .mdix files
@ENUMS @QUICKFUNCS, @DATA, @SECURITY Defined in same file
@QUICKFUNCS @DATA, @QUICKFUNCS @ENUMS, @IMPORTS
@DATA Runtime consumers @ENUMS, @QUICKFUNCS, @IMPORTS
@SECURITY @DLM → DEncryptor @ENUMS
@DLM Compiler pipeline @SECURITY

Calling QuickFuncs and Using Enums

QuickFuncs and enum values may only be called or referenced from within @QUICKFUNCS and @DATA. They are compile-time constructs and have no representation at runtime — they are fully resolved before any output is produced.