Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
749b7fb
Conditionalize the ghc-internal dependency on the ghc version.
angerman Sep 5, 2025
b16af54
compiler: allow building with boot compiler that doesn't have ghc-int…
angerman Sep 5, 2025
7ba3136
Allow Core plugins to access unoptimized Core (#23337)
hsyl20 Sep 4, 2025
0d3ead9
Print fully qualified unit names in name mismatch
hsyl20 Sep 5, 2025
2ea64e7
compiler: add better 'could not execute: ' error messageShowing that …
angerman Sep 9, 2025
5295374
system-cxx-std-lib: use cxx instead of c
angerman Sep 9, 2025
7103d3c
ghc-pkg: Add support for mermaid diagram generation for markdown files
angerman Sep 5, 2025
046f672
ghc-pkg: Add support for --target
angerman Sep 5, 2025
d527f4b
ghc-pkg: add unitDataDir field to InstalledPackageInfo
angerman Feb 21, 2026
3c34ec9
deriveConstant: support symbols in the .bss section (#26393)
hsyl20 Sep 9, 2025
60ff5de
Normalise LLVM target triple for Apple platforms (aarch64 -> arm64)
angerman Feb 26, 2026
5b70175
ghc-internal: Add --with-compiler configure option
angerman Feb 18, 2026
261d120
gitignore: add AI coding assistant configuration files
angerman Dec 3, 2025
b28d538
compiler: add -no-rts flag
angerman Sep 9, 2025
95d0193
Support statically linking executables properly
hasufell Sep 25, 2025
d55306c
Warn when "-dynamic" is mixed with "-staticlib"
hasufell Oct 7, 2025
05e275c
Move wasm "ways" constraints to 'makeDynFlagsConsistent'
hasufell Oct 6, 2025
d7cad13
Rename LinkBinary/BinaryLinkMode
hasufell Oct 7, 2025
9d18299
Make sure 'extra-libraries-static' is consistently defined
hasufell Oct 20, 2025
ca3303e
Add -exclude-static-external
hasufell Oct 9, 2025
ae7cf2f
Add test for `-fully-static`
hasufell Oct 20, 2025
5f61265
Fix docs
hasufell Oct 27, 2025
a0f9a79
Better error handling when linking statically
hasufell Oct 29, 2025
4a54d22
GHC: enable PIC on linux/freebsd x86_64 too
hasufell Nov 3, 2025
17ef33b
Add test for `-static-external`
hasufell Oct 20, 2025
ff15b1d
Fix mostly-static test on windows
hasufell Nov 5, 2025
7ddcaa6
Build external interpreter program on demand (#24731)
hsyl20 Oct 27, 2025
b9bf745
compiler: fix comment to match renamed linkExecutable
angerman Feb 11, 2026
bb8b9ff
ghc-bin, ghc-iserv: export RTS symbols for dynamic code loading
angerman Feb 6, 2026
e602888
Use modern __atomic builtins in atomic.c
angerman Nov 29, 2025
d67d39f
rts: Fix object file format detection in loadArchive
hasufell Dec 4, 2025
509e1d3
rts: Initialize gc_thread timing fields in new_gc_thread
angerman Dec 8, 2025
1d7b991
rts: Add stgCallocAlignedBytes with zeroing semantics
angerman Dec 8, 2025
47e5861
rts: Fix negative exit_elapsed_ns on Alpine/musl by clamping
angerman Dec 11, 2025
cf2c0dd
rts: fix RTS linker for dynamic GHC builds
angerman Feb 6, 2026
8b8324a
On-demand archive prelinking for GHC internal linker
angerman Mar 1, 2026
b22503b
AArch64 NCG: peephole optimizer, new instructions, and codegen improv…
angerman Mar 5, 2026
343f0fd
wasm: implement on-demand GlobalRegs compilation for WASM executables
angerman Feb 21, 2026
16d6af6
wasm: fix NCG .functype and .size emission for WASM targets
angerman Feb 21, 2026
6fa2b38
rts/wasm: add CLOSURE import annotations for C data variables in .cmm…
angerman Feb 21, 2026
6eb9d3e
rts: guard dladdr/Dl_info usage against WASM/WASI
angerman Feb 21, 2026
982b722
wasm: exclude libffi-clib for WASM/WASI; use wasi-sdk system libffi stub
angerman Feb 21, 2026
bc31f0b
wasm: fix clockid_t type for WASI (Ptr () instead of CClockId)
angerman Feb 21, 2026
8d5879c
Fix PIC jump tables on Windows (#24016)
hsyl20 Sep 24, 2025
47d9e1c
Filter ld garbage on mac
hasufell Dec 9, 2025
86a8634
Bump Cabal submodule to include tarball extraction race fix
angerman Feb 28, 2026
b3ddb8e
testsuite: T20010 isn't broken on linux/non-dynamic only. It's also b…
angerman Sep 2, 2025
6dc6bad
testsuite: T13786 does not appear broken on linux with non-dynamic.
angerman Sep 2, 2025
f2ba7e1
TESTS: Skip uniques test if no git repo
hasufell Sep 5, 2025
9cd1578
Mark T25240 as fragile
hasufell Nov 4, 2025
338c911
TESTS: Mark T7040_ghci fragile on darwin x86_64 as well
hasufell Nov 5, 2025
04a1d2a
TESTS: Mark T13786 as fragile on darwin x86_64 too
angerman Mar 5, 2026
699c7b7
genprimopcode: add --wrappers/--prim-module
angerman Sep 9, 2025
18cf7a5
rts: check if we need -lm in configure
hasufell Sep 10, 2025
8b176a4
compiler: fixes for dynamic GHC builds
angerman Feb 6, 2026
7f21d93
testsuite: adapt to cabal update, and gate plugins-external by ghc_dy…
angerman Sep 2, 2025
adabe3f
Modularize RTS: extract rts-headers and rts-fs sub-libraries
angerman Mar 5, 2026
8b181b6
unlit: use rts prefix
angerman Sep 9, 2025
35ce1ff
rts: split into sub-libraries
angerman Mar 5, 2026
a3aa746
testsuite: rts split adjustments
angerman Sep 9, 2025
2b07e66
Link against rts sublib too
hasufell Sep 2, 2025
791e0bd
cabal: use feature/cross-compile branch
angerman Sep 9, 2025
b2be572
libffi: drop
angerman Sep 9, 2025
5ebcd7c
Implement cabal-based multi-stage build system
angerman Mar 5, 2026
4405a8f
Rewrite Makefile build system with improved structure
angerman Mar 5, 2026
b951f6c
Add note about stage2
angerman Sep 9, 2025
b18cf6d
Add .envrc
angerman Sep 9, 2025
2d9ee6a
ghc-config: add more fields
angerman Sep 9, 2025
f676c44
Ignore LLVM Version
angerman Sep 6, 2025
6d2caa6
Fix FreeBSD stage2/stage3
hasufell Sep 9, 2025
a993682
docs(readme): consolidate building and contributing guides into READM…
andreabedini Dec 1, 2025
fd0b99e
[stage1] remove hard ghc-internal/ghc-heap dependency from stage1
angerman Nov 20, 2025
4d3eee7
Add bundled libffi-clib and integrate into build system
angerman Mar 5, 2026
41d2292
Update cabal to support GHCs new '-fully-static'
hasufell Sep 25, 2025
ebbb3a5
Remove gitlab submodules wrt #152
hasufell Feb 23, 2026
1eb1d85
Remove the rest of the submodules
hasufell Mar 2, 2026
bade014
build: infrastructure for DYNAMIC=1 builds
angerman Feb 6, 2026
af07a24
rts: add dynamic linking support for RTS sublibraries
angerman Feb 6, 2026
842ff27
testsuite: adjustments for RTS split and dynamic GHC builds
angerman Feb 6, 2026
4b92f93
Windows support
hasufell Nov 20, 2025
71ad1f2
ghc-toolchain hack adding ways
hasufell Nov 27, 2025
9336e48
feat: rebrand as Stable Haskell Edition
angerman Dec 5, 2025
225892f
fix: update test expectations for Stable Haskell bug report URL
angerman Dec 6, 2025
5464d67
Bump mac x86 runners to macOS-15-intel
hasufell Dec 8, 2025
cefd9f4
ci: add dynamic build matrix to GitHub workflows
angerman Feb 6, 2026
4977f11
CI: Add release workflow with artifact handling
angerman Mar 5, 2026
a242842
Add build metrics: QUIET mode, timing, CI instrumentation
angerman Mar 5, 2026
15e3cdc
TESTS: Add missing EXTRA_HC_OPTS
hasufell Sep 11, 2025
3f2f492
Update T20604 stdout
hasufell Nov 4, 2025
9b71cef
wasm: fix WASM build configuration in Makefile
angerman Feb 28, 2026
a193fe3
hsc2hs: batch cross-compilation for massive speedup (#154)
angerman Mar 1, 2026
7968d7c
gitignore: add local WASM toolchain artifacts
angerman Feb 21, 2026
da78681
localRegistersConflict: account for assignment LHS
sheaf Nov 6, 2025
e80abca
Update assigned register format when spilling
sheaf Nov 6, 2025
0946f13
Fix the order of spill/reload instructions
minoki Nov 6, 2025
4bd2f9f
Register allocator: reload at same format as spill
sheaf Dec 4, 2025
337bc26
Register allocation: writes redefine format
sheaf Dec 11, 2025
fd03592
Liveness analysis: consider register formats
sheaf Dec 4, 2025
23b3e7c
X86 regUsageOfInstr: fix format for IMUL
sheaf Dec 16, 2025
642d013
Don't re-use stack slots for growing registers
sheaf Jan 12, 2026
c42cc02
Fix scoping errors in specialisation
simonpj Dec 18, 2025
fe4c9df
Add missing InVar->OutVar lookup in SetLevels
simonpj Dec 17, 2025
8b8cc8b
rts: Handle overflow of ELF section header string table
luite Nov 22, 2025
39ae676
rts: Fix a deadlock with eventlog flush interval and RTS shutdown
mpickering Nov 14, 2025
60b8c5d
driver: don't expect nodes to exist when checking paths between them
MangoIV Dec 2, 2025
eac00c3
Don't prematurely final-zonk PatSyn declarations
sheaf Oct 16, 2025
9b0b48e
Only use active rules when simplifying rule RHSs
sheaf Sep 1, 2025
7b527d4
Fix subtle bug in cast worker/wrapper
simonpj Feb 11, 2026
5bac7bc
Use -O0 for Cabal-syntax to avoid simplifier tick exhaustion
angerman Mar 5, 2026
930b1b1
Add missing test source files and update expected output for stable b…
angerman Mar 7, 2026
09c1edc
AArch64: fix MOVK regUsageOfInstr to mark dst as both read and written
iand675 Mar 4, 2026
06b62eb
AArch64: fix signExtendReg W32 using SXTH instead of SXTW
iand675 Mar 2, 2026
d031517
AArch64: fix MO_U_Shr W8/W16 variable shift using ASR instead of LSR
iand675 Mar 2, 2026
267d660
Add an occurs check to deep subsumption
sheaf Mar 2, 2026
2f8fcb8
Introduce `-fimport-loaded-targets` GHCi flag
fendor Feb 12, 2026
dbfe6ad
Adjust test entries and expected output for stable branch
angerman Mar 5, 2026
32f8b82
Mark T21651 as fragile on darwin
angerman Mar 5, 2026
214fb95
AArch64: use canonical sign-extend instructions in ss_conv
angerman Mar 7, 2026
9fda3b4
rts: remove orphaned FP_VISIBILITY_HIDDEN from configure.ac
angerman Mar 11, 2026
f881a1b
testsuite: normalise macOS ld reexported library warning
angerman Apr 4, 2026
b03a03b
deriveConstants: split CC flags from program path
angerman Apr 4, 2026
b118611
ghc-internal: use struct _utimbuf on Windows
angerman Apr 4, 2026
d8f0cae
Switch to wip/angerman/compile-less Cabal branch
angerman Apr 4, 2026
e148c1c
chore: use stable-haskell/master for Cabal branch
andreabedini May 5, 2026
952da62
ghc-boot, compiler: adapt Setup.hs to Cabal Verbosity/VerbosityFlags …
andreabedini May 5, 2026
cac208b
stage0: add hooks-exe from cabal's repository
andreabedini Jun 3, 2026
4853203
stage1: bump process to 1.6.29.0
andreabedini Jun 3, 2026
bf98095
build: only set rpath on dist binaries for dynamic builds
andreabedini Jun 3, 2026
80ffff8
fix: wrong ProjectVersionInt in configure.ac
andreabedini Jun 3, 2026
6920910
Add missing th-{lift,quasiquoter} boot libs
hasufell Jun 3, 2026
49ad2f3
Fix bindist creation on FreeBSD
hasufell Jun 3, 2026
cc27b4b
stage2,stage3: bump process to 1.6.29.0
andreabedini Jun 3, 2026
b97a844
chore: add testsuite/ghc-config/ghc-config to .gitignore
andreabedini Jun 4, 2026
62790dc
fix(cabal.project.stage2): remove hackage-security
andreabedini Jun 8, 2026
4ad586b
stage2: select static/dynamic build via project files instead of conf…
andreabedini Jun 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
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 }}

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

on:
pull_request:
types: [opened, synchronize]
push:
branches: [stable-ghc-9.14, stable-master]
workflow_dispatch:

env:
CABAL_CACHE_PATH: _build/cabal/bin

jobs:
cabal:
strategy:
fail-fast: false
matrix:
include:
- plat: x86_64-linux
runner: ubuntu-24.04
ghc: '98'
dynamic: 0
- plat: x86_64-linux
runner: ubuntu-24.04
ghc: '98'
dynamic: 1
# - plat: aarch64-linux # disabled: waiting for devx images to be fixed
# runner: ubuntu-24.04-arm
# ghc: '98'
# dynamic: 0
# - plat: aarch64-linux
# runner: ubuntu-24.04-arm
# ghc: '98'
# dynamic: 1
- plat: aarch64-darwin
runner: macos-latest
ghc: '98'
dynamic: 0
- plat: aarch64-darwin
runner: macos-latest
ghc: '98'
dynamic: 1

name: "${{ matrix.plat }} / ghc ${{ matrix.ghc }} / dynamic=${{ matrix.dynamic }}"
runs-on: ${{ matrix.runner }}

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: Cache stage0 cabal binary
id: cabal-cache
uses: actions/cache@v5
with:
path: ${{ env.CABAL_CACHE_PATH }}
key: cabal-${{ vars.CACHE_VERSION || 'v1' }}-${{ matrix.plat }}-${{ hashFiles('cabal.project.stage0') }}

- 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 nuisance 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: Start metrics collection
shell: bash # bash (not devx): metrics tools use absolute paths to system binaries
run: ./mk/collect-metrics.sh start _build/metrics 0.5

- name: Build (dynamic=${{ matrix.dynamic }})
shell: devx {0}
run: make QUIET=1 DYNAMIC=${{ matrix.dynamic }} ${{ steps.cabal-cache.outputs.cache-hit == 'true' && 'USE_SYSTEM_CABAL=1' || '' }}

- name: Display build timings
if: ${{ !cancelled() }}
shell: devx {0}
run: make timing-summary

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

- name: Upload build logs and timing
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: ${{ matrix.plat }}-dynamic${{ matrix.dynamic }}-build-logs
path: |
_build/logs/
_build/timing/

- name: Run the testsuite (dynamic=${{ matrix.dynamic }})
shell: devx {0}
run: make test QUIET=1 DYNAMIC=${{ matrix.dynamic }} ${{ steps.cabal-cache.outputs.cache-hit == 'true' && 'USE_SYSTEM_CABAL=1' || '' }}

- name: Stop metrics collection
if: ${{ !cancelled() }}
shell: bash # bash (not devx): metrics tools use absolute paths to system binaries
run: ./mk/collect-metrics.sh stop _build/metrics

- name: Display test timings
if: ${{ !cancelled() }}
shell: devx {0}
run: make timing-summary

- name: Generate metrics plots
if: ${{ !cancelled() }}
continue-on-error: true
shell: bash
run: |
# Generate separate build and test SVG plots.
# Use bash (not devx) because nix is not available inside the devx shell.
PYTHON_MPL=$(nix build --impure --no-link --print-out-paths \
--expr 'let pkgs = (builtins.getFlake "nixpkgs").legacyPackages.${builtins.currentSystem}; in pkgs.python3.withPackages (ps: [ps.matplotlib])')
"$PYTHON_MPL/bin/python3" ./mk/plot-metrics.py _build/metrics _build/timing _build/metrics/metrics

- name: Upload metrics plots to R2
if: ${{ !cancelled() }}
continue-on-error: true
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_METRICS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_METRICS_SECRET_ACCESS_KEY }}
R2_ENDPOINT: ${{ secrets.R2_METRICS_ENDPOINT }}
R2_PUBLIC_URL: ${{ vars.R2_METRICS_PUBLIC_URL }}
R2_BUCKET: ${{ vars.R2_METRICS_BUCKET_NAME }}
shell: bash
run: |
RUN_ID="${{ github.run_id }}"
PLAT="${{ matrix.plat }}"
DYN="${{ matrix.dynamic }}"

export AWS_ENDPOINT_URL="${R2_ENDPOINT}"
export AWS_DEFAULT_REGION=auto

# Use bash (not devx) because nix is not available inside the devx shell.
AWSCLI=$(nix build --no-link --print-out-paths nixpkgs#awscli2)
AWS="$AWSCLI/bin/aws"

# Upload build plot if it exists
if [[ -f "_build/metrics/metrics-build.svg" ]]; then
BUILD_PATH="runs/${RUN_ID}/${PLAT}-dynamic${DYN}-build.svg"
"$AWS" s3 cp _build/metrics/metrics-build.svg "s3://${R2_BUCKET}/${BUILD_PATH}" --content-type 'image/svg+xml' || echo "Failed to upload build plot (non-fatal)"
echo "BUILD_PLOT_URL=${R2_PUBLIC_URL}/${BUILD_PATH}" >> $GITHUB_ENV
fi

# Upload test plot if it exists
if [[ -f "_build/metrics/metrics-test.svg" ]]; then
TEST_PATH="runs/${RUN_ID}/${PLAT}-dynamic${DYN}-test.svg"
"$AWS" s3 cp _build/metrics/metrics-test.svg "s3://${R2_BUCKET}/${TEST_PATH}" --content-type 'image/svg+xml' || echo "Failed to upload test plot (non-fatal)"
echo "TEST_PLOT_URL=${R2_PUBLIC_URL}/${TEST_PATH}" >> $GITHUB_ENV
fi

- name: Write metrics summary
if: ${{ !cancelled() }}
shell: devx {0}
run: |
echo "## Build Metrics Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

# Embed build plot if available
if [[ -n "${BUILD_PLOT_URL:-}" ]]; then
echo "### Build Phases (CPU & Memory)" >> $GITHUB_STEP_SUMMARY
echo "<img src=\"${BUILD_PLOT_URL}\" alt=\"Build Metrics\" width=\"100%\">" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
fi

# Embed test plot if available
if [[ -n "${TEST_PLOT_URL:-}" ]]; then
echo "### Test Phase (CPU & Memory)" >> $GITHUB_STEP_SUMMARY
echo "<img src=\"${TEST_PLOT_URL}\" alt=\"Test Metrics\" width=\"100%\">" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
fi

echo "### Phase Timings" >> $GITHUB_STEP_SUMMARY
echo "| Phase | Duration | Status |" >> $GITHUB_STEP_SUMMARY
echo "|-------|----------|--------|" >> $GITHUB_STEP_SUMMARY

# Auto-discover phases from timing files (summary.txt is generated
# by timing-summary.sh with ordered top-level + sub-phases)
make timing-summary 2>/dev/null || true
if [[ -f "_build/timing/summary.txt" ]]; then
while read -r phase dur status; do
mins=$((dur / 60))
secs=$((dur % 60))
status_str="OK"
[[ "$status" == "1" ]] && status_str="FAIL"
# Indent sub-phases (contain a dot) with leading spaces
if [[ "$phase" == *.* ]]; then
echo "| &nbsp;&nbsp;$phase | ${mins}m ${secs}s | $status_str |" >> $GITHUB_STEP_SUMMARY
else
echo "| **$phase** | **${mins}m ${secs}s** | $status_str |" >> $GITHUB_STEP_SUMMARY
fi
done < "_build/timing/summary.txt"
fi
echo "" >> $GITHUB_STEP_SUMMARY
# Add memory stats from metrics
if [[ -f "_build/metrics/metrics.csv" ]]; then
max_mem=$(awk -F',' 'NR>1 {if($3>max) max=$3} END {printf "%.1f", max/1024}' _build/metrics/metrics.csv)
echo "**Peak Memory:** ${max_mem} GB" >> $GITHUB_STEP_SUMMARY
fi

- name: Upload test results
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: ${{ matrix.plat }}-dynamic${{ matrix.dynamic }}-testsuite-results
path: |
_build/test-perf.csv
_build/test-summary.txt
_build/test-junit.xml
_build/timing/

- name: Upload metrics
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: ${{ matrix.plat }}-dynamic${{ matrix.dynamic }}-metrics
path: |
_build/metrics/
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