diff --git a/.github/workflows/artifacts.yml b/.github/workflows/artifacts.yml
index 255223629fe27cfe858b05512dfc3eb3ae64ca1b..195658eeadd56dd370e928018ce1ade90ab95e7f 100644
--- a/.github/workflows/artifacts.yml
+++ b/.github/workflows/artifacts.yml
@@ -22,7 +22,7 @@ jobs:
     steps:
       - name: Set PATH
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install newer Python3
         run: |
           add-apt-repository ppa:deadsnakes/ppa
@@ -60,9 +60,9 @@ jobs:
           sudo chmod 755 /opt/cabal/3.0/bin/cabal
       - name: Set PATH
         run: |
-          echo "::add-path::/opt/ghc/8.6.5/bin"
-          echo "::add-path::/opt/cabal/3.0/bin"
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "/opt/ghc/8.6.5/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.0/bin" >> $GITHUB_PATH
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Update Hackage index
         run: cabal v2-update
       - uses: actions/checkout@v2
@@ -86,8 +86,8 @@ jobs:
       - name: Set PATH
         run: |
           [Environment]::GetEnvironmentVariable("Path")
-          Write-Host "::add-path::C:\ProgramData\chocolatey\lib\cabal\tools\cabal-3.0.0.0"
-          Write-Host "::add-path::C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.6.5\bin"
+          Write-Output "C:\ProgramData\chocolatey\lib\cabal\tools\cabal-3.0.0.0" | Out-File $Env:GITHUB_PATH
+          Write-Output "C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.6.5\bin" | Out-File $Env:GITHUB_PATH
       - name: Print versions
         run: |
           ghc --version
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index 0d8bbb520603d4f5b49ad6ef760fb6ceb2e4e743..e359b1598ef3a516b5c489691ad3838d8faff79f 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -29,10 +29,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -76,10 +76,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -124,10 +124,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -172,10 +172,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -220,10 +220,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -268,10 +268,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -316,10 +316,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -364,10 +364,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -406,10 +406,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
@@ -452,10 +452,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index 0fe349a0f4f6fd68017616dd21f4c8f5d6cb25fc..a563c0e86be39bf4af0f927f7c4cebb23bd746b3 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -47,9 +47,9 @@ jobs:
           sudo chmod 755 /opt/cabal/3.0/bin/cabal
       - name: Set PATH
         run: |
-          echo "::add-path::/opt/ghc/8.8.3/bin"
-          echo "::add-path::/opt/cabal/3.0/bin"
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "/opt/ghc/8.8.3/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.0/bin" >> $GITHUB_PATH
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Update Hackage index
         run: cabal v2-update
       - name: Install cabal-plan
@@ -102,9 +102,9 @@ jobs:
           sudo chmod 755 /opt/cabal/3.0/bin/cabal
       - name: Set PATH
         run: |
-          echo "::add-path::/opt/ghc/8.6.5/bin"
-          echo "::add-path::/opt/cabal/3.0/bin"
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "/opt/ghc/8.6.5/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.0/bin" >> $GITHUB_PATH
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Update Hackage index
         run: cabal v2-update
       - name: Install cabal-plan
diff --git a/.github/workflows/quick-jobs.yml b/.github/workflows/quick-jobs.yml
index a4004bcc5f85eacb76604e4fd97a34adf115dcd8..f304ec9fa000c6bf69cd6fd09565e7d3459bf94c 100644
--- a/.github/workflows/quick-jobs.yml
+++ b/.github/workflows/quick-jobs.yml
@@ -25,10 +25,11 @@ jobs:
     # This job is not run in a container, any recent GHC should be fine
     steps:
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
-          echo "::add-path::/opt/cabal/3.2/bin"
-          echo "::add-path::/opt/ghc/8.6.5/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.2/bin" >> $GITHUB_PATH
+          echo "/opt/ghc/8.6.5/bin" >> $GITHUB_PATH
       - uses: actions/cache@v1
         with:
           path: ~/.cabal/store
