How to install GoloScript
This guide shows how to get golo — and, if you want them, gogolo and wagolo — onto a machine, and how to check that Turbo Golo can find it. It assumes you already have Turbo Golo, or are about to — see how to install the editor for that.
The editor works without any of this. Editing, colouring, themes, snippets and terminal windows all run with no interpreter at all. What needs it is completion, the error marks in the gutter, and every command in the Golo menu.
Which binary you need
GoloScript ships three, under one version:
| Binary | What it is for | Also needs |
|---|---|---|
golo |
The interpreter: runs scripts, and is also the REPL, the debugger, the test runner and the language server | nothing |
gogolo |
Compiles a script to a native executable, through Go | the Go toolchain |
wagolo |
Compiles a script to WebAssembly, through Go and TinyGo | TinyGo, and wasm-tools for the wasip2 target |
The editor needs golo and nothing else. gogolo and wagolo are what the Build native and Build wasm items in the Golo menu run; without them those two items report command not found and the rest of the menu is unaffected.
Install a release
Precompiled binaries for macOS (Intel and Apple Silicon), Linux (amd64, arm64, 386) and Windows (amd64, arm64, 386) are on the releases page. Each is one file:
chmod +x golo-<version>-<platform>
sudo mv golo-<version>-<platform> /usr/local/bin/golo
golo --version
On macOS an unsigned download is quarantined until you say otherwise, in System Settings ▸ Privacy & Security or with xattr -d com.apple.quarantine golo-<version>-<platform>.
Repeat for gogolo and wagolo if you want the compilers.
Or build from source
This gives you all three at once, into /usr/local/bin. It needs Go; wagolo builds without TinyGo but cannot compile anything until TinyGo is installed.
git clone https://codeberg.org/TypeUnsafe/golo-script.git && cd golo-script
./install.sh
Turbo Golo's own installer will do exactly that when asked:
scripts/install.sh --with-server
It clones GoloScript into a temporary directory and runs its install.sh, which asks for sudo when it copies into /usr/local/bin.
Check it
golo --version
v0.1.1 | dev.20260802.🤓
And the language server specifically — it is the interpreter, so this is a subcommand rather than a second binary:
golo lsp </dev/null
It reads nothing, sees the end of its input, and exits cleanly. A golo that prints its usage or starts a REPL here is a different program with the same name.
Check that the editor finds it
Open any .golo file and read the right-hand end of the status bar:
F1 Describe F2 Save F3 Open F6 Window F10 Menu 1:1 LSP: ready
LSP: ready means the server started. LSP: no golo — see https://codeberg.org/TypeUnsafe/golo-script/releases means it was not found, and the message says where to get it.
Turbo Golo looks in two places, in order: your PATH, then /usr/local/bin. The second is where GoloScript's installer writes, and it is searched even when it is not on PATH — a shell started by a desktop launcher, say — so that the case that otherwise looks like the server being broken works.
Variants
- You install binaries somewhere else. Put that directory on
PATH; the editor has no environment variable naming another place to look. A symbolic link in/usr/local/binalso works. - You already have
golobut no completion. Rungolo lsp </dev/nulland make sure it exits quietly. Then read the status bar —Run ▸ Language server statusshows the path the editor found and whether the server answered its handshake. - You want to upgrade. Replace the binary — a release download or
./install.shagain from a freshgit pull. Restart the editor: it starts one server per session and does not notice a new binary until then. - You are installing for CI, or into an image. GoloScript publishes a
scratch-based image holding the interpreter alone:docker run --rm -v "$PWD:/app" -w /app k33g/gololang:<tag> /golo ./main.golo. The editor cannot use a server inside a container, so this is for running scripts, not for completion. - You want to be sure the editor is not simply finding it on
PATH. Start it with a stripped environment —env PATH=/usr/bin:/bin turbo-golo main.golo— and the status bar should still sayLSP: ready, from/usr/local/bin.
What each binary is for, from the editor's side
| Binary | What the editor uses it for |
|---|---|
golo |
golo lsp — completion, hover, definitions, the file's symbols and the error marks; and the Run, Test, Test one, Debug, REPL and New script items of the Golo menu |
gogolo |
The Build native item |
wagolo |
The Build wasm item |
See also
- How to enable completion — what to do when the server is installed and still says nothing
- How to run Golo commands from the editor — the Golo menu
- Colouring and completion — why the interpreter is the server
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
|