{
  "schema": "dhl.language-map.v1",
  "updated": "2026-09-09",
  "url": "https://demonhunterlabs.com/academy/systems/yeho/map",
  "trainingPermission": "https://demonhunterlabs.com/ai-use",
  "branches": [
    {
      "id": "begin",
      "title": "Begin",
      "subtitle": "Your first useful program",
      "color": "#86e9ff",
      "sections": [
        "start",
        "values",
        "functions",
        "tools"
      ]
    },
    {
      "id": "shape",
      "title": "Shape",
      "subtitle": "Give your ideas structure",
      "color": "#bd9aff",
      "sections": [
        "data",
        "collections",
        "memory",
        "packages"
      ]
    },
    {
      "id": "run",
      "title": "Run",
      "subtitle": "Decisions, work, and time",
      "color": "#ffb875",
      "sections": [
        "logic",
        "loops",
        "errors",
        "concurrency"
      ]
    },
    {
      "id": "create",
      "title": "Create",
      "subtitle": "Pixels, interfaces, experiments",
      "color": "#80f5cc",
      "sections": [
        "compute",
        "yui-start",
        "yui-authoring",
        "yui-runtime",
        "boundaries"
      ]
    }
  ],
  "topics": [
    {
      "id": "start",
      "title": "Start and run",
      "description": "Projects, entry files, comments, separators, and the shortest path to a native program.",
      "features": [
        {
          "id": "project-entry",
          "title": "Project entry and source files",
          "summary": "A Yeho project starts in start.yh. Top-level statements are the program, so there is no ceremonial main function.",
          "status": "stable",
          "keywords": [
            "start.yh",
            "project.mech"
          ],
          "api": "/academy/api?item=language--project-entry",
          "lesson": "/academy/systems/yeho/language#feature-project-entry"
        },
        {
          "id": "comments-separators",
          "title": "Comments, newlines, and semicolons",
          "summary": "Line comments begin with //. Newlines normally separate statements, and semicolons are optional.",
          "status": "stable",
          "keywords": [
            "//"
          ],
          "api": "/academy/api?item=language--comments-separators",
          "lesson": "/academy/systems/yeho/language#feature-comments-separators"
        },
        {
          "id": "create-run-build",
          "title": "Create, run, and build",
          "summary": "The workspace wrapper creates a project, checks it, runs it, or emits its native Windows x64 artifact.",
          "status": "stable",
          "keywords": [
            "new",
            "check",
            "run",
            "build"
          ],
          "api": "/academy/api?item=language--create-run-build",
          "lesson": "/academy/systems/yeho/language#feature-create-run-build"
        }
      ]
    },
    {
      "id": "values",
      "title": "Values and types",
      "description": "Variables, assignment, literals, text, numbers, booleans, nullability, and the complete built-in type families.",
      "features": [
        {
          "id": "variables-assignment",
          "title": "Variables and assignment",
          "summary": "Types come before names. Declare with an initial value, then use = to replace the value.",
          "status": "stable",
          "keywords": [
            "="
          ],
          "api": "/academy/api?item=language--variables-assignment",
          "lesson": "/academy/systems/yeho/language#feature-variables-assignment"
        },
        {
          "id": "literals",
          "title": "Literals and escapes",
          "summary": "Yeho has text, character, integer, floating-point, boolean, and null literals with explicit escape sequences.",
          "status": "stable",
          "keywords": [
            "true",
            "false",
            "null"
          ],
          "api": "/academy/api?item=language--literals",
          "lesson": "/academy/systems/yeho/language#feature-literals"
        },
        {
          "id": "numeric-types",
          "title": "Integer, bit, float, and decimal types",
          "summary": "Yeho exposes signed and unsigned integer widths, packed bit widths, binary floating point, and decimal families.",
          "status": "stable",
          "keywords": [
            "int",
            "uint",
            "byte",
            "bit",
            "float",
            "decimal",
            "udecimal"
          ],
          "api": "/academy/api?item=language--numeric-types",
          "lesson": "/academy/systems/yeho/language#feature-numeric-types"
        },
        {
          "id": "text-char-rune-bool",
          "title": "Text, char, rune, and bool",
          "summary": "text is an owned text value, char is a character literal unit, rune represents a Unicode scalar, and bool is true or false only.",
          "status": "stable",
          "keywords": [
            "text",
            "char",
            "rune",
            "bool"
          ],
          "api": "/academy/api?item=language--text-char-rune-bool",
          "lesson": "/academy/systems/yeho/language#feature-text-char-rune-bool"
        },
        {
          "id": "nullable-values",
          "title": "Nullable types",
          "summary": "A ? suffix declares a nullable reference-like value, but the complete flow analysis is not in the Kyber product path yet.",
          "status": "generated-cpp-only",
          "keywords": [
            "?",
            "null"
          ],
          "api": "/academy/api?item=language--nullable-values",
          "lesson": "/academy/systems/yeho/language#feature-nullable-values"
        }
      ]
    },
    {
      "id": "data",
      "title": "Data and objects",
      "description": "Things, classes, interfaces, fields, properties, visibility, inheritance, and invariants.",
      "features": [
        {
          "id": "things",
          "title": "Things: plain value data",
          "summary": "thing defines plain value-shaped data. It is Yeho's default way to name a bundle of related fields.",
          "status": "stable",
          "keywords": [
            "thing"
          ],
          "api": "/academy/api?item=language--things",
          "lesson": "/academy/systems/yeho/language#feature-things"
        },
        {
          "id": "classes-interfaces",
          "title": "Classes and interfaces",
          "summary": "class models reference identity and methods; interface defines a behavioral surface. Full dispatch remains on the comparison oracle.",
          "status": "generated-cpp-only",
          "keywords": [
            "class",
            "interface",
            "extends",
            "inherits",
            "implements",
            "override",
            "abstract",
            "sealed",
            "final"
          ],
          "api": "/academy/api?item=language--classes-interfaces",
          "lesson": "/academy/systems/yeho/language#feature-classes-interfaces"
        },
        {
          "id": "constructors-methods",
          "title": "Constructors, methods, static methods, and this",
          "summary": "A constructor is a same-name method inside a type. Instance methods can read this, while static methods belong to the type itself.",
          "status": "stable",
          "keywords": [
            "this",
            "static"
          ],
          "api": "/academy/api?item=language--constructors-methods",
          "lesson": "/academy/systems/yeho/language#feature-constructors-methods"
        },
        {
          "id": "fields-properties-visibility",
          "title": "Fields, properties, and visibility",
          "summary": "Members can be public, internal, protected, or private, with static, readonly, init, and get/set/init property shapes.",
          "status": "experimental",
          "keywords": [
            "public",
            "internal",
            "protected",
            "private",
            "static",
            "readonly",
            "init",
            "get",
            "set"
          ],
          "api": "/academy/api?item=language--fields-properties-visibility",
          "lesson": "/academy/systems/yeho/language#feature-fields-properties-visibility"
        }
      ]
    },
    {
      "id": "functions",
      "title": "Functions and calls",
      "description": "Declarations, returns, parameters, overloads, named arguments, defaults, contracts, and function values.",
      "features": [
        {
          "id": "functions",
          "title": "Function declarations and returns",
          "summary": "A function starts with its name, not a function keyword. Parameters are typed, -> names the return type, and a missing return type means void.",
          "status": "stable",
          "keywords": [
            "return",
            "->"
          ],
          "api": "/academy/api?item=language--functions",
          "lesson": "/academy/systems/yeho/language#feature-functions"
        },
        {
          "id": "parameters-calls",
          "title": "Defaults, named arguments, and overloads",
          "summary": "Trailing parameters can have defaults, calls can name arguments after positional ones, and functions can overload on admitted signatures.",
          "status": "stable",
          "keywords": [
            ":"
          ],
          "api": "/academy/api?item=language--parameters-calls",
          "lesson": "/academy/systems/yeho/language#feature-parameters-calls"
        },
        {
          "id": "contracts",
          "title": "Requires, ensures, and invariants",
          "summary": "Contracts attach executable meaning to valid inputs, promised outputs, and valid object state.",
          "status": "experimental",
          "keywords": [
            "requires",
            "ensures",
            "invariant"
          ],
          "api": "/academy/api?item=language--contracts",
          "lesson": "/academy/systems/yeho/language#feature-contracts"
        },
        {
          "id": "extension-functions",
          "title": "Extension functions",
          "summary": "Mark the first parameter extension to let an ordinary function use readable value.Method(...) call syntax.",
          "status": "stable",
          "keywords": [
            "extension"
          ],
          "api": "/academy/api?item=language--extension-functions",
          "lesson": "/academy/systems/yeho/language#feature-extension-functions"
        },
        {
          "id": "function-values",
          "title": "Function values, lambdas, and local functions",
          "summary": "Yeho has reserved syntax for typed function values and function(...) lambdas, but the feature is not in the Kyber product path.",
          "status": "generated-cpp-only",
          "keywords": [
            "function",
            "of",
            "to"
          ],
          "api": "/academy/api?item=language--function-values",
          "lesson": "/academy/systems/yeho/language#feature-function-values"
        }
      ]
    },
    {
      "id": "logic",
      "title": "Expressions and decisions",
      "description": "Arithmetic, comparison, boolean logic, casts, enums, flags, and exhaustive match branches.",
      "features": [
        {
          "id": "operators",
          "title": "Arithmetic, comparison, and bit operators",
          "summary": "Scalar expressions use explicit arithmetic, comparison, bitwise, shift, and unary operators with ordinary precedence.",
          "status": "stable",
          "keywords": [
            "+",
            "-",
            "*",
            "/",
            "==",
            "!=",
            "<",
            "<=",
            ">",
            ">=",
            "&",
            "|",
            "^",
            "<<",
            ">>",
            "~"
          ],
          "api": "/academy/api?item=language--operators",
          "lesson": "/academy/systems/yeho/language#feature-operators"
        },
        {
          "id": "boolean-logic",
          "title": "Boolean logic and short-circuiting",
          "summary": "Use !, and, and or with bool values. and and or short-circuit, so the right side runs only when needed.",
          "status": "stable",
          "keywords": [
            "!",
            "and",
            "or",
            "true",
            "false"
          ],
          "api": "/academy/api?item=language--boolean-logic",
          "lesson": "/academy/systems/yeho/language#feature-boolean-logic"
        },
        {
          "id": "if-else",
          "title": "If, else if, and else",
          "summary": "if branches on a bool expression. Parentheses around the condition are optional, and each branch uses a block.",
          "status": "stable",
          "keywords": [
            "if",
            "else"
          ],
          "api": "/academy/api?item=language--if-else",
          "lesson": "/academy/systems/yeho/language#feature-if-else"
        },
        {
          "id": "enums-match",
          "title": "Enums, payloads, and match",
          "summary": "enum names a closed set of cases. Payload cases can carry one typed value, and match selects a branch with an optional binding.",
          "status": "experimental",
          "keywords": [
            "enum",
            "match",
            "with",
            "else"
          ],
          "api": "/academy/api?item=language--enums-match",
          "lesson": "/academy/systems/yeho/language#feature-enums-match"
        },
        {
          "id": "flags-enums",
          "title": "Flags enums",
          "summary": "A [flags] enum represents combinable named bits. Test membership with .Has rather than treating a combination as one match case.",
          "status": "experimental",
          "keywords": [
            "[flags]",
            "enum",
            "Has"
          ],
          "api": "/academy/api?item=language--flags-enums",
          "lesson": "/academy/systems/yeho/language#feature-flags-enums"
        },
        {
          "id": "casts-type-checks",
          "title": "Type checks and casts",
          "summary": "is asks whether a value has a named type; as requests a cast to that named type.",
          "status": "experimental",
          "keywords": [
            "is",
            "as"
          ],
          "api": "/academy/api?item=language--casts-type-checks",
          "lesson": "/academy/systems/yeho/language#feature-casts-type-checks"
        }
      ]
    },
    {
      "id": "loops",
      "title": "Loops and iteration",
      "description": "While, infinite loops, range loops, collection loops, filters, indexes, and loop control.",
      "features": [
        {
          "id": "while-loop",
          "title": "While loops",
          "summary": "while repeats a block while its bool condition remains true.",
          "status": "stable",
          "keywords": [
            "while"
          ],
          "api": "/academy/api?item=language--while-loop",
          "lesson": "/academy/systems/yeho/language#feature-while-loop"
        },
        {
          "id": "infinite-loop-control",
          "title": "Loop, next, and end",
          "summary": "loop creates an explicit indefinite loop. next skips to the next iteration and end exits the nearest loop.",
          "status": "stable",
          "keywords": [
            "loop",
            "next",
            "end"
          ],
          "api": "/academy/api?item=language--infinite-loop-control",
          "lesson": "/academy/systems/yeho/language#feature-infinite-loop-control"
        },
        {
          "id": "range-for",
          "title": "Range for loops",
          "summary": "A range loop names its counter, start, exclusive or inclusive end, and optional step expression.",
          "status": "stable",
          "keywords": [
            "for",
            "from"
          ],
          "api": "/academy/api?item=language--range-for",
          "lesson": "/academy/systems/yeho/language#feature-range-for"
        },
        {
          "id": "collection-for",
          "title": "Collection loops, indexes, reverse, and where",
          "summary": "for can iterate collection values, expose an index, start that index elsewhere, reverse the traversal, or filter with where.",
          "status": "stable",
          "keywords": [
            "for",
            "in",
            "at",
            "reverse",
            "where",
            "to"
          ],
          "api": "/academy/api?item=language--collection-for",
          "lesson": "/academy/systems/yeho/language#feature-collection-for"
        }
      ]
    },
    {
      "id": "collections",
      "title": "Collections",
      "description": "Typed lists, maps, sets, literals, indexing, membership, and mutation.",
      "features": [
        {
          "id": "lists",
          "title": "Lists",
          "summary": "list of T is an ordered typed value container with literals, indexing, count, and explicit mutation methods.",
          "status": "experimental",
          "keywords": [
            "list",
            "of",
            "count",
            "Add",
            "Remove",
            "Contains"
          ],
          "api": "/academy/api?item=language--lists",
          "lesson": "/academy/systems/yeho/language#feature-lists"
        },
        {
          "id": "maps",
          "title": "Maps",
          "summary": "map of K to V associates typed keys with typed values. Map literals use key to value pairs.",
          "status": "experimental",
          "keywords": [
            "map",
            "of",
            "to",
            "Contains",
            "Remove"
          ],
          "api": "/academy/api?item=language--maps",
          "lesson": "/academy/systems/yeho/language#feature-maps"
        },
        {
          "id": "sets",
          "title": "Sets",
          "summary": "set of T stores unique typed values and supports membership and explicit mutation.",
          "status": "experimental",
          "keywords": [
            "set",
            "of",
            "Add",
            "Remove",
            "Contains",
            "count"
          ],
          "api": "/academy/api?item=language--sets",
          "lesson": "/academy/systems/yeho/language#feature-sets"
        }
      ]
    },
    {
      "id": "errors",
      "title": "Errors and contracts",
      "description": "Typed error values, preconditions, postconditions, invariants, and the current exception boundary.",
      "features": [
        {
          "id": "error-values",
          "title": "Typed error values",
          "summary": "error is a typed value created with Error(type, message) and exposes type and message fields.",
          "status": "experimental",
          "keywords": [
            "error",
            "Error",
            "type",
            "message"
          ],
          "api": "/academy/api?item=language--error-values",
          "lesson": "/academy/systems/yeho/language#feature-error-values"
        },
        {
          "id": "try-catch-throw",
          "title": "Try, catch, and throw",
          "summary": "The parser models try, catch, and throw, but exception control flow is not part of the Kyber product route today.",
          "status": "generated-cpp-only",
          "keywords": [
            "try",
            "catch",
            "throw"
          ],
          "api": "/academy/api?item=language--try-catch-throw",
          "lesson": "/academy/systems/yeho/language#feature-try-catch-throw"
        }
      ]
    },
    {
      "id": "memory",
      "title": "Memory and lifetime",
      "description": "Ordinary values, explicit copies, original aliases, address aliases, buffers, and the unsafe boundary.",
      "features": [
        {
          "id": "binding-modes",
          "title": "Ordinary, copy, original, and memoryAddress",
          "summary": "Binding modes make value transfer and aliases visible at function and loop boundaries.",
          "status": "experimental",
          "keywords": [
            "copy",
            "original",
            "memoryAddress",
            "extension"
          ],
          "api": "/academy/api?item=language--binding-modes",
          "lesson": "/academy/systems/yeho/language#feature-binding-modes"
        },
        {
          "id": "buffers",
          "title": "Buffers",
          "summary": "buffer of T is a shared resource shape used for explicit data movement and compute boundaries.",
          "status": "experimental",
          "keywords": [
            "buffer",
            "of"
          ],
          "api": "/academy/api?item=language--buffers",
          "lesson": "/academy/systems/yeho/language#feature-buffers"
        }
      ]
    },
    {
      "id": "concurrency",
      "title": "Tasks, time, and tunnels",
      "description": "Asynchronous work, delayed starts, waits, cancellation, parallel blocks, and bounded communication.",
      "features": [
        {
          "id": "tasks",
          "title": "Tasks and delayed work",
          "summary": "task starts a named function asynchronously, can carry a typed result, and can be delayed with after.",
          "status": "experimental",
          "keywords": [
            "task",
            "of",
            "after",
            "await"
          ],
          "api": "/academy/api?item=language--tasks",
          "lesson": "/academy/systems/yeho/language#feature-tasks"
        },
        {
          "id": "wait-stop-parallel",
          "title": "Wait, stop, and parallel",
          "summary": "wait can pause for a duration, frame, task, or condition. stop requests cancellation, and parallel scopes concurrent branches.",
          "status": "experimental",
          "keywords": [
            "wait",
            "until",
            "nextFrame",
            "frames",
            "stop",
            "parallel"
          ],
          "api": "/academy/api?item=language--wait-stop-parallel",
          "lesson": "/academy/systems/yeho/language#feature-wait-stop-parallel"
        },
        {
          "id": "tunnels",
          "title": "Tunnels",
          "summary": "tunnel carries typed values between concurrent work with capacity-one FIFO handoff and backpressure.",
          "status": "experimental",
          "keywords": [
            "tunnel",
            "of",
            "Send",
            "Receive",
            "hasValue"
          ],
          "api": "/academy/api?item=language--tunnels",
          "lesson": "/academy/systems/yeho/language#feature-tunnels"
        }
      ]
    },
    {
      "id": "compute",
      "title": "CPU and GPU compute",
      "description": "Portable compute functions, execution tags, dispatch, buffers, indexes, completion, and restrictions.",
      "features": [
        {
          "id": "compute-functions",
          "title": "Compute functions and execution tags",
          "summary": "compute defines a portable data-parallel kernel. [auto], [cpu], or [gpu] states the admitted execution preference.",
          "status": "experimental",
          "keywords": [
            "compute",
            "[auto]",
            "[cpu]",
            "[gpu]",
            "compute.index"
          ],
          "api": "/academy/api?item=language--compute-functions",
          "lesson": "/academy/systems/yeho/language#feature-compute-functions"
        },
        {
          "id": "compute-dispatch",
          "title": "Dispatch and computeTask",
          "summary": "dispatch launches a compute function and returns a computeTask whose finished, failed, and error state can be inspected.",
          "status": "experimental",
          "keywords": [
            "dispatch",
            "computeTask",
            "wait",
            "finished",
            "failed",
            "error"
          ],
          "api": "/academy/api?item=language--compute-dispatch",
          "lesson": "/academy/systems/yeho/language#feature-compute-dispatch"
        }
      ]
    },
    {
      "id": "packages",
      "title": "Packages and native interop",
      "description": "Using declarations, package visibility, manifests, C ABI declarations, effects, and target boundaries.",
      "features": [
        {
          "id": "using-external",
          "title": "Using and external declarations",
          "summary": "using imports a dotted package path. external makes an eligible top-level declaration visible outside its package.",
          "status": "stable",
          "keywords": [
            "using",
            "external"
          ],
          "api": "/academy/api?item=language--using-external",
          "lesson": "/academy/systems/yeho/language#feature-using-external"
        },
        {
          "id": "project-manifest",
          "title": "project.mech",
          "summary": "project.mech declares project identity, source roots, packages, target intent, and feature gates such as tuple experiments.",
          "status": "stable",
          "keywords": [
            "project.mech",
            "package",
            "version",
            "languageEdition",
            "experiments"
          ],
          "api": "/academy/api?item=language--project-manifest",
          "lesson": "/academy/systems/yeho/language#feature-project-manifest"
        },
        {
          "id": "extern-c",
          "title": "C ABI interop",
          "summary": "extern c declares an external function with cdecl by default and optional stdcall or sysv conventions.",
          "status": "experimental",
          "keywords": [
            "extern",
            "c",
            "cdecl",
            "stdcall",
            "sysv"
          ],
          "api": "/academy/api?item=language--extern-c",
          "lesson": "/academy/systems/yeho/language#feature-extern-c"
        }
      ]
    },
    {
      "id": "yui-start",
      "title": "YUI apps and surfaces",
      "description": "Create a native YUI project, connect its manifest, and author the first retained application surface.",
      "features": [
        {
          "id": "yui-create-project",
          "title": "Create and run a YUI application",
          "summary": "YUI is Yeho's native retained UI system. One command creates a project with Yeho behavior, a .yui interface, and a Kyber-ready Windows x64 application path.",
          "status": "candidate",
          "keywords": [
            "new",
            "yui",
            "check",
            "run"
          ],
          "api": "/academy/api?item=language--yui-create-project",
          "lesson": "/academy/systems/yeho/language#feature-yui-create-project"
        },
        {
          "id": "yui-project-manifest",
          "title": "Connect a .yui entry in project.mech",
          "summary": "The project manifest declares a frontend application and points to one deterministic .yui entry document. The SDK selects Kyber, so product manifests do not name a generated-C++ backend.",
          "status": "candidate",
          "keywords": [
            "project.mech",
            "frontend",
            "entry",
            "dependencies"
          ],
          "api": "/academy/api?item=language--yui-project-manifest",
          "lesson": "/academy/systems/yeho/language#feature-yui-project-manifest"
        },
        {
          "id": "yui-surfaces-layout",
          "title": "Surfaces, layouts, and widgets",
          "summary": "A surface is the root of an authored interface. Layout containers such as column, row, grid, stack, dock, overlay, and panel organize semantic widgets without turning the file into pixel-by-pixel drawing code.",
          "status": "candidate",
          "keywords": [
            "surface",
            "column",
            "row",
            "panel",
            "layout"
          ],
          "api": "/academy/api?item=language--yui-surfaces-layout",
          "lesson": "/academy/systems/yeho/language#feature-yui-surfaces-layout"
        }
      ]
    },
    {
      "id": "yui-authoring",
      "title": "YUI components and controls",
      "description": "Typed state, commands, properties, slots, reusable components, controls, layouts, and event bindings.",
      "features": [
        {
          "id": "yui-state-commands",
          "title": "Typed state, commands, and event bindings",
          "summary": "State names the values a surface reads. Commands name actions the application can perform. Widget bindings connect them explicitly, so an event is not a hidden string callback.",
          "status": "candidate",
          "keywords": [
            "state",
            "commands",
            "command",
            "onClick",
            "onChange",
            "onInput",
            "onSubmit"
          ],
          "api": "/academy/api?item=language--yui-state-commands",
          "lesson": "/academy/systems/yeho/language#feature-yui-state-commands"
        },
        {
          "id": "yui-components-slots",
          "title": "Reusable components, typed properties, and slots",
          "summary": "A project-local component can expose required or defaulted properties and named content slots. It imports like ordinary source and needs no compiler registration or global component catalog.",
          "status": "candidate",
          "keywords": [
            "import",
            "component",
            "property",
            "slot",
            "required",
            "default",
            "binding"
          ],
          "api": "/academy/api?item=language--yui-components-slots",
          "lesson": "/academy/systems/yeho/language#feature-yui-components-slots"
        },
        {
          "id": "yui-control-vocabulary",
          "title": "Controls, forms, navigation, and large data",
          "summary": "YUI's public widget vocabulary covers ordinary controls, forms, menus, overlays, navigation, tables, property editors, virtual lists, creator surfaces, and loading, empty, or error presentations.",
          "status": "candidate",
          "keywords": [
            "textField",
            "toggle",
            "slider",
            "menu",
            "dialog",
            "virtualList",
            "table",
            "dataGrid",
            "viewport"
          ],
          "api": "/academy/api?item=language--yui-control-vocabulary",
          "lesson": "/academy/systems/yeho/language#feature-yui-control-vocabulary"
        }
      ]
    },
    {
      "id": "yui-runtime",
      "title": "YUI rendering and access",
      "description": "The custom retained renderer, semantic accessibility tree, inspection path, performance model, and current platform boundary.",
      "features": [
        {
          "id": "yui-retained-rendering",
          "title": "Retained custom rendering and exact damage",
          "summary": "YUI owns one retained scene and renderer-neutral display commands. A mutation lowers only dirty owners, while semantic-only changes can update accessibility state without creating paint work.",
          "status": "candidate",
          "keywords": [
            "retained scene",
            "dirty owner",
            "damage",
            "display commands",
            "resources"
          ],
          "api": "/academy/api?item=language--yui-retained-rendering",
          "lesson": "/academy/systems/yeho/language#feature-yui-retained-rendering"
        },
        {
          "id": "yui-accessibility-interaction",
          "title": "One semantic tree for interaction and accessibility",
          "summary": "The same semantic nodes drive pointer and keyboard interaction, focus, accessible roles and names, visible state, bounds, commands, and custom rendering state.",
          "status": "candidate",
          "keywords": [
            "label",
            "description",
            "required",
            "disabled",
            "focused",
            "selected",
            "invalid",
            "loading",
            "empty"
          ],
          "api": "/academy/api?item=language--yui-accessibility-interaction",
          "lesson": "/academy/systems/yeho/language#feature-yui-accessibility-interaction"
        },
        {
          "id": "yui-inspection-boundary",
          "title": "Inspect YUI truth and respect the candidate boundary",
          "summary": "Readable and JSON inspection expose expanded widgets, bindings, semantic nodes, layout, display commands, resources, dirty receipts, damage, provider selection, and diagnostics without mutating the application.",
          "status": "candidate",
          "keywords": [
            "inspect",
            "--dump-yui",
            "--dump-yui-json",
            "Windows x64",
            "provider"
          ],
          "api": "/academy/api?item=language--yui-inspection-boundary",
          "lesson": "/academy/systems/yeho/language#feature-yui-inspection-boundary"
        }
      ]
    },
    {
      "id": "tools",
      "title": "Tools and inspection",
      "description": "Create, check, run, build, format, test, inspect, package, and expose compiler truth.",
      "features": [
        {
          "id": "compiler-inspection",
          "title": "Check and inspect compiler truth",
          "summary": "Compiler flags expose the parsed program, semantic model, project resolution, target check, truth report, and native bridge.",
          "status": "stable",
          "keywords": [
            "--check",
            "--check-target",
            "--dump-ast",
            "--dump-sema",
            "--dump-truth",
            "--dump-project",
            "--dump-native-bridge"
          ],
          "api": "/academy/api?item=language--compiler-inspection",
          "lesson": "/academy/systems/yeho/language#feature-compiler-inspection"
        },
        {
          "id": "workspace-commands",
          "title": "Format, lint, test, inspect, and package",
          "summary": "The Yeho wrapper keeps common engineering actions under one predictable command surface.",
          "status": "stable",
          "keywords": [
            "format",
            "lint",
            "test",
            "inspect",
            "package",
            "widget"
          ],
          "api": "/academy/api?item=language--workspace-commands",
          "lesson": "/academy/systems/yeho/language#feature-workspace-commands"
        }
      ]
    },
    {
      "id": "boundaries",
      "title": "Experiments and boundaries",
      "description": "Opt-in tuples, deprecated spellings, removed syntax, and features Yeho deliberately does not pretend to ship.",
      "features": [
        {
          "id": "tuples",
          "title": "Tuples and deconstruction",
          "summary": "Tuple values are an opt-in experiment, gated by tuple-values, and currently run only through generated C++.",
          "status": "generated-cpp-only",
          "keywords": [
            "tuple",
            "of",
            "deconstruct",
            "into"
          ],
          "api": "/academy/api?item=language--tuples",
          "lesson": "/academy/systems/yeho/language#feature-tuples"
        },
        {
          "id": "yielding-functions",
          "title": "Yielding functions",
          "summary": "yield can produce a sequence of values from one function, but the final lowering operation is deliberately rejected by Kyber today.",
          "status": "generated-cpp-only",
          "keywords": [
            "yield"
          ],
          "api": "/academy/api?item=language--yielding-functions",
          "lesson": "/academy/systems/yeho/language#feature-yielding-functions"
        },
        {
          "id": "planned-loop-mutations",
          "title": "Planned collection mutation",
          "summary": "plan remove, removeAt, add, and addAt describe mutations to apply around iteration without mutating the active traversal directly.",
          "status": "generated-cpp-only",
          "keywords": [
            "plan",
            "remove",
            "removeAt",
            "add",
            "addAt"
          ],
          "api": "/academy/api?item=language--planned-loop-mutations",
          "lesson": "/academy/systems/yeho/language#feature-planned-loop-mutations"
        },
        {
          "id": "deprecated-aliases",
          "title": "Deprecated migration spellings",
          "summary": "dobox, string, returns, and main.yh are accepted only to help older code move to the current language.",
          "status": "deprecated",
          "keywords": [
            "dobox",
            "string",
            "returns",
            "main.yh"
          ],
          "api": "/academy/api?item=language--deprecated-aliases",
          "lesson": "/academy/systems/yeho/language#feature-deprecated-aliases"
        },
        {
          "id": "unavailable-syntax",
          "title": "Deliberately unavailable language features",
          "summary": "Yeho Core 2026.1 explicitly does not admit generics, slices, interpolation, alternate numeric literals, compound assignment, computed properties, operator overloading, truthiness, or raw allocation/free.",
          "status": "unavailable",
          "keywords": [
            "generics",
            "slices",
            "interpolation",
            "+=",
            "operator",
            "malloc",
            "free"
          ],
          "api": "/academy/api?item=language--unavailable-syntax",
          "lesson": "/academy/systems/yeho/language#feature-unavailable-syntax"
        },
        {
          "id": "rejected-words",
          "title": "Removed and reserved statement words",
          "summary": "Several readable ideas are intentionally not source-language features yet. The compiler rejects them with a supported replacement instead of silently inventing behavior.",
          "status": "unavailable",
          "keywords": [
            "choice",
            "channel",
            "export",
            "event",
            "emit",
            "watch",
            "assert",
            "panic",
            "fatal",
            "finally",
            "const",
            "thread",
            "endLoops"
          ],
          "api": "/academy/api?item=language--rejected-words",
          "lesson": "/academy/systems/yeho/language#feature-rejected-words"
        }
      ]
    }
  ],
  "types": [
    {
      "title": "Core",
      "values": [
        "void",
        "bool",
        "text",
        "char",
        "rune",
        "error"
      ]
    },
    {
      "title": "Signed integers",
      "values": [
        "int8",
        "int16",
        "int",
        "int32",
        "int64",
        "int128"
      ]
    },
    {
      "title": "Unsigned integers",
      "values": [
        "byte",
        "uint8",
        "uint16",
        "uint",
        "uint32",
        "uint64",
        "uint128"
      ]
    },
    {
      "title": "Signed packed bits",
      "values": [
        "bit1",
        "bit2",
        "bit3",
        "bit4",
        "bit5",
        "bit6",
        "bit7",
        "bit8"
      ]
    },
    {
      "title": "Unsigned packed bits",
      "values": [
        "ubit1",
        "ubit2",
        "ubit3",
        "ubit4",
        "ubit5",
        "ubit6",
        "ubit7",
        "ubit8"
      ]
    },
    {
      "title": "Binary floats",
      "values": [
        "float8",
        "float16",
        "float",
        "float32",
        "float64",
        "float128"
      ]
    },
    {
      "title": "Signed decimals",
      "values": [
        "decimal8",
        "decimal16",
        "decimal",
        "decimal32",
        "decimal64",
        "decimal128"
      ]
    },
    {
      "title": "Unsigned decimals",
      "values": [
        "udecimal8",
        "udecimal16",
        "udecimal",
        "udecimal32",
        "udecimal64",
        "udecimal128"
      ]
    },
    {
      "title": "Containers and handles",
      "values": [
        "list of T",
        "map of K to V",
        "set of T",
        "buffer of T",
        "task",
        "task of T",
        "tunnel of T",
        "computeTask"
      ]
    },
    {
      "title": "Migration and experiments",
      "values": [
        "string (deprecated)",
        "tuple of A, B (gated)",
        "function of A to B (oracle only)"
      ]
    }
  ]
}
