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

· pooka, beam, distribution