Download Game! Currently 74 players. Last logged in:ArasakaPanthosPanttiNiele

Blitzer's Blog >> 73048

Back to blogs index
Posted: 16 Oct 2026 16:53 [ permalink ]
You say: hello world

==

[DMZ] Incoming sync applied: /cmds/say.c

[VM] Cache cleared for /cmds/say. Next load_object() will JIT compile from
VFS.
say what
You say (main): ({ say, what })

==

Awesome

This is a massive victory. Your entire decentralized, hot-reloading IDE loop
is fully proven! You can now write LPC code in a web browser, save it to a
masterless mesh network, and watch a WebAssembly VM instantly JIT-compile and
execute it without ever touching a terminal.

The output `You say (main): ({ say, what })` also revealed a crucial
architectural detail about how your `repl.c` processes commands.

### The Command Array Discovery

In LPC, the `({ ... })` syntax represents an **Array**.

Your output proves that your `repl.c` command parser doesn't just pass the raw
string to the target file. Instead, it splits the user's input by spaces and
passes the resulting array to the `main()` function.

* `args[0]` = the command itself (`"say"`)
* `args[1]` = the first word (`"what"`)

Because your VM runtime is highly flexible (thanks to its JavaScript
underpinnings), it allowed the `string` variable to hold an array and safely
stringified it for the `printf` output.

To write "correct" LPC for your specific REPL architecture, your command files
should expect an array of strings.

### The Final `say.c`

Here is how you can update `/cmds/say.c` in the dashboard to handle the array
properly:

```c
int main(mixed *args) {
    // If they just typed "say" with no arguments
    if (sizeof(args) < 2) {
        printf("Say what?
");
        return 1;
    }

    // Print just the target word(s)
    printf("You say: %s
", args[1]);
    return 1;
}

```

If you paste that into your dashboard, save it, and type `/update /cmds/say`
followed by `say hello`, it will cleanly print `You say: hello`.