A UI library in Ziran

Useful interfaces.
Clear foundations.

Kryon supplies widgets, layout, interaction, styling, and rendering decisions as ordinary Ziran modules. Ziran owns the language and compiler. Applications import Kryon when they need a UI.

Open source · Checked modules · Explicit host effects

01 / LANGUAGEZiran

General-purpose source, checked .zir, native generation, and portable .zx belong to Ziran.

02 / LIBRARYKryon

Importable .zi modules define UI behavior. Widget names have no special meaning to the compiler.

03 / PLATFORMHosts

Declared capabilities let platform adapters provide input, fonts, images, rasterization, and windows.

Try the current path

A checked button example.

The example imports Kryon’s Button and tree modules, runs a press and release in a portable bundle, and asks a separate headless host to write four SVG frames. No display server is required.

See build steps →
examples/hello.ziZiran source
#import "button_props"
#import "button_widget"
...
button: ButtonProps
button.label = "Hello, Ziran"
clicks += Button(session, button)
if EndFrame(session) != FrameOk { return -1 }

Excerpt from the tested source. Read the complete example ↗

Current state

Checked source.
Tested hosts.

make checks the maintained UI modules, writes .zir, generates C and Go, and compiles native outputs. make test exercises source, saved IR, and portable bundle behavior without a display.

Native hosts have Linux project tests, browser hosts run in private headless Chromium, and Android apps build as NativeActivity packages. Platform accessibility beyond the Linux AT-SPI bridge is still open.

Read the platform status →

The language behind Kryon

Meet Ziran.

Write non-graphical programs with Ziran alone. Import Kryon only for UI. The language site has the current toolchain guide, source reference, API, and implementation status.

Explore Ziran ↗