Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
41d4aef
Bump version to 0.1.0- [skip ci]
actions-user Jan 31, 2026
7873704
Fixing links for the various badges.
kyle-github Jan 31, 2026
b295732
Splitting out the coverage report to prerelease and the tagging to th…
kyle-github Jan 31, 2026
543f3b7
The version format changed but the scripts that process it didn't. Oops.
kyle-github Jan 31, 2026
17747b9
Update code coverage report [skip ci]
actions-user Jan 31, 2026
25a75f2
Timestamps were causing merge conflicts. Filter them out for now unt…
kyle-github Jan 31, 2026
458ccc6
Update code coverage report [skip ci]
actions-user Jan 31, 2026
2635773
Try to avoid merge problems by ignoring the coverage report files exc…
kyle-github Jan 31, 2026
384f777
Add automatic version update in the README.md file.
kyle-github Jan 31, 2026
eab2ef2
Merge branch 'release' into prerelease
kyle-github Jan 31, 2026
ddbccab
Add Alpine builds.
kyle-github Jan 31, 2026
7c4fc1d
Alpine does not have Qemu user packages for all these architecture. …
kyle-github Jan 31, 2026
ab8f3cb
Building via musl cross-compile. Can't use Alpine for most of this.
kyle-github Jan 31, 2026
5d149b5
Only run the release workflow on the release branch.
kyle-github Jan 31, 2026
0ec939b
Rewrite workflows to split up into three jobs each: setup, build and …
kyle-github Jan 31, 2026
bf30a86
Make sure that all workflows that really exist are referenced in the …
kyle-github Jan 31, 2026
54c9407
Alpine containers do not have bash.
kyle-github Jan 31, 2026
cb8f88c
Need to build statically because we do not have architecture-specific…
kyle-github Jan 31, 2026
77eea1b
Downloading artifacts removes permissions. So we need to chmod them …
kyle-github Jan 31, 2026
b4db4b1
Set up binfmt_misc. Fix execute permissions.
kyle-github Jan 31, 2026
5ca0b8c
No i386 dev libs in Alpine AMD64.
kyle-github Jan 31, 2026
aff8f1e
Add retry loops and more logging. We seem to be having problems gett…
kyle-github Jan 31, 2026
a62fc2b
Qemu was not installed correctly. I think.
kyle-github Jan 31, 2026
80b65fd
Some triples were not correct.
kyle-github Feb 1, 2026
9209cae
Add musl.cc cross-compiler toolchains
kyle-github Feb 1, 2026
3e83bfd
musl.cc blocks GitHub Actions due to abuse. Cache the toolchains in …
kyle-github Feb 1, 2026
9b2980f
musl.cc does not allow downloads from GitHub Actions. But adding the…
kyle-github Feb 1, 2026
9d37bcb
Wrong path to the assembly files.
kyle-github Feb 1, 2026
222940d
Need to add the qemu user support.
kyle-github Feb 1, 2026
f51c753
msys2 does not carry over from the build job. This is due to the bre…
kyle-github Feb 1, 2026
ac8e702
No qemu user package installed.
kyle-github Feb 1, 2026
1ffce99
incorrect parameters to the emulator.
kyle-github Feb 1, 2026
fdf224a
Wrong runner type.
kyle-github Feb 1, 2026
24cade1
Incorrect image names. With i386, we need to force the platform so t…
kyle-github Feb 1, 2026
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
15 changes: 15 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Git LFS configuration for large binary files
#
# These files are optional and only needed if you plan to run musl.cc-based
# cross-compilation workflows locally. Most developers can skip them:
#
# GIT_LFS_SKIP_SMUDGE=1 git clone <repo>
# # or
# git clone --no-lfs <repo>
#
# To pull these files later:
# git lfs pull
#

