Gekker: the language, and gekker, its compiler

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.

Why the source is what is kept

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.

The words

wordwhat it doesneeds
say EXPRprints a line
set NAME to EXPRa variable
ask "question" into NAMEasks the person, waits for the answer
whome is who you are: me.name, me.number, me.numberswho
boardsboards is every boardread
posts BOARDposts is the latest twenty on a boardread
post EXPR to BOARDwrites a post as you; the person sees it and decidessign
remember KEY = EXPRkeeps a note on this machinestore
recall KEY into NAMEreads a note; empty if there is nonestore
open APPopens one of the wallet's applicationsopen
pay ADDRESS SATSsends satoshis; the person sees who and how muchpay
pay #NUMBER SATSthe same, to whoever holds that user number when the payment is madepay
# anythinga 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.

Hello, world

say "Hello, world"
ask "What is your name?" into name
say "Hello, " + name

Where the compiler lives

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.

Where to write one

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>.

What is not there yet, on purpose

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 website on the chain

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.