Installation
BlinkBlox comes in two parts. The compiler is a command-line program, blinkblox, that turns a
.blink schema into Luau modules on disk. The Studio plugin, BlinkBlox Editor, does the same
inside Roblox Studio with no external tooling. Both accept the same schema language and produce
the same modules, so pick whichever fits how you work. You can use both.
The compiler
Section titled “The compiler”Rokit is the recommended installer. It pins the version in
your project’s rokit.toml, so everyone who clones the project gets the same compiler.
From your project directory:
rokit add XopoIII/BlinkBlox blinkbloxThis downloads the build for your platform and records it in rokit.toml. blinkblox is now on
your PATH inside the project. To pin an exact version, name it:
rokit add XopoIII/BlinkBlox@1.2.1 blinkbloxTo move to the newest release later:
rokit update XopoIII/BlinkBloxAdd --global to rokit add to install it for every project on the machine instead.
The compiler is published to the pesde registry as xopoiii/blinkblox. It is
a binary package for the lune environment: pesde runs the compiler’s bundled Luau source under
Lune rather than downloading a native executable.
When LuneBlox is installed (rokit add XopoIII/LuneBlox luneblox), the compiler runs itself under it instead, with the same arguments and output. LuneBlox is
Lune on the Luau version Roblox runs, with Roblox’s fast flags, and it is what the native executables
above are built on. Set BLINKBLOX_NO_LUNEBLOX=1 to stay on the Lune pesde started.
In a project with a pesde.toml, add it as a dev dependency and install:
pesde add xopoiii/blinkblox --dev --target lunepesde installpesde exposes a package’s binary under its alias, so the command is blinkblox, exactly as with
the other installers.
Every release carries a prebuilt executable for each supported platform, packed in an archive with the executable alone inside:
| Platform | Archive |
|---|---|
| Windows, x86-64 | blinkblox-windows-x86_64.tar.gz |
| macOS, Apple silicon | blinkblox-macos-aarch64.tar.xz |
| macOS, Intel | blinkblox-macos-x86_64.tar.xz |
| Linux, x86-64 | blinkblox-linux-x86_64.tar.xz |
| Linux, ARM64 | blinkblox-linux-aarch64.tar.xz |
Unpack it and put the executable (blinkblox, or blinkblox.exe on Windows) somewhere on your
PATH:
tar -xJf blinkblox-linux-x86_64.tar.xzWindows 10 and later ship tar, so tar -xzf blinkblox-windows-x86_64.tar.gz works there too.
Check that it runs:
blinkblox --versionIt prints BlinkBlox followed by the version number. The command-line page
covers every flag.
The compiler as a library (Wally)
Section titled “The compiler as a library (Wally)”A game does not depend on BlinkBlox at runtime: it uses the modules the compiler generated, which need nothing else. The Wally package is for code that runs the compiler itself inside Roblox – a plugin, an in-Studio build step, an editor – and holds the same lexer, parser and generator as the command line and the Studio plugin, in one module.
[dev-dependencies]BlinkBlox = "xopoiii/blinkblox@1.2.1"local BlinkBlox = require(Packages.BlinkBlox)
local Output = BlinkBlox.Compile([[event Hit { From: Client, Type: Reliable, Call: SingleSync, Data: u8}]])
-- Output.Server, Output.Client and Output.Types are the modules' source text.Compile(Schema, Options?) returns the three modules’ text and a list of the warnings it raised,
rather than printing them. A schema that does not compile raises its diagnostic; inside Roblox it is
formatted with rich text, as the Studio plugin shows it. Options.Profile compiles under a
profile, and Options.Files maps the names an import writes to
the schemas it reads: import "Shared" reads Files.Shared. BlinkBlox.VERSION is the version the
modules’ headers name.
The Studio plugin
Section titled “The Studio plugin”The plugin, BlinkBlox Editor, gives you an editor with syntax highlighting, autocomplete and live diagnostics, and generates the modules straight into your place.
Install it from the Creator Store. Studio keeps it up to date from there.
Every release also carries the plugin as blinkblox-plugin.rbxm. Download it and put it in
Studio’s local plugins folder – in Studio, Plugins > Plugins Folder opens it – then restart
Studio. A plugin installed this way does not update itself; replace the file on each release.
The plugin and the compiler are released together from the same source and stamped with the same version. Keep them on the same release: the generated modules carry that version, and it is the first thing to compare when two builds disagree.
