Skip to content

Make sure scheduler threads don't ACK the quiescence protocol CNF messages if they have an actor waiting to be run #2826

Make sure scheduler threads don't ACK the quiescence protocol CNF messages if they have an actor waiting to be run

Make sure scheduler threads don't ACK the quiescence protocol CNF messages if they have an actor waiting to be run #2826

Workflow file for this run

name: PR
on: pull_request
concurrency:
group: pr-${{ github.ref }}
cancel-in-progress: true
jobs:
superlinter:
name: Lint bash, docker, markdown, and yaml
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Lint codebase
uses: docker://github/super-linter:v3.8.3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VALIDATE_ALL_CODEBASE: true
VALIDATE_BASH: true
VALIDATE_DOCKERFILE: true
VALIDATE_MD: true
VALIDATE_YAML: true
validate-musl-docker-latest-image-builds:
name: Validate musl Docker image builds
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Docker build
run: "docker build --pull --file=.dockerfiles/latest/x86-64-unknown-linux-musl/Dockerfile ."
validate-gnu-docker-latest-image-builds:
name: Validate GNU Docker image builds
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Docker build
run: "docker build --pull --file=.dockerfiles/latest/x86-64-unknown-linux-gnu/Dockerfile ."
validate-windows-docker-latest-image-builds:
name: Validate Windows Docker image builds
runs-on: windows-2022
steps:
- uses: actions/[email protected]
- name: Docker build
run: "docker build --pull .dockerfiles/latest/x86-64-pc-windows-msvc"
validate-musl-docker-release-image-builds:
name: Validate musl Docker release image builds
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Docker build
run: "docker build --pull --file=.dockerfiles/release/x86-64-unknown-linux-musl/Dockerfile ."
validate-gnu-docker-release-image-builds:
name: Validate GNU Docker release image builds
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Docker build
run: "docker build --pull --file=.dockerfiles/release/x86-64-unknown-linux-gnu/Dockerfile ."
validate-windows-docker-release-image-builds:
name: Validate Windows Docker release image builds
runs-on: windows-2022
steps:
- uses: actions/[email protected]
- name: Docker build
run: "docker build --pull .dockerfiles/release/x86-64-pc-windows-msvc"
verify-changelog:
name: Verify CHANGELOG is valid
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/changelog-tool:release
steps:
- uses: actions/[email protected]
- name: Verify CHANGELOG
run: changelog-tool verify
x86_64-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425
name: x86-64 Linux glibc
debugger: lldb
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-musl-builder:20241203
name: x86-64 Linux musl
debugger: lldb
name: ${{ matrix.name }}
container:
image: ${{ matrix.image }}
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
steps:
- name: Checkout
uses: actions/[email protected]
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: make libs build_flags=-j8
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
make configure arch=x86-64 config=debug
make build config=debug
- name: Test with Debug Runtime
run: make test-ci config=debug usedebugger='${{ matrix.debugger }}'
- name: Build Release Runtime
run: |
make configure arch=x86-64 config=release
make build config=release
- name: Test with Release Runtime
run: make test-ci config=release usedebugger='${{ matrix.debugger }}'
riscv64-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- image: ghcr.io/ponylang/ponyc-ci-cross-riscv64:20240427
name: riscv64 Linux glibc
name: ${{ matrix.name }}
container:
image: ${{ matrix.image }}
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
steps:
- name: Checkout
uses: actions/[email protected]
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: make libs build_flags=-j8
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
make configure config=debug
make build config=debug
- name: Build Debug Cross-Compiled Runtime
run: make cross-libponyrt config=debug CC=riscv64-linux-gnu-gcc-10 CXX=riscv64-linux-gnu-g++-10 arch=rv64gc cross_cflags="-march=rv64gc -mtune=rocket" cross_lflags="-march=riscv64"
- name: Test with Debug Cross-Compiled Runtime
run: make test-cross-ci config=debug PONYPATH=../rv64gc/debug cross_triple=riscv64-unknown-linux-gnu cross_arch=rv64gc cross_cpu=generic-rv64 cross_linker=riscv64-linux-gnu-gcc-10 cross_ponyc_args='--abi=lp64d --features=+m,+a,+f,+d,+c --link-ldcmd=bfd' cross_runner="qemu-riscv64 -L /usr/riscv64-linux-gnu/lib/"
- name: Build Release Runtime
run: |
make configure config=release
make build config=release
- name: Build Release Cross-Compiled Runtime
run: make cross-libponyrt config=release CC=riscv64-linux-gnu-gcc-10 CXX=riscv64-linux-gnu-g++-10 arch=rv64gc cross_cflags="-march=rv64gc -mtune=rocket" cross_lflags="-march=riscv64"
- name: Test with Release Cross-Compiled Runtime
run: make test-cross-ci config=release PONYPATH=../rv64gc/release cross_triple=riscv64-unknown-linux-gnu cross_arch=rv64gc cross_cpu=generic-rv64 cross_linker=riscv64-linux-gnu-gcc-10 cross_ponyc_args='--abi=lp64d --features=+m,+a,+f,+d,+c --link-ldcmd=bfd' cross_runner="qemu-riscv64 -L /usr/riscv64-linux-gnu/lib/"
arm-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- image: ghcr.io/ponylang/ponyc-ci-cross-arm:20240427
name: arm Linux glibc
name: ${{ matrix.name }}
container:
image: ${{ matrix.image }}
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
steps:
- name: Checkout
uses: actions/[email protected]
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: make libs build_flags=-j8
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
make configure config=debug
make build config=debug
- name: Build Debug Cross-Compiled Runtime
run: make cross-libponyrt config=debug CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm"
- name: Test with Debug Cross-Compiled Runtime
run: make test-cross-ci config=debug PONYPATH=../armv7-a/debug cross_triple=arm-unknown-linux-gnueabi cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabi-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabi/libc"
- name: Build Release Runtime
run: |
make configure config=release
make build config=release
- name: Build Release Cross-Compiled Runtime
run: make cross-libponyrt config=release CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm"
- name: Test with Release Cross-Compiled Runtime
run: make test-cross-ci config=release PONYPATH=../armv7-a/release cross_triple=arm-unknown-linux-gnueabi cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabi-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabi/libc"
armhf-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- image: ghcr.io/ponylang/ponyc-ci-cross-armhf:20240427
name: armhf Linux glibc
name: ${{ matrix.name }}
container:
image: ${{ matrix.image }}
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
steps:
- name: Checkout
uses: actions/[email protected]
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: make libs build_flags=-j8
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
make configure config=debug
make build config=debug
- name: Build Debug Cross-Compiled Runtime
run: make cross-libponyrt config=debug CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm"
- name: Test with Debug Cross-Compiled Runtime
run: make test-cross-ci config=debug PONYPATH=../armv7-a/debug cross_triple=arm-unknown-linux-gnueabihf cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabihf-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabihf/libc"
- name: Build Release Runtime
run: |
make configure config=release
make build config=release
- name: Build Release Cross-Compiled Runtime
run: make cross-libponyrt config=release CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm"
- name: Test with Release Cross-Compiled Runtime
run: make test-cross-ci config=release PONYPATH=../armv7-a/release cross_triple=arm-unknown-linux-gnueabihf cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabihf-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabihf/libc"
aarch64-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- image: ghcr.io/ponylang/ponyc-ci-cross-aarch64:20240427
name: aarch64 Linux glibc
name: ${{ matrix.name }}
container:
image: ${{ matrix.image }}
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
steps:
- name: Checkout
uses: actions/[email protected]
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: make libs build_flags=-j8
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
make configure config=debug
make build config=debug
- name: Build Debug Cross-Compiled Runtime
run: make cross-libponyrt config=debug CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ arch=armv8-a cross_cflags="-march=armv8-a -mtune=cortex-a53" cross_lflags="-O3;-march=aarch64"
- name: Test with Debug Cross-Compiled Runtime
run: make test-cross-ci config=debug PONYPATH=../armv8-a/debug cross_triple=aarch64-unknown-linux-gnu cross_arch=armv8-a cross_cpu=cortex-a53 cross_linker=aarch64-linux-gnu-gcc cross_runner="qemu-aarch64-static -cpu cortex-a53 -L /usr/local/aarch64-linux-gnu/libc"
- name: Build Release Runtime
run: |
make configure config=release
make build config=release
- name: Build Release Cross-Compiled Runtime
run: make cross-libponyrt config=release CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ arch=armv8-a cross_cflags="-march=armv8-a -mtune=cortex-a53" cross_lflags="-O3;-march=aarch64"
- name: Test with Release Cross-Compiled Runtime
run: make test-cross-ci config=release PONYPATH=../armv8-a/release cross_triple=aarch64-unknown-linux-gnu cross_arch=armv8-a cross_cpu=cortex-a53 cross_linker=aarch64-linux-gnu-gcc cross_runner="qemu-aarch64-static -cpu cortex-a53 -L /usr/local/aarch64-linux-gnu/libc"
x86_64-macos:
runs-on: macos-13
name: x86-64 Apple Darwin
steps:
- name: Checkout
uses: actions/[email protected]
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-x86-macos-13-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: make libs build_flags=-j8
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-x86-macos-13-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
make configure arch=x86-64 config=debug
make build config=debug
- name: Test with Debug Runtime
run: make test-ci config=debug
- name: Build Release Runtime
run: |
make configure arch=x86-64 config=release
make build config=release
- name: Test with Release Runtime
run: make test-ci config=release
arm64-macos:
runs-on: macos-14
name: arm64 Apple Darwin
steps:
- name: Checkout
uses: actions/[email protected]
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-arm64-macos-14-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: make libs build_flags=-j8
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-arm64-macos-14-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
make configure arch=armv8 config=debug
make build config=debug
- name: Test with Debug Runtime
run: make test-ci config=debug
- name: Build Release Runtime
run: |
make configure arch=armv8 config=release
make build config=release
- name: Test with Release Runtime
run: make test-ci config=release
x86_64-windows:
runs-on: windows-2022
defaults:
run:
shell: pwsh
name: x86-64 Windows MSVC
steps:
- name: Checkout
uses: actions/[email protected]
- name: Install Dependencies
run: |
function msys() { C:\msys64\usr\bin\bash.exe @('-lc') + @Args }; msys ' '; msys 'pacman --noconfirm -Syuu'; msys 'pacman --noconfirm -Syuu'; msys 'pacman --noconfirm -S --needed base-devel mingw-w64-x86_64-lldb'; msys 'pacman --noconfirm -Scc'
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-windows-2022-${{ hashFiles('make.ps1', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: .\make.ps1 -Command libs
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-windows-2022-${{ hashFiles('make.ps1', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
.\make.ps1 -Command configure -Config Debug
.\make.ps1 -Command build -Config Debug
- name: Test with Debug Runtime
run: .\make.ps1 -Command test -Config Debug -Uselldb yes
- name: Build Release Runtime
run: |
.\make.ps1 -Command configure -Config Release
.\make.ps1 -Command build -Config Release
- name: Test with Release Runtime
run: .\make.ps1 -Command test -Config Release -Uselldb yes
use_directives:
runs-on: ubuntu-latest
needs: x86_64-linux
strategy:
fail-fast: false
matrix:
include:
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425
debugger: lldb
directives: dtrace
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425
debugger: lldb
directives: pool_memalign
- image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425
debugger: lldb
directives: runtimestats
name: use ${{ matrix.directives }}
container:
image: ${{ matrix.image }}
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
steps:
- name: Checkout
uses: actions/[email protected]
- name: Restore Libs Cache
id: restore-libs
uses: actions/cache/restore@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Libs
if: steps.restore-libs.outputs.cache-hit != 'true'
run: make libs build_flags=-j8
- name: Save Libs Cache
if: steps.restore-libs.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: build/libs
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'lib/CMakeLists.txt') }}
- name: Build Debug Runtime
run: |
make configure arch=x86-64 config=debug use=${{ matrix.directives }}
make build config=debug
- name: Test with Debug Runtime
run: make test-ci config=debug usedebugger='${{ matrix.debugger }}'
- name: Build Release Runtime
run: |
make configure arch=x86-64 config=release use=${{ matrix.directives }}
make build config=release
- name: Test with Release Runtime
run: make test-ci config=release usedebugger='${{ matrix.debugger }}'