Catalog · How the catalog works
installer
One-click installer bundling the Unleashed Pascal compiler + IDE (Windows/Linux)
- ★ 20 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
Unleashed Pascal Installer
Official installer for the Unleashed Pascal project. Downloads source, builds the Unleashed Pascal compiler and IDE into a self-contained directory of your choice. No registry side effects, no PATH modification, no overwriting of system FPC.
Release artifacts
installer_win64_x86_64.exe- Windows hostinstaller_linux_x86_64- Linux host (raw ELF64)installer_linux_x86_64.AppImage- Linux host (AppImage, self-contained)
All three are published to the nightly release; pick whichever suits your distro / preference.
What the installer does
Pick a target directory, optionally pin commits, tick the cross compilers you want, click Install. The installer then:
- Downloads a bootstrap FPC (plus a portable git on Windows) and fetches the Unleashed Pascal compiler + Unleashed Pascal IDE sources with git.
- Builds the native compiler for the host OS, then any cross targets you ticked.
- Builds the IDE and any optional addons you ticked.
- Drops a desktop shortcut to the IDE, wired to a per-install IDE config so the install stays isolated from anything else on the system.
Re-runs are idempotent: unchanged components self-skip, ticked-but-missing targets get filled in, unticked-but-present targets get removed, addon toggles trigger a surgical IDE rebuild. State lives in <install>/installer.ini.
Install dir defaults: C:\unleashed\ on Windows, $HOME/unleashed/ on Linux.
Cross-target support matrix
| Target | From win64 host | From linux64 host |
|---|---|---|
x86_64-win64 |
native | cross via the compiler's internal PE/COFF linker (-Xi) |
x86_64-linux |
cross | native |
i386-win32 |
cross | cross |
i386-linux |
cross | cross; needs i386-win32 as prereq |
wasm32-wasip1 |
cross | cross |
Linux host requirements
The native compile and the GTK3 build of the IDE need a working toolchain on the host:
# Debian / Ubuntu / Mint
sudo apt install -y curl git build-essential libgtk-3-dev xdg-utils
# Fedora
sudo dnf install -y curl git make gcc binutils glibc-devel gtk3-devel xdg-utils
# openSUSE
sudo zypper --non-interactive install curl git make gcc binutils glibc-devel gtk3-devel xdg-utils
# Arch / Manjaro
sudo pacman -S --needed curl git base-devel gtk3 xdg-utilsTested baseline: glibc 2.28+ (Ubuntu 18.04+, Debian 10+, Fedora 29+).
Filename hash pin
A release binary can carry a compact <len><payload> blob in its filename so the installer pre-fills the compiler / IDE commit and branch fields on startup - without baking long commit SHAs or branch names into the binary name.
Layout (4 positional fields, all optional, concatenated with no separators):
| Pos | Meaning |
|---|---|
| 1 | compiler commit / predefined branch |
| 2 | ide commit / predefined branch |
| 3 | compiler branch hash override (optional, hash-only) |
| 4 | ide branch hash override (optional, hash-only) |
Each field is <L><L-hex-chars>:
For pos 1 and 2:
-
0X- predefined namespace, X selects a built-in branch:0= main1= devel
Commit is "latest of that branch" semantically.
-
<L><L-hex>with L in 1..9 - L hex chars follow = pinned commit-SHA prefix. Branch is implicitlymain. Override the implicit main via pos 3 if you want a different branch.
For pos 3 and 4 (branch override, hash-only):
<L><L-hex>with L in 1..9 - L hex chars = murmur3 prefix of the branch name. Picks whichever currently-active branch hashes to that prefix; collisions are resolved by encoding a longer prefix at build time.
The override slot has no predefined namespace - if you want a predefined branch, write it in pos 1 / 2 instead.
Branch hashes are generated by the branchhash CLI tool sitting next to the installer source:
branchhash <branch-name> [<total-len>]- 1st arg: branch name (e.g.
feat/composable-records) - 2nd arg (optional): total chars to emit including the length digit, default
3, max9. Sobranchhash feat/composable-recordsoutputs a 3-char token (2xx= len 2 + 2 hex chars).
Examples
| Filename token | Pin |
|---|---|
00 |
compiler on main, latest commit. ide defaults to main + latest. |
0000 |
both compiler and ide on main + latest (explicit). |
0101 |
both compiler and ide on devel + latest. |
1a1b |
compiler commit pin a, ide commit pin b, both on main (implicit). |
00011a |
compiler on main, ide on devel, compiler branch overridden to whatever hashes to a. |
0001266 |
compiler on main, ide on devel, compiler branch override hash 66 (3-char field). |
1a2bc266266 |
compiler commit a, ide commit bc, then both branches overridden via hash 66. |
The parser picks the LAST hex+digit run of >= 2 chars in the filename. There is no fallback to an earlier run - if the chosen run fails to parse, the install just starts at defaults.
Cmdline override (for testing)
You can pass the blob as the first cmdline argument to the installer; it parses with the exact same rules as the filename and overrides whatever the filename encodes:
installer_win64_x86_64.exe 0000366f366fThe Commit edit fields and Branch combos fill in on startup.
License
Source published for audit. See LICENSE - free to run, free to read, free to build yourself, no forks.

