Hybriel

Hybriel

One language for every realm.

Write one program. The compiler knows which parts belong to the server, which to the browser — and generates the bridge. No fetch calls, no serializers, no API layer. on / emit is the only wire.

import Store from './store.hl'

String title = Store.postTitle($slug)   // fetched per request, on the server

View {
    article {
        h1 { title }
        button { 'save'
            on click() {
                emit saveNote({ slug = $slug })   // crosses the boundary
            }
        }
    }
}

Boundary crossing

A View anchors the client, a provider anchors the server; an emit whose name crosses realms becomes the transport. You never annotate a realm.

No virtual DOM

Holes, events and structural joints are known at compile time. A state write runs exactly the statements bound to it — work is O(changes), not O(view).

One binary

The native runtime serves SSR, live push over h1/h2/h3, TLS and gzip — from a project folder holding nothing but your own files.

The language

A file IS a class: typed members are state, functions are methods, the run body is the constructor. Hybrids are the one literal for objects, lists and config; strings are multi-line with real newlines. And on / emit is the only communication primitive — same words whether the event crosses a function, a socket or the server/browser boundary.

// note.hl → class Note — the file is the class
String title = 'untitled'      // typed member: state
Number saves = 0

save() {                       // a method
	saves = saves + 1
	emit saved({ title = title })   // anyone may listen
}

on saved(ev) {                 // ...including this class itself
	console.log('saved: ' + ev.title)
}

The language chapter has the longer story.

The CLI

One binary. Run a folder and its project.hl is the app; everything else is a subcommand.

hybriel .                  // run the project in this folder
hybriel script.hl          // run a single file
hybriel init web myapp     // scaffold: web · canvas · script
hybriel add hl:slack       // resolve, verify, pin in hybriel.lock
hybriel --offline .        // never touch the network, fail loudly
hybriel pack ./myplugin    // build src + target tarballs
hybriel --manifest .       // the static JSON a registry reads
hybriel --graph .          // the whole analysis, as JSON
hybriel toolchain install  // fetch zig for --native linking
hybriel --version

Install

One binary. Everything else — the stdlib included — is fetched on first use and cached.

curl -fsSL https://hybriel.worldapi.org/install.sh | bash
hybriel init web myapp
cd myapp && hybriel

Packages install from this very host: hybriel add hl:str verifies every byte against the registry's signed metadata and pins the version in hybriel.lock.

Rendered by hl:web — this page is a Hybriel component. Read the docs · browse the plugins