Install on Windows
Nothing has run these binaries end to end. Both Windows targets are built by the release pipeline and never executed by it: windows/amd64 compiles and links natively, windows/arm64 is cross-compiled and is the newest, least proven target of all. windows/amd64 has shipped for several releases and has field use behind it; windows/arm64 has none.
The Buzz JIT is also newly enabled on Windows and its machine-code path has never run on a
Windows machine here. If a magusfile gives a result that looks wrong, set BUZZ_JIT=0 and
re-run: if the answer changes, that is a JIT bug and a very valuable report.
See platform support for the full matrix.
magus ships as a single self-contained binary. Download it with curl.exe, extract it into a PATH directory you own, then verify it before first run. Run these in PowerShell:
Quick install
# The hosted docs substitute the latest release tag below; on GitHub it reads
# literally - get the real value from https://github.com/egladman/magus/releases
$VERSION = "v0.4.3"
$ARCH = "amd64" # or arm64 on Windows on ARM
curl.exe -fLO "https://github.com/egladman/magus/releases/download/$VERSION/magus_${VERSION}_windows_${ARCH}_static.tar.gz"
mkdir -Force $Env:USERPROFILE\bin | Out-Null
tar -xzf "magus_${VERSION}_windows_${ARCH}_static.tar.gz" magus.exe
Move-Item -Force magus.exe $Env:USERPROFILE\bin\magus.exe
magus version
The archive also carries LICENSE, THIRD-PARTY-NOTICES, README.md, and a
BUILDINFO file naming the exact version, commit, platform, and variant. Naming
magus.exe on the tar line above extracts just the binary; drop it to unpack all of
them. BUILDINFO is readable without running anything, which is the point if a
dynamically linked build will not start.
Both curl.exe and tar ship with Windows 10 (1803+) and Windows 11, so no extra tooling is needed. $VERSION above is the current release; GitHub Releases lists every build.
To fill in $ARCH from the machine rather than by hand, $Env:PROCESSOR_ARCHITECTURE reads AMD64 or ARM64:
$ARCH = if ($Env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" }
Testing status
Windows binaries are built by the release pipeline but are not executed by CI, which runs on Linux only. windows/amd64 has shipped for several releases and has field use behind it; windows/arm64 is new and has never been run end to end.
The Buzz JIT is also newly enabled on Windows (it was disabled there until this release line) and its generated machine code has not executed on any Windows machine during development. If a magusfile gives a result that looks wrong, re-run with the JIT off:
$Env:BUZZ_JIT = "0"
magus run <target>
If the answer changes, that is a JIT bug rather than a magusfile bug, and it is a very useful thing to report. See Platform support.
Which archive
The _static archive above is what both architectures ship, and it is what magus self update fetches. No dynamically linked archive is published: on Windows it would link the MSYS2 mingw copies of libzstd/liblzma, which a user's machine has no reason to carry. magus run release-build:dynamic produces one from source if you want it.
Verify the download
Fetch the manifest and its signature next to the tarball:
curl.exe -fLO "https://github.com/egladman/magus/releases/download/$VERSION/SHA256SUMS"
curl.exe -fLO "https://github.com/egladman/magus/releases/download/$VERSION/SHA256SUMS.sig"
Then verify the Ed25519 signature first, and only then the checksum: checking a hash against an unverified manifest proves nothing. The exact commands are in Verify a release.
Put it on your PATH
If magus version is not found, add the install directory to your user PATH (persists across sessions):
[Environment]::SetEnvironmentVariable("Path", "$Env:USERPROFILE\bin;$Env:Path", "User")
Open a new PowerShell window afterward, then re-run magus version.
Next steps
- Verify the release before first run.
- Set up shell completion (PowerShell is supported).
- Keep it current with
magus self update.