Capability Matrices
Widgets and language support
A compact view of what Kryon supports through C, .kry lowering, Go generation, hand-written Go, and KRB cartridges. See the language reference for syntax and lowering rules.
Automated
Conformance Matrix
Generated from checked-in .kry examples, generated-runtime parity fixtures, and renderer evidence. The JSON backing this view is refreshed by tests/feature_matrix_docs_test.sh; source-pipeline and KRB visual cells are verified by make conformance-matrix-check, with renderer-specific gates listed below.
Loading generated matrix...
Pipelines
| Pipeline | Path | Status | Evidence |
|---|
Renderers and Platforms
| Renderer | Platform | Approach | Status | Evidence | Matrix Scope | Notes |
|---|
Renderer Smoke Gates
| Gate | Command | Scope |
|---|
Visual Comparisons
Capture gates prove a renderer draws a nonblank frame. Comparison rows show whether that output is actually pixel-compared against another renderer.
| Pair | Mode | Status | Compared Sources | Known Gaps | Evidence | Scope |
|---|
Runtime Parity Gates
| Gate | Command | Scope |
|---|
Downstream Consumer Gates
| Consumer | Command | Scope |
|---|
Source Cases
Each source starts as .kry. Pipeline columns show lowering coverage; renderer columns show the strongest current evidence for that same source on each renderer/platform path.
| Source | Type | k2ir | k2c | k2g | k2js | k2b | Renderers | Widgets | State Evidence |
|---|
Widget Coverage
| Widget | Status | Sources | Source Cases | State Evidence |
|---|
Language
Pipeline Matrix
| Target | Producer | Runtime | Status |
|---|---|---|---|
| C | k2c | cc + libkryon.a | Production path; most complete |
| Go | k2g | go/kryon native Go package | Declarative subset with executable CI gate |
| JS/Web | k2js | web/kryon-runtime.js ESM recorder/presenter | Syntax, Node recorder snapshots, and generated runtime state parity gated |
| KRB cartridge | k2b | KrbLoad/KrbExec on a KryBackend | Portable widget subset; byte-exact renderer tests |
| KIR | k2ir | Inspection artifact | Debugging and tooling only |
| Feature | C | Go | KRB |
|---|---|---|---|
| Theming | 6 palettes, light/dark, scopes, vars | Theme control APIs | Theme color slots |
| Style tokens | Radius, border, shadow, style presets | Get/set token API | No token model |
| Text/fonts | Fallback fonts; no shaping, bidi, or IME | Font registry and input queue | font8x8 or KFA1 atlas |
| Input | Pointer, keyboard, clipboard; no IME/gamepad nav | Key, mouse, char APIs | Mouse, wheel, text-key queue |
| Accessibility | Debug a11y structs; no screen-reader bridge | Not exposed | Not exposed |
| Dialogs/platform | Portal, GTK, shell pickers, notifications, tray, XDG | Tray and notify polling | Host capability imports |
Widgets
Widget Matrix
Columns: C is the public runtime API. k2c follows C because library calls compile as C-close statements. k2g, k2js, and KRB deliberately cover smaller subsets.
Display
| Widget | C | k2c | k2g | Go | KRB |
|---|---|---|---|---|---|
| Background, Text, TextInRect | Yes | Yes | Yes | Yes | Nodes |
| Paragraph, TextLines | Yes | Yes | Yes | Yes | Not lowered |
| Rect, Line, Bevel | Yes | Yes | Yes | Yes | Nodes |
| IconTexture | 114 icons | Yes | By icon type | Yes | Not lowered |
| Image/Picture | Yes | Yes | Picture props | Yes | Embedded asset or PNG |
Input
| Widget | C | k2c | k2g | Go | KRB |
|---|---|---|---|---|---|
| Button | Yes | Yes | ButtonProps | Yes | Button control |
| IconButton | Yes | Yes | IconButton subset | Subset | Not lowered |
| Href / IconLink | Yes | Yes | Href only | Href only | Not lowered |
| TextField, TextArea | Yes | Yes | Yes | Yes | TextField only |
| Dropdown | Yes | Yes | No rich option arrays | Yes | Dropdown control |
| Slider, Toggle, Checkbox | Yes | Yes | Yes | Yes | Controls |
| Radio, Progress, Spinbox, Combobox | Yes | Yes | Yes | Yes | Spinbox/combobox only |
| ColorPicker, InfoButton | Yes | Yes | Not exposed | Not exposed | Not lowered |
Layout, Collections, Navigation
| Family | C | k2c | k2g | Go | KRB |
|---|---|---|---|---|---|
| Column, Row, Stack | Yes | Yes | Yes | Yes | Structural nodes |
| Scroll container | Yes | Yes | Scroll/EndScroll | Yes | Scroll node |
| Notebook, PanedView, Collapsible | Yes | Yes | Yes | Yes | Not lowered |
| Canvas helpers | Yes | Yes | Canvas helpers | Yes | Not lowered |
| ListBox, SourceView, TableView | Yes | Yes | Yes | Yes | Not lowered |
| TreeView, CascadingTreeView | Yes | Yes | Not exposed | Not exposed | Not lowered |
| TabBar, BottomNav, TopNav, Toolbar | Yes | Yes | Main controls only | Main controls | NavButton as button |
| Modal, Toast, dialogs | Yes | Yes | Modal/toast/dialog subset | Subset | Not lowered |
Caveats
Known Gaps
- Retained painting: the retained tree paints a smaller subset than immediate mode and routes retained input mainly for button/text-field paths.
- Text shaping: font fallback works, but HarfBuzz shaping, bidi, RTL mirroring, and IME preedit are not implemented yet.
- KRB: intentionally portable and smaller than the full C catalog; unsupported widget calls are reported per file by
k2b.