# Cross-compiler toolchains (stored with Git LFS)
cross-compilers/*.tgz filter=lfs diff=lfs merge=lfs -text
43 changes: 43 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: Bug report
about: Report a bug to help us improve
title: "[BUG] "
labels: bug
assignees: ''

---

## Description
A clear and concise description of what the bug is.

## Steps to Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Run '...'
3. See error

## Expected Behavior
A clear and concise description of what you expected to happen.

## Actual Behavior
What actually happened instead.

## Environment
- **OS**: [e.g., Linux, macOS, Windows]
- **Architecture**: [e.g., x86_64, ARM64, RISC-V]
- **Compiler**: [e.g., GCC 11, Clang 14, MSVC 2022]
- **yafl Version**: [e.g., 0.1.0]
- **CMake Version**: [version]

## Code Example
```c
// Minimal code example that reproduces the issue
```

## Error Messages
```
Paste any error messages or logs here
```

## Additional Context
Add any other context about the problem here (screenshots, configuration, etc.).
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Discussions
url: https://github.com/libplctag/yafl/discussions
about: Ask questions and share ideas
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Feature request
about: Suggest an idea for this project
title: "[FEATURE] "
labels: enhancement
assignees: ''

---

## Description
Is your feature request related to a problem? Describe it here.

## Proposed Solution
A clear and concise description of what you want to happen.

## Alternatives Considered
A clear and concise description of any alternative solutions or features you've considered.

## Use Case
Describe the use case or scenario where this feature would be useful.

## Additional Context
Add any other context or mockups about the feature request here.
52 changes: 52 additions & 0 deletions .github/workflows/aarch64-alpine-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: aarch64-alpine-linux

on: [push, pull_request]

jobs:
setup-aarch64-alpine-linux:
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t yafl-builder -f docker/Dockerfile.alpine-aarch64 .

build-aarch64-alpine-linux:
runs-on: ubuntu-24.04-arm
needs: setup-aarch64-alpine-linux
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t yafl-builder -f docker/Dockerfile.alpine-aarch64 .
- name: Build
run: |
docker run --rm -v ${{ github.workspace }}:/src yafl-builder \
sh -c "mkdir -p build && cd build && \
cmake -DTARGET=aarch64-pc-linux-gnu \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_SYSTEM_NAME=Linux \
.. && \
cmake --build ."
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-aarch64-alpine-linux
path: build/

test-aarch64-alpine-linux:
runs-on: ubuntu-24.04-arm
needs: build-aarch64-alpine-linux
steps:
- uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-aarch64-alpine-linux
path: build/
- name: Restore execute permissions
run: chmod +x build/bin/*
- name: Build Docker image
run: docker build -t yafl-builder -f docker/Dockerfile.alpine-aarch64 .
- name: Run Tests
run: |
docker run --rm -v ${{ github.workspace }}:/src yafl-builder \
sh -c "cd build && ctest --output-on-failure"
17 changes: 13 additions & 4 deletions .github/workflows/aarch64-apple-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,29 @@ name: aarch64-apple-ios
on: [push, pull_request]

jobs:
build-and-test:
name: iOS Simulator (ARM64)
setup-aarch64-apple-ios:
name: Setup iOS (ARM64)
runs-on: macos-15

steps:
- uses: actions/checkout@v4

build-aarch64-apple-ios:
name: Build iOS Simulator (ARM64)
runs-on: macos-15
needs: setup-aarch64-apple-ios
steps:
- uses: actions/checkout@v4
- name: Configure CMake
run: |
cmake -G Xcode \
-DCMAKE_SYSTEM_NAME=iOS \
-DTARGET=aarch64-apple-ios \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-B build

- name: Build
run: cmake --build build --config Debug
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-aarch64-apple-ios
path: build/
38 changes: 36 additions & 2 deletions .github/workflows/aarch64-pc-windows-gnu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,20 @@ name: aarch64-pc-windows-gnu
on: [push, pull_request]

jobs:
build-and-test:
setup-aarch64-pc-windows-gnu:
runs-on: windows-11-arm
steps:
- uses: actions/checkout@v4
- name: Setup MinGW
uses: msys2/setup-msys2@v2
with:
msystem: CLANGARM64
update: true
install: mingw-w64-clang-aarch64-toolchain mingw-w64-clang-aarch64-cmake

build-aarch64-pc-windows-gnu:
runs-on: windows-11-arm
needs: setup-aarch64-pc-windows-gnu
steps:
- uses: actions/checkout@v4
- name: Setup MinGW
Expand All @@ -21,6 +33,28 @@ jobs:
- name: Build
shell: msys2 {0}
run: cmake --build build --parallel 4
- name: Test
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-aarch64-pc-windows-gnu
path: build/

test-aarch64-pc-windows-gnu:
runs-on: windows-11-arm
needs: build-aarch64-pc-windows-gnu
steps:
- uses: actions/checkout@v4
- name: Setup MinGW
uses: msys2/setup-msys2@v2
with:
msystem: CLANGARM64
update: true
install: mingw-w64-clang-aarch64-toolchain mingw-w64-clang-aarch64-cmake
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-aarch64-pc-windows-gnu
path: build/
- name: Run Tests
shell: msys2 {0}
run: cd build && ctest --output-on-failure
30 changes: 28 additions & 2 deletions .github/workflows/aarch64-pc-windows-msvc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,18 @@ name: aarch64-pc-windows-msvc
on: [push, pull_request]

jobs:
build-and-test:
setup-aarch64-pc-windows-msvc:
runs-on: windows-11-arm
steps:
- uses: actions/checkout@v4
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: arm64

build-aarch64-pc-windows-msvc:
runs-on: windows-11-arm
needs: setup-aarch64-pc-windows-msvc
steps:
- uses: actions/checkout@v4
- name: Setup MSVC
Expand All @@ -17,5 +27,21 @@ jobs:
cmake -G "Ninja" -DTARGET=aarch64-pc-windows-msvc -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl ..
- name: Build
run: cmake --build build --config Release --parallel 4
- name: Test
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-aarch64-pc-windows-msvc
path: build/

test-aarch64-pc-windows-msvc:
runs-on: windows-11-arm
needs: build-aarch64-pc-windows-msvc
steps:
- uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-aarch64-pc-windows-msvc
path: build/
- name: Run Tests
run: cd build && ctest --output-on-failure
44 changes: 40 additions & 4 deletions .github/workflows/arm-unknown-linux-gnueabihf.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
name: arm-unknown-linux-gnueabihf

on: [push, pull_request]

jobs:
build-and-test:
setup-arm-unknown-linux-gnueabihf:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t yafl-builder -f docker/Dockerfile.arm32 .

build-arm-unknown-linux-gnueabihf:
runs-on: ubuntu-24.04
needs: setup-arm-unknown-linux-gnueabihf
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t yafl-builder -f docker/Dockerfile.arm32 .
- name: Build and Test
- name: Build
run: |
docker run --rm -v ${{ github.workspace }}:/src yafl-builder \
bash -c "mkdir -p build && cd build && \
Expand All @@ -18,5 +27,32 @@ jobs:
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_CROSSCOMPILING_EMULATOR=/usr/bin/qemu-arm \
.. && \
make && \
CTEST_OUTPUT_ON_FAILURE=1 ctest"
make"
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-arm-unknown-linux-gnueabihf
path: build/

test-arm-unknown-linux-gnueabihf:
runs-on: ubuntu-24.04
needs: build-arm-unknown-linux-gnueabihf
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-arm-unknown-linux-gnueabihf
path: build/
- name: Restore execute permissions
run: chmod +x build/bin/*
- name: Build Docker image
run: docker build -t yafl-builder -f docker/Dockerfile.arm32 .
- name: Run Tests
run: |
docker run --rm -v ${{ github.workspace }}:/src yafl-builder \
bash -c "cd build && CTEST_OUTPUT_ON_FAILURE=1 ctest"
56 changes: 56 additions & 0 deletions .github/workflows/armv7-musl-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: armv7-musl-linux

on: [push, pull_request]

jobs:
setup-armv7-musl-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install build tools
run: sudo apt-get update && sudo apt-get install -y cmake make

build-armv7-musl-linux:
runs-on: ubuntu-latest
needs: setup-armv7-musl-linux
steps:
- uses: actions/checkout@v4
- name: Install build tools
run: sudo apt-get update && sudo apt-get install -y cmake make wget qemu-user-static binfmt-support
- name: Download and install musl-cross toolchain
run: ./scripts/download-musl-cross.sh arm-unknown-linux-musleabihf
- name: Configure and Build
run: |
mkdir -p build && cd build
cmake -DTARGET=arm-unknown-linux-musleabihf \
-DCMAKE_C_COMPILER=${{ github.workspace }}/cross-compilers/x-tools/arm-unknown-linux-musleabihf/bin/arm-unknown-linux-musleabihf-gcc \
-DCMAKE_C_FLAGS='-static' \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=arm \
-DCMAKE_CROSSCOMPILING_EMULATOR=/usr/bin/qemu-arm-static \
..
cmake --build .
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-armv7-musl-linux
path: build/

test-armv7-musl-linux:
runs-on: ubuntu-latest
needs: build-armv7-musl-linux
steps:
- uses: actions/checkout@v4
- name: Install QEMU
run: sudo apt-get update && sudo apt-get install -y qemu-user-static binfmt-support
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-armv7-musl-linux
path: build/
- name: Restore execute permissions
run: chmod +x build/bin/*
- name: Run Tests
run: |
cd build
ctest --output-on-failure
Loading
Loading