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.2"
$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.