HolyC apps
One file each, drawn with the shared toolkit. They run inside the desktop with no memory protection, so their permissions gate host services only.
Developers
One language, one live compiler, one package format. Write a window, test it in seconds, and ship it with permissions people can read.
Pick by how much isolation you need.
One file each, drawn with the shared toolkit. They run inside the desktop with no memory protection, so their permissions gate host services only.
A static site in the browser engine, bound by the browser sandbox. Calls to the desktop are checked against grants.
A real process on the Mac, limited to one workspace folder with a minimal environment. Limits, not a wall.
Python services behind the hub: weather, music, sheets, calendar, wallpapers. They hold the keys; the desktop only asks.
Six steps, from a window to an install.
A HolyC function that draws its body in logical units inside a window. The same code runs at 1x and 2x.
Reload the desktop from a saved snapshot in about 20 seconds, or run it headless on the native build with a driver script.
A manifest names the app, its version, publisher and the permission words it needs.
A .ksapp file is a zip with a manifest, a file list of hashes and your payload.
An Ed25519 signature over the file list. Unsigned packages still install, with a warning.
One sheet shows the publisher, the permissions and the verdict. Updates keep the same key.
{
"id": "com.example.notes",
"name": "Example Notes",
"version": "1.0.0",
"publisher": { "name": "Example Co" },
"description": "A small text editor.",
"license": "MIT",
"icon": { "lucide": "notebook" },
"permissions": ["storage:own"]
}Field names come from the installer note; check it for the exact schema, entry points and limits. The guest side of the installer is written but not yet run in a VM.
Boot once, save a snapshot, and reload new code in about 20 seconds.
Press b in the desktop for twelve scenarios, with the Monitor app showing frame times.
Catches the dialect traps below: U64 multiplies, continue, zero-assumed locals and stray dollar signs.
Golden scenes compared on x86 and the native build, with a pixel diff.
Scripted runs on the native build for icons, fonts, browser, sheet and more.
The dialect differences that have already cost us time.
| Trap | What to do |
|---|---|
U64 multiply truncates to 32 bits on arm64 | Use I64 for products. |
| Locals are not zeroed on the native build | Initialise every local. |
No continue in either build | Use a goto or restructure. HC+ plans the keyword. |
| Shifts bind tighter than multiply | Parenthesise any expression that mixes them. |
$ starts a DolDoc command | Write $$ in strings and comments. |
| Source is ASCII | Other characters become hyphens. |
PrintF with several arguments fails on the native build | Use Say or StrPrint. |
More in Security.
Permissions are plain words with one sentence each. Ask for less and installs go smoother.
A known key makes the install sheet calm. A new key asks the user to trust you.
The sheet itself says a HolyC app has no memory protection. Do not claim otherwise.
The reference is short, and the compiler is live.