benz0li/ghc-musl

By benz0li

Updated about 2 months ago

GHC musl – Unofficial and untested binary distributions of GHC on Alpine Linux.

Image
Languages & frameworks
Developer tools
0

10K+

benz0li/ghc-musl repository overview

GHC musl

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Open in GitHub Codespaces

Unofficial and untested binary distributions of GHC on Alpine Linux.

The multi‑arch (linux/amd64, linux/arm64/v8) docker image used to build the statically linked Linux amd64 and arm64 binary releases of

Credit to

who laid the groundwork for this.

Credit to

who made it possible to add linux/riscv64 images (GHC versions ≥ 9.10.1).

Credit to

and for publishing linux/loong64 images.

Tags

See Version Matrix.

Usage

Run container
docker run --rm -ti docker.io/benz0li/ghc-musl:{latest,MAJOR[.MINOR[.PATCH]]}[-int-native]

As of 2023‑08‑12, the images (versions 9.2.8, 9.4.6, 9.6.2 and later) also include the Haskell Tool Stack (Stack).

On 2024‑02‑23, the binary distribution of GHC version 9.8.2 was released for Alpine Linux (AArch64).
❗ Use flags --no-install-ghc --system-ghc with Stack (GHC versions < 9.8.2) to ensure that only the GHC available in the container is used.

GMP licensing restrictions

The regular images produce binaries linked against the GNU Multiple Precision Arithmetic Library (GMP), which is used by default by the integer-gmp library to provide a big-integer implementation for Haskell.

Unlike most Haskell code, which is licensed under the permissive BSD3 license, the GMP library is licensed under LGPL. This means resulting statically linked binaries must be provided with source code or object files.

If that is not acceptable for your situation, use images with the int-native subtag. These images provide a GHC that links against the Haskell-native big-integer backend and produces statically linked binaries that are not subject to GMP's licensing restrictions.
ℹ️ Available for versions 9.6.7, 9.8.4, 9.10.1, 9.12.2 and later.

The current Dev Containers of this project use images with the int-native subtag.

Default linker

For GHC versions 9.10.2, 9.12.2 and later, the images with the int-native subtag use ld.lld (the LLVM linker) by default.

All other images use ld.bfd (the GNU linker) by default.

Dev Containers

The default Dev Container is meant to work on this repository.

The other configurations are custom GHC containers based on GHC musl images (int-native subtag).

For further information, see Dev Containers.

Similar projects

What makes this project different:

  1. Multi‑arch: linux/amd64, linux/arm64/v8
  2. Built using Hadrian3, from source, without docs
  3. Built using the LLVM backend. Flavours:
    • regular images: perf+split_sections+llvm
    • int-native subtag: perf+split_sections+llvm+native_bignum

Interesting to read:

Contributing

Where to file issues:

PRs accepted. Please submit to the GitLab repository.

This project follows the Contributor Covenant Code of Conduct.

Security

See Security policy.

License

MIT © 2021 Olivier Benz


1: Porting GHC to Linux/AArch64

2: Porting GHC to Linux/RISC-V (64-bit)

3: GHC versions ≥ 9.2.8

Tag summary

Content type

Image

Digest

sha256:7792a39f5

Size

882.5 MB

Last updated

about 2 months ago

docker pull benz0li/ghc-musl