@@ -56,9 +57,9 @@ jobs:
     steps:
       - name: Set PATH
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
-          echo "::add-path::/opt/cabal/3.2/bin"
-          echo "::add-path::/opt/ghc/8.6.5/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.2/bin" >> $GITHUB_PATH
+          echo "/opt/ghc/8.6.5/bin" >> $GITHUB_PATH
       - name: Install cabal-env
         run: |
           mkdir -p $HOME/.cabal/bin
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index 2667a1fd132739dd3ffd8c3c066ffa049f57e141..1b944d05de1a665c45ed2a916ed8635ea68de70f 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -24,18 +24,10 @@ jobs:
     name: test ghc-8.6.5
     runs-on: windows-latest
     steps:
-      - name: Install Cabal
-        run: choco install -fy cabal --version 3.2.0.0
-      - name: Install GHC
-        run: |
-          choco uninstall -y ghc --all-versions
-          choco install -y ghc --version 8.6.5
-      - name: Set PATH
-        run: |
-          [Environment]::GetEnvironmentVariable("Path")
-          Write-Host "::add-path::C:\ProgramData\Chocolatey\lib\cabal\tools\cabal-3.2.0.0"
-          Write-Host "::add-path::C:\ProgramData\Chocolatey\lib\ghc\tools\ghc-8.6.5\bin"
-          [Environment]::GetEnvironmentVariable("Path")
+      - uses: actions/setup-haskell@v1.1.4
+        with:
+          ghc-version: '8.6.5'
+          cabal-version: '3.2.0.0'
       - name: Print versions
         run: |
           [Environment]::GetEnvironmentVariable("Path")
diff --git a/boot/ci-artifacts.template.yml b/boot/ci-artifacts.template.yml
index 255223629fe27cfe858b05512dfc3eb3ae64ca1b..195658eeadd56dd370e928018ce1ade90ab95e7f 100644
--- a/boot/ci-artifacts.template.yml
+++ b/boot/ci-artifacts.template.yml
@@ -22,7 +22,7 @@ jobs:
     steps:
       - name: Set PATH
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install newer Python3
         run: |
           add-apt-repository ppa:deadsnakes/ppa
@@ -60,9 +60,9 @@ jobs:
           sudo chmod 755 /opt/cabal/3.0/bin/cabal
       - name: Set PATH
         run: |
-          echo "::add-path::/opt/ghc/8.6.5/bin"
-          echo "::add-path::/opt/cabal/3.0/bin"
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "/opt/ghc/8.6.5/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.0/bin" >> $GITHUB_PATH
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Update Hackage index
         run: cabal v2-update
       - uses: actions/checkout@v2
@@ -86,8 +86,8 @@ jobs:
       - name: Set PATH
         run: |
           [Environment]::GetEnvironmentVariable("Path")
-          Write-Host "::add-path::C:\ProgramData\chocolatey\lib\cabal\tools\cabal-3.0.0.0"
-          Write-Host "::add-path::C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.6.5\bin"
+          Write-Output "C:\ProgramData\chocolatey\lib\cabal\tools\cabal-3.0.0.0" | Out-File $Env:GITHUB_PATH
+          Write-Output "C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.6.5\bin" | Out-File $Env:GITHUB_PATH
       - name: Print versions
         run: |
           ghc --version
diff --git a/boot/ci-linux.template.yml b/boot/ci-linux.template.yml
index 54161bf8605f1ce32afd1a8658d2b86e8c257e60..320a48e1c9818d0c285cb030bda483b6f3dd8b26 100644
--- a/boot/ci-linux.template.yml
+++ b/boot/ci-linux.template.yml
@@ -32,10 +32,10 @@ jobs:
       - name: System info
         run: |
           uname -a
-      # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#add-a-system-path-add-path
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Install cabal-plan
         run: |
           mkdir -p $HOME/.cabal/bin
diff --git a/boot/ci-macos.template.yml b/boot/ci-macos.template.yml
index 28cbd05e9b389569b41d385a74ae24f4e8dd06aa..8fa8ba504e3b4ed33a63d9e50bd36e4a69a9ce12 100644
--- a/boot/ci-macos.template.yml
+++ b/boot/ci-macos.template.yml
@@ -51,9 +51,9 @@ jobs:
           sudo chmod 755 /opt/cabal/3.0/bin/cabal
       - name: Set PATH
         run: |
-          echo "::add-path::/opt/ghc/{{job.version}}/bin"
-          echo "::add-path::/opt/cabal/3.0/bin"
-          echo "::add-path::$HOME/.cabal/bin"
+          echo "/opt/ghc/{{ job.version }}/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.0/bin" >> $GITHUB_PATH
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
       - name: Update Hackage index
         run: cabal v2-update
       - name: Install cabal-plan
diff --git a/boot/ci-quick-jobs.template.yml b/boot/ci-quick-jobs.template.yml
index a4004bcc5f85eacb76604e4fd97a34adf115dcd8..f304ec9fa000c6bf69cd6fd09565e7d3459bf94c 100644
--- a/boot/ci-quick-jobs.template.yml
+++ b/boot/ci-quick-jobs.template.yml
@@ -25,10 +25,11 @@ jobs:
     # This job is not run in a container, any recent GHC should be fine
     steps:
       - name: Set PATH
+        # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#adding-a-system-path
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
-          echo "::add-path::/opt/cabal/3.2/bin"
-          echo "::add-path::/opt/ghc/8.6.5/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.2/bin" >> $GITHUB_PATH
+          echo "/opt/ghc/8.6.5/bin" >> $GITHUB_PATH
       - uses: actions/cache@v1
         with:
           path: ~/.cabal/store
@@ -56,9 +57,9 @@ jobs:
     steps:
       - name: Set PATH
         run: |
-          echo "::add-path::$HOME/.cabal/bin"
-          echo "::add-path::/opt/cabal/3.2/bin"
-          echo "::add-path::/opt/ghc/8.6.5/bin"
+          echo "$HOME/.cabal/bin" >> $GITHUB_PATH
+          echo "/opt/cabal/3.2/bin" >> $GITHUB_PATH
+          echo "/opt/ghc/8.6.5/bin" >> $GITHUB_PATH
       - name: Install cabal-env
         run: |
           mkdir -p $HOME/.cabal/bin
diff --git a/boot/ci-windows.template.yml b/boot/ci-windows.template.yml
index d38e69d8d92dd0e677d2fa63a82ad55cb51de261..492254d1ad946da2b6778190230b8922151579cd 100644
--- a/boot/ci-windows.template.yml
+++ b/boot/ci-windows.template.yml
@@ -31,18 +31,10 @@ jobs:
     needs: test-windows-{{ mangleVersion needs }}
 {% endfor %}
     steps:
-      - name: Install Cabal
-        run: choco install -fy cabal --version 3.2.0.0
-      - name: Install GHC
-        run: |
-          choco uninstall -y ghc --all-versions
-          choco install -y ghc --version {{ job.version }}
-      - name: Set PATH
-        run: |
-          [Environment]::GetEnvironmentVariable("Path")
-          Write-Host "::add-path::C:\ProgramData\Chocolatey\lib\cabal\tools\cabal-3.2.0.0"
-          Write-Host "::add-path::C:\ProgramData\Chocolatey\lib\ghc\tools\ghc-{{ job.version }}\bin"
-          [Environment]::GetEnvironmentVariable("Path")
+      - uses: actions/setup-haskell@v1.1.4
+        with:
+          ghc-version: '{{ job.version }}'
+          cabal-version: '3.2.0.0'
       - name: Print versions
         run: |
           [Environment]::GetEnvironmentVariable("Path")
diff --git a/cabal-testsuite/PackageTests/ForeignLibs/UseLib.c b/cabal-testsuite/PackageTests/ForeignLibs/UseLib.c
index 65770da6380d58a2580b85c0c59a6db50d8f9513..2ed882fe9a6cc275f1587d8c901e9a0a2a77c87c 100644
--- a/cabal-testsuite/PackageTests/ForeignLibs/UseLib.c
+++ b/cabal-testsuite/PackageTests/ForeignLibs/UseLib.c
@@ -1,4 +1,10 @@
 #include <stdio.h>
+#include <stdbool.h>
+
+/* Forward declarations */
+bool myForeignLibInit();
+void myForeignLibExit();
+void sayHi();
 
 int main()
 {
diff --git a/cabal-testsuite/PackageTests/ForeignLibs/csrc/MyForeignLibWrapper.c b/cabal-testsuite/PackageTests/ForeignLibs/csrc/MyForeignLibWrapper.c
index 2660c6a335ef444a65436bd259f192a29d843d8e..3347c970e7d5ee3939cb6a6cf913ba75bd8aad89 100644
--- a/cabal-testsuite/PackageTests/ForeignLibs/csrc/MyForeignLibWrapper.c
+++ b/cabal-testsuite/PackageTests/ForeignLibs/csrc/MyForeignLibWrapper.c
@@ -1,7 +1,8 @@
 #include <stdlib.h>
+#include <stdbool.h>
 #include "HsFFI.h"
 
-HsBool myForeignLibInit(void){
+bool myForeignLibInit(void){
   int argc = 2;
   char *argv[] = { "+RTS", "-A32m", NULL };
   char **pargv = argv;
@@ -11,7 +12,7 @@ HsBool myForeignLibInit(void){
 
   // do any other initialization here and
   // return false if there was a problem
-  return HS_BOOL_TRUE;
+  return true;
 }
 
 void myForeignLibExit(void){
diff --git a/cabal-testsuite/PackageTests/ForeignLibs/my-foreign-lib.cabal b/cabal-testsuite/PackageTests/ForeignLibs/my-foreign-lib.cabal
index dd5ce745cf91d559521e7d4e713ced74ff585215..8b63dc24e9e8ca90b4064f50b0ca82801a98f397 100644
--- a/cabal-testsuite/PackageTests/ForeignLibs/my-foreign-lib.cabal
+++ b/cabal-testsuite/PackageTests/ForeignLibs/my-foreign-lib.cabal
@@ -20,6 +20,7 @@ foreign-library myforeignlib
 
   other-modules:       MyForeignLib.Hello
                        MyForeignLib.SomeBindings
+                       MyForeignLib.AnotherVal
   build-depends:       base, my-foreign-lib
   hs-source-dirs:      src
   c-sources:           csrc/MyForeignLibWrapper.c
@@ -34,6 +35,7 @@ foreign-library versionedlib
 
   other-modules:       MyForeignLib.Hello
                        MyForeignLib.SomeBindings
+                       MyForeignLib.AnotherVal
   build-depends:       base, my-foreign-lib
   hs-source-dirs:      src
   c-sources:           csrc/MyForeignLibWrapper.c
diff --git a/cabal-testsuite/PackageTests/ForeignLibs/setup.test.hs b/cabal-testsuite/PackageTests/ForeignLibs/setup.test.hs
index 24032abf49ef771333edd3b400f7a526d05228b9..81d7105eb62a44f698308bd4d55ccd1e2e329a7e 100644
--- a/cabal-testsuite/PackageTests/ForeignLibs/setup.test.hs
+++ b/cabal-testsuite/PackageTests/ForeignLibs/setup.test.hs
@@ -35,7 +35,8 @@ main = setupAndCabalTest . recordMode DoNotRecord $ do
 
         -- Link a C program against the library
         _ <- runProgramM gccProgram
-            [ "-o", "uselib"
+            [ "-std=c11", "-Wall"
+            , "-o", "uselib"
             , "UseLib.c"
             , "-l", "myforeignlib"
             , "-L", flibdir installDirs ]