Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
fe35127
Conditionalize the ghc-internal dependency on the ghc version.
angerman Sep 5, 2025
1c214c9
compiler: allow building with boot compiler that doesn't have ghc-int…
angerman Sep 5, 2025
bd1f2c7
ghc-pkg: Add support for mermaid diagram generation for markdown files
angerman Sep 5, 2025
6453dd9
ghc-pkg: Add support for --target
angerman Sep 5, 2025
dcd3c09
Allow Core plugins to access unoptimized Core (#23337)
hsyl20 Sep 4, 2025
55ea2a4
Print fully qualified unit names in name mismatch
hsyl20 Sep 5, 2025
2fb5c1a
testsuite: adapt to cabal update, and gate plugins-external by ghc_dy…
angerman Sep 2, 2025
e9938f9
testsuite: T20010 isn't broken on linux/non-dynamic only. It's also b…
angerman Sep 2, 2025
2635126
testsuite: T13786 does not appear broken on linux with non-dynamic.
angerman Sep 2, 2025
41c7119
deriveConstant: support symbols in the .bss section (#26393)
hsyl20 Sep 9, 2025
9988f92
Add note about stage2
angerman Sep 9, 2025
5c8031e
compiler: add better 'could not execute: ' error messageShowing that …
angerman Sep 9, 2025
be41fc2
ghc-toolchain: add output-settings
angerman Sep 9, 2025
9c54271
genprimopcode: add --wrappers/--prim-module
angerman Sep 9, 2025
6b94dba
ghc-config: add more fields
angerman Sep 9, 2025
984d5f9
unlit: use rts prefix
angerman Sep 9, 2025
1b1c5b3
Add .envrc
angerman Sep 9, 2025
3be58a1
feat: Modularize RTS and extract headers/filesystem utilities
Aug 28, 2025
a7db5b0
cabal: use feature/cross-compile branch
angerman Sep 9, 2025
231d6cb
libffi: drop
angerman Sep 9, 2025
bdf6452
system-cxx-std-lib: use cxx instead of c
angerman Sep 9, 2025
58c9bfc
compiler: add -no-rts flag
angerman Sep 9, 2025
2f803b5
remove configure.ac to prevent merge conflicts when rebuilding it
angerman Sep 10, 2025
5417a58
feat: Implement cabal-based multi-stage build system
hsyl20 Nov 15, 2024
58b2c3f
rts: split into sub libraries
angerman Sep 9, 2025
86e4c0a
testsuite: rts split adjustments
angerman Sep 9, 2025
75f0a74
Ignore LLVM Version
angerman Sep 6, 2025
a51a6ca
Link against rts sublib too
hasufell Sep 2, 2025
ea9d218
MAKE: Fix header copying
hasufell Sep 5, 2025
83800b1
TESTS: Skip uniques test if no git repo
hasufell Sep 5, 2025
e72ffe6
TESTS: Makefile fixes
hasufell Sep 5, 2025
2a8fcb3
Fix FreeBSD stage2/stage3
hasufell Sep 9, 2025
343b4e1
rts: check if we need -lm in configure
hasufell Sep 10, 2025
9088741
CI: Add release workflow
hasufell Sep 8, 2025
4bc51e2
TESTS: Add missing EXTRA_HC_OPTS
hasufell Sep 11, 2025
a602fd9
rts: Fix preprocessor flags
hasufell Sep 16, 2025
2b501ec
TESTS/CI: Skip T14999
hasufell Sep 18, 2025
08b34f8
Update cabal to support GHCs new '-fully-static'
hasufell Sep 25, 2025
8030194
Support statically linking executables properly
hasufell Sep 25, 2025
0e937c2
Warn when "-dynamic" is mixed with "-staticlib"
hasufell Oct 7, 2025
d77a4ed
Move wasm "ways" constraints to 'makeDynFlagsConsistent'
hasufell Oct 6, 2025
67a9998
Rename LinkBinary/BinaryLinkMode
hasufell Oct 7, 2025
e3c1b89
Make sure 'extra-libraries-static' is consistently defined
hasufell Oct 20, 2025
6d7e835
Add -exclude-static-external
hasufell Oct 9, 2025
925fed7
Add test for `-fully-static`
hasufell Oct 20, 2025
17644a2
Fix docs
hasufell Oct 27, 2025
f8d2020
Better error handling when linking statically
hasufell Oct 29, 2025
11cc5da
Add libffi-clib
hasufell Oct 21, 2025
c27db9f
Update libffi-clib submodule
hasufell Nov 3, 2025
9e51901
Use bundled libffi-clib
hasufell Oct 21, 2025
5439dfc
downstream: Use bundled libffi
hasufell Nov 3, 2025
bbb5ef0
GHC: enable PIC on linux/freebsd x86_64 too
hasufell Nov 3, 2025
579f6ef
Mark T25240 as fragile
hasufell Nov 4, 2025
e988723
Update T20604 stdout
hasufell Nov 4, 2025
813fbdb
TESTS: Mark T7040_ghci fragile on darwin x86_64 as well
hasufell Nov 5, 2025
0cf8b6c
TESTS: Mark T13786 as fragile on darwin x86_64 too
hasufell Nov 5, 2025
7f27a8b
Add test for `-static-external`
hasufell Oct 20, 2025
d69f61b
Fix mostly-static test on windows
hasufell Nov 5, 2025
376428e
Fix release creation
hasufell Nov 10, 2025
537b3a7
[stage1] remove hard ghc-internal/ghc-heap dependency from stage1
angerman Nov 20, 2025
3b46f8b
CI: Fix artifacts
hasufell Nov 12, 2025
616019f
build(Makefile): do not remove cabal with make clean
andreabedini Nov 10, 2025
237195a
Use modern __atomic builtins in atomic.c
angerman Nov 29, 2025
1268188
docs(readme): consolidate building and contributing guides into READM…
andreabedini Dec 1, 2025
5cfe9e3
build: remove boot
andreabedini Nov 10, 2025
034937a
fixup! feat: Modularize RTS and extract headers/filesystem utilities
andreabedini Oct 30, 2025
e63c803
fix(Makefile): missing dependency
andreabedini Oct 28, 2025
4342ab2
fix handling of index-state
andreabedini Oct 27, 2025
d1770db
refactor: reorganize cabal.project files
andreabedini Oct 7, 2025
1e59986
fix: add missing ghc-platform to cabal.project.stage1
angerman Dec 1, 2025
7d422aa
gitignore: add AI coding assistant configuration files
angerman Dec 3, 2025
271317b
Build external interpreter program on demand (#24731)
hsyl20 Oct 27, 2025
5dac9f5
Fix PIC jump tables on Windows (#24016)
hsyl20 Sep 24, 2025
4f13894
ghc-toolchain hack adding ways
hasufell Nov 27, 2025
18e5e95
Windows support
hasufell Nov 20, 2025
5c5811c
rts: Fix object file format detection in loadArchive
hasufell Dec 4, 2025
82aaf6f
rts: Initialize gc_thread timing fields in new_gc_thread
angerman Dec 8, 2025
5296ed7
rts: Add stgCallocAlignedBytes with zeroing semantics
angerman Dec 8, 2025
18fc70e
Bump mac x86 runners to macOS-15-intel
hasufell Dec 8, 2025
6c894ac
Don't build ghcjs on mac x86_64
hasufell Dec 9, 2025
d6ea724
Filter ld garbage on mac
hasufell Dec 9, 2025
4cee572
rts: Fix negative exit_elapsed_ns on Alpine/musl by clamping
angerman Dec 11, 2025
5d7aaff
feat: rebrand as Stable Haskell Edition
angerman Dec 5, 2025
9cbe6d3
fix: update test expectations for Stable Haskell bug report URL
angerman Dec 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Check if nix-direnv is already loaded; if not, source it
if ! has nix_direnv_reload; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.7/direnvrc" "sha256-bn8WANE5a91RusFmRI7kS751ApelG02nMcwRekC/qzc="
fi

# Use the specified flake to enter the Nix development environment
use flake github:input-output-hk/devx#ghc98-minimal-ghc
25 changes: 25 additions & 0 deletions .github/actions/download/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: 'Download artifact'
description: 'Download artifacts with normalized names'
inputs:
name:
required: true
type: string
path:
required: true
type: string

runs:
using: "composite"
steps:
- name: Normalise name
run: |
name=${{ inputs.name }}
echo "NAME=${name//\//_}" >> "$GITHUB_ENV"
shell: bash

- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ env.NAME }}
path: ${{ inputs.path }}

33 changes: 33 additions & 0 deletions .github/actions/upload/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: 'Upload artifact'
description: 'Upload artifacts with normalized names'
inputs:
if-no-files-found:
default: 'error'
type: string
name:
required: true
type: string
path:
required: true
type: string
retention-days:
default: 0
type: number

runs:
using: "composite"
steps:
- name: Normalise name
run: |
name=${{ inputs.name }}
echo "NAME=${name//\//_}" >> "$GITHUB_ENV"
shell: bash

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
if-no-files-found: ${{ inputs.if-no-files-found }}
retention-days: ${{ inputs.retention-days }}
name: ${{ env.NAME }}
path: ${{ inputs.path }}

75 changes: 75 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: CI

# Trigger the workflow on push or pull request, but only for the master branch
on:
pull_request:
types:
- opened
- synchronize
push:
branches: [master]

workflow_dispatch:

jobs:
cabal:
name: ${{ matrix.plat }} / ghc ${{ matrix.ghc }}
runs-on: "${{ fromJSON('{\"x86_64-linux\": \"ubuntu-24.04\", \"aarch64-linux\": \"ubuntu-24.04-arm\", \"x86_64-darwin\": \"macos-latest\", \"aarch64-darwin\": \"macos-latest\"}')[matrix.plat] }}"

strategy:
fail-fast: false
matrix:
plat:
- x86_64-linux
# - aarch64-linux # disabled: waiting for devx images to be fixed
# - x86_64-darwin # disabled: waiting for devx images to be fixed
- aarch64-darwin
ghc: ['98'] # bootstrapping compiler

steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"

- uses: input-output-hk/actions/devx@latest
with:
platform: ${{ matrix.plat }}
compiler-nix-name: 'ghc98'
minimal: true
ghc: true

- name: Update hackage
shell: devx {0}
run: cabal update

# The Makefile will run configure (and boot 😞), we also need to create a
# synthetic package before running configure. Once this nuissance is fixed
# we can do proper configure + make again. Until then... we have to live
# with the hack of running everything from the make target.
# - name: Configure the build
# shell: devx {0}
# run: ./configure

- name: Build the bindist
shell: devx {0}
run: make CABAL=$PWD/_build/stage0/bin/cabal

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.plat }}-bindist
path: _build/bindist

- name: Run the testsuite
shell: devx {0}
run: make test CABAL=$PWD/_build/stage0/bin/cabal

- name: Upload test results
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }} # upload test results even if the testsuite failed to pass
with:
name: ${{ matrix.plat }}-testsuite-results
path: |
_build/test-perf.csv
_build/test-summary.txt
_build/test-junit.xml
46 changes: 46 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Build and release

on:
push:
tags: ['*']
pull_request:
types: [opened, synchronize, reopened, labeled]
branches:
- stable-ghc-9.14
schedule:
- cron: '0 0 * * *'
workflow_dispatch:

permissions:
pull-requests: read
contents: write

jobs:
release-workflow:
uses: ./.github/workflows/reusable-release.yml
with:
branches: '["${{ github.ref }}"]'

release:
name: release
needs: [ "release-workflow" ]
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download artifacts
uses: actions/download-artifact@v4
with:
pattern: artifacts-*
merge-multiple: true
path: ./out

- name: Release
uses: softprops/action-gh-release@v2
with:
draft: true
files: |
./out/*

Loading
Loading