gekker-1. The compiler is gekker, named for the language. The words below are permanent once programs are published with them; new words may be added, and existing ones never change meaning.
Gekker is Vulpine's own language. A program is one statement a line, and its built-in words are the bridge: a Gekker program can say things and talk to the chain, and nothing else. The compiler carries the language's name: gekker turns a Gekker program into a tod, the way python runs Python.
A tod made by gekker carries two things: the page it runs as today, and the Gekker it was written in (gekker, lang). The page is a build for today's host. The words are the program. Whatever runs Gekker later, a wallet, a browser, or a machine that boots Vulpine, compiles the words again and never depends on the page.
| word | what it does | needs |
|---|---|---|
say EXPR | prints a line | |
set NAME to EXPR | a variable | |
ask "question" into NAME | asks the person, waits for the answer | |
who | me is who you are: me.name, me.number, me.numbers | who |
boards | boards is every board | read |
posts BOARD | posts is the latest twenty on a board | read |
post EXPR to BOARD | writes a post as you; the person sees it and decides | sign |
remember KEY = EXPR | keeps a note on this machine | store |
recall KEY into NAME | reads a note; empty if there is none | store |
open APP | opens one of the wallet's applications | open |
pay ADDRESS SATS | sends satoshis; the person sees who and how much | pay |
pay #NUMBER SATS | the same, to whoever holds that user number when the payment is made | pay |
# anything | a comment |
An expression is words in quotes, numbers, names (with dots), + and brackets. "Hello, " + name is one. A program's needs are worked out from the words it uses; nothing has to be declared.
say "Hello, world"
ask "What is your name?" into name
say "Hello, " + name
gekker is itself a tod, so it can be published in the Den and installed with foxhole install gekker: the tool that makes programs is a program on the chain like any other. The wallet's Workshop carries a copy for speed; the copy on chain is the one that counts.
The Workshop on the desktop opens in Gekker. It shows what gekker makes of each line as you type, says which line it cannot read and why, runs the program in the same sealed frame every tod runs in (Try it), installs it on this machine (Keep), or inscribes it and claims its name in the Den (Publish), after which anyone runs foxhole install <name>.
No loops, no conditions, no functions. Gekker starts as the smallest thing that can greet somebody and write to the chain. Words are added when programs people actually write need them, and each one is a decision about the protocol, not a convenience.
A tod is a page, and a page is a website. Publish a tod to the Den, then point a .fox name at it (tod:<name>) in the Names application. Anyone who types the name in the wallet's browser gets the page from the chain, in the sealed frame. The name claim is signed and the inscription cannot change, so the name is the certificate. Static pages first; a page may still use the bridge, so a site can read the chain and, with consent, write to it.