One file, several different doors
The compiler would like to leave the development machine. This is the moment when “it runs here” begins looking like a very small travel document.
Write down the host requirement
| Task | Required on the host |
|---|---|
| Run the released compiler | Erlang/OTP 29 |
| Build the compiler from source | Erlang/OTP 29 and Gleam |
Pooka’s distribution is one extensionless escript named pooka. It carries the compiled compiler and its Gleam dependencies. The host still needs Erlang/OTP 29; building the compiler from source also needs Gleam.
pooka --version
pooka new first_visit
cd first_visit
pooka test
The distinction between those requirements is useful. Somebody using a released compiler should not have to reconstruct the compiler’s own build environment first.
Make it travel before release day
build artifact -> checksum -> relocated compiler
-> new project
-> build and tests
-> application escript
One file does not mean one operating system. An escript can still contain assumptions about path separators, executable discovery, text encoding or the shape of a command shell. Put its directory name between two spaces and a surprising amount of confidence can fall out.
I want release checks that exercise the artifact as a user receives it: verify the checksum, move it away from the checkout, run it with Erlang available and Gleam absent, create a project, compile it and run tests.
Exporting that project’s own escript is a useful final turn. The compiler’s luggage and the application’s luggage are different things. Both need to survive the journey.
Try some less familiar doors
The same reasoning applies beyond the familiar machines. A 32-bit runtime or a big-endian target can expose a comfortable assumption that a faster development laptop never complains about. Emulated targets add useful coverage alongside native runners, though they do not make every possible deployment tested.
Installation instructions belong near the download, with the host requirement stated plainly. A checksum belongs beside the file, where it can help establish that the download arrived intact.
The compiler can be small enough to carry. Its travel arrangements should still be written down.
— Peregrine Finch