From 54a86d80ccdc82b60f7b64827205965e7b86a983 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 26 Apr 2026 13:23:01 +0000 Subject: [PATCH 1/6] fix nativeaot publish dependency preparation Agent-Logs-Url: https://github.com/meokit/podish/sessions/454d7315-082a-4fa2-ad9f-22bb1885c8ae Co-authored-by: meokit <16623696+meokit@users.noreply.github.com> --- Podish.Cli/Podish.Cli.csproj | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Podish.Cli/Podish.Cli.csproj b/Podish.Cli/Podish.Cli.csproj index 5c0c0cd..c87af43 100644 --- a/Podish.Cli/Podish.Cli.csproj +++ b/Podish.Cli/Podish.Cli.csproj @@ -33,8 +33,7 @@ true false true - ..\Fiberish.X86\build_native\host - ..\Fiberish.X86\build_native\$(RuntimeIdentifier) + ..\Fiberish.X86\build_native\$(RuntimeIdentifier) ..\Fiberish.X86\build_native\host aarch64-apple-darwin aarch64-apple-ios @@ -48,6 +47,19 @@ ..\Fiberish.Netstack\target\release\$(PodishNetstackLibName) + + + + + @@ -60,4 +72,9 @@ + + + + + From a469ef2b5bdf225dbcf4891d7fabfc286f87450f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 26 Apr 2026 13:28:11 +0000 Subject: [PATCH 2/6] ci: add windows nativeaot publish job Agent-Logs-Url: https://github.com/meokit/podish/sessions/60933f04-1da5-4abe-9206-5a08702d016a Co-authored-by: meokit <16623696+meokit@users.noreply.github.com> --- .github/workflows/ci.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 729a67a..4dcef7c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,6 +61,32 @@ jobs: dotnet build Fiberish.X86/Fiberish.X86.csproj -c Debug -r win-x64 shell: pwsh + publish-windows: + name: Publish Windows PodishCli NativeAOT + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.x + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + + - name: Publish Windows PodishCli NativeAOT + run: dotnet publish Podish.Cli/Podish.Cli.csproj -c Release -r win-x64 -p:PublishAot=true -m:1 + shell: pwsh + + - name: Upload Windows publish artifact + uses: actions/upload-artifact@v4 + with: + name: podishcli-win-x64-nativeaot-publish + path: Podish.Cli/bin/Release/net10.0/win-x64/publish/** + build-macos: name: Build macOS full solution runs-on: macos-latest From 96a5771bc4f5d9e8b0101d778f16f27d38f1775c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 26 Apr 2026 13:34:23 +0000 Subject: [PATCH 3/6] ci: scope workflow token permissions Agent-Logs-Url: https://github.com/meokit/podish/sessions/60933f04-1da5-4abe-9206-5a08702d016a Co-authored-by: meokit <16623696+meokit@users.noreply.github.com> --- .github/workflows/ci.yml | 3 +++ Podish.Cli/Podish.Cli.csproj | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4dcef7c..a4cc5e4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,9 @@ on: - public-main pull_request: +permissions: + contents: read + jobs: build-linux: name: Build Linux core diff --git a/Podish.Cli/Podish.Cli.csproj b/Podish.Cli/Podish.Cli.csproj index c87af43..00c8e28 100644 --- a/Podish.Cli/Podish.Cli.csproj +++ b/Podish.Cli/Podish.Cli.csproj @@ -68,7 +68,7 @@ - + From a37ac114e7ef0de081b9454f1e63451c77471bdb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 26 Apr 2026 13:35:55 +0000 Subject: [PATCH 4/6] build: remove duplicate native cxx link entry Agent-Logs-Url: https://github.com/meokit/podish/sessions/60933f04-1da5-4abe-9206-5a08702d016a Co-authored-by: meokit <16623696+meokit@users.noreply.github.com> --- Podish.Cli/Podish.Cli.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/Podish.Cli/Podish.Cli.csproj b/Podish.Cli/Podish.Cli.csproj index 00c8e28..1904585 100644 --- a/Podish.Cli/Podish.Cli.csproj +++ b/Podish.Cli/Podish.Cli.csproj @@ -73,7 +73,6 @@ - From fc2ff52706edc19ebf69c41f7589a06f94e37f24 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 26 Apr 2026 14:16:53 +0000 Subject: [PATCH 5/6] ci: add nativeaot publishes for all desktop platforms Agent-Logs-Url: https://github.com/meokit/podish/sessions/2f48c807-e5dc-410b-9db4-850218ca8a75 Co-authored-by: meokit <16623696+meokit@users.noreply.github.com> --- .github/workflows/ci.yml | 59 ++++++++++++++++++++++++++++++++++++ Podish.Cli/Podish.Cli.csproj | 4 +++ libfibercpu/CMakeLists.txt | 4 +++ 3 files changed, 67 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a4cc5e4..c9bac01 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,6 +90,36 @@ jobs: name: podishcli-win-x64-nativeaot-publish path: Podish.Cli/bin/Release/net10.0/win-x64/publish/** + publish-linux: + name: Publish Linux PodishCli NativeAOT + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.x + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + + - name: Install native build dependencies + run: | + sudo apt-get update + sudo apt-get install -y clang cmake ninja-build libc++-dev libc++abi-dev + + - name: Publish Linux PodishCli NativeAOT + run: dotnet publish Podish.Cli/Podish.Cli.csproj -c Release -r linux-x64 -p:PublishAot=true -m:1 + + - name: Upload Linux publish artifact + uses: actions/upload-artifact@v4 + with: + name: podishcli-linux-x64-nativeaot-publish + path: Podish.Cli/bin/Release/net10.0/linux-x64/publish/** + build-macos: name: Build macOS full solution runs-on: macos-latest @@ -164,3 +194,32 @@ jobs: - name: Build full solution run: dotnet build Podish.slnx -c Debug -p:EmscriptenToolchainFile="$EMSCRIPTEN_TOOLCHAIN_FILE" -p:BrowserWasmNodeExecutable="$BROWSER_WASM_NODE_EXECUTABLE" + + publish-macos: + name: Publish macOS PodishCli NativeAOT + runs-on: macos-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.x + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + + - name: Install native build dependencies + run: | + brew install cmake ninja + + - name: Publish macOS PodishCli NativeAOT + run: dotnet publish Podish.Cli/Podish.Cli.csproj -c Release -r osx-arm64 -p:PublishAot=true -m:1 + + - name: Upload macOS publish artifact + uses: actions/upload-artifact@v4 + with: + name: podishcli-osx-arm64-nativeaot-publish + path: Podish.Cli/bin/Release/net10.0/osx-arm64/publish/** diff --git a/Podish.Cli/Podish.Cli.csproj b/Podish.Cli/Podish.Cli.csproj index 1904585..e28f8c9 100644 --- a/Podish.Cli/Podish.Cli.csproj +++ b/Podish.Cli/Podish.Cli.csproj @@ -76,4 +76,8 @@ + + + + diff --git a/libfibercpu/CMakeLists.txt b/libfibercpu/CMakeLists.txt index d6dc04d..39f3ac8 100644 --- a/libfibercpu/CMakeLists.txt +++ b/libfibercpu/CMakeLists.txt @@ -40,6 +40,10 @@ option(FIBERCPU_ENABLE_BLOCK_PROFILE "Enable lightweight per-block execution cou option(FIBERCPU_ENABLE_HANDLER_PROFILE "Enable approximate per-handler execution profiling" OFF) option(FIBERCPU_ENABLE_SUPEROPCODES "Enable generated SuperOpcode matching and handlers" ON) +if(MSVC AND FIBERCPU_BUILD_STATIC) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" CACHE STRING "MSVC runtime library" FORCE) +endif() + set(FIBERCPU_GENERATED_SUPEROPCODES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/generated/superopcodes.generated.cpp") From e2e37052618fcd0e8ace49ad91dccd999ea4c01f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 26 Apr 2026 14:47:13 +0000 Subject: [PATCH 6/6] ci: align release artifacts with publish outputs Agent-Logs-Url: https://github.com/meokit/podish/sessions/4276211e-37d8-4b2d-a0ad-0d6fb7148f62 Co-authored-by: meokit <16623696+meokit@users.noreply.github.com> --- .github/workflows/release.yml | 180 ++++++++++++++++++++-------------- Podish.Cli/Podish.Cli.csproj | 4 +- 2 files changed, 109 insertions(+), 75 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d9b9ea1..0098c63 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,9 +19,9 @@ concurrency: cancel-in-progress: false jobs: - build-macos: - name: Build macOS PodishCli NativeAOT - runs-on: macos-latest + publish-linux: + name: Publish Linux PodishCli NativeAOT + runs-on: ubuntu-latest steps: - name: Checkout @@ -40,42 +40,52 @@ jobs: - name: Install native build dependencies run: | - brew install cmake ninja + sudo apt-get update + sudo apt-get install -y clang cmake ninja-build libc++-dev libc++abi-dev - - name: Publish PodishCli NativeAOT - run: dotnet publish Podish.Cli/Podish.Cli.csproj -c Release -r osx-arm64 -p:PublishAot=true -m:1 + - name: Publish Linux PodishCli NativeAOT + run: dotnet publish Podish.Cli/Podish.Cli.csproj -c Release -r linux-x64 -p:PublishAot=true -m:1 - - name: Package release artifacts - shell: bash - env: - RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }} - run: | - set -euo pipefail - tag="${RELEASE_TAG}" - version="${tag#v}" - publish_dir="Podish.Cli/bin/Release/net10.0/osx-arm64/publish" - staging_dir="$RUNNER_TEMP/PodishCli-$version-osx-arm64" - archive_name="PodishCli-$version-osx-arm64-nativeaot.tar.gz" - checksum_name="${archive_name}.sha256" + - name: Upload Linux publish artifact + uses: actions/upload-artifact@v4 + with: + name: podishcli-linux-x64-nativeaot-publish + path: Podish.Cli/bin/Release/net10.0/linux-x64/publish/** - rm -rf "$staging_dir" - mkdir -p "$staging_dir" - cp "$publish_dir/Podish.Cli" "$staging_dir/" - chmod +x "$staging_dir/Podish.Cli" + publish-macos: + name: Publish macOS PodishCli NativeAOT + runs-on: macos-latest - tar -C "$RUNNER_TEMP" -czf "$archive_name" "$(basename "$staging_dir")" - shasum -a 256 "$archive_name" > "$checksum_name" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }} + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.x - - name: Upload workflow artifacts + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + + - name: Install native build dependencies + run: | + brew install cmake ninja + + - name: Publish macOS PodishCli NativeAOT + run: dotnet publish Podish.Cli/Podish.Cli.csproj -c Release -r osx-arm64 -p:PublishAot=true -m:1 + + - name: Upload macOS publish artifact uses: actions/upload-artifact@v4 with: - name: podishcli-osx-arm64-nativeaot - path: | - PodishCli-*-osx-arm64-nativeaot.tar.gz - PodishCli-*-osx-arm64-nativeaot.tar.gz.sha256 + name: podishcli-osx-arm64-nativeaot-publish + path: Podish.Cli/bin/Release/net10.0/osx-arm64/publish/** - build-windows: - name: Build Windows PodishCli NativeAOT + publish-windows: + name: Publish Windows PodishCli NativeAOT runs-on: windows-latest steps: @@ -93,61 +103,83 @@ jobs: - name: Setup Rust uses: dtolnay/rust-toolchain@stable - - name: Publish PodishCli NativeAOT + - name: Publish Windows PodishCli NativeAOT run: dotnet publish Podish.Cli/Podish.Cli.csproj -c Release -r win-x64 -p:PublishAot=true -m:1 shell: pwsh - - name: Package release artifacts - shell: pwsh - env: - RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }} - run: | - $ErrorActionPreference = "Stop" - $tag = $env:RELEASE_TAG - $version = $tag.Substring(1) - $publishDir = "Podish.Cli/bin/Release/net10.0/win-x64/publish" - $stagingDir = Join-Path $env:RUNNER_TEMP "PodishCli-$version-win-x64" - $archiveName = "PodishCli-$version-win-x64-nativeaot.zip" - $checksumName = "$archiveName.sha256" - - if (Test-Path $stagingDir) { - Remove-Item $stagingDir -Recurse -Force - } - New-Item -ItemType Directory -Path $stagingDir | Out-Null - Copy-Item (Join-Path $publishDir "Podish.Cli.exe") $stagingDir - - if (Test-Path $archiveName) { - Remove-Item $archiveName -Force - } - Compress-Archive -Path "$stagingDir/*" -DestinationPath $archiveName -CompressionLevel Optimal - $hash = (Get-FileHash $archiveName -Algorithm SHA256).Hash.ToLowerInvariant() - "$hash $archiveName" | Out-File -FilePath $checksumName -Encoding ascii - - - name: Upload workflow artifacts + - name: Upload Windows publish artifact uses: actions/upload-artifact@v4 with: - name: podishcli-win-x64-nativeaot - path: | - PodishCli-*-win-x64-nativeaot.zip - PodishCli-*-win-x64-nativeaot.zip.sha256 + name: podishcli-win-x64-nativeaot-publish + path: Podish.Cli/bin/Release/net10.0/win-x64/publish/** publish-release: name: Publish GitHub Release runs-on: ubuntu-latest needs: - - build-macos - - build-windows + - publish-linux + - publish-macos + - publish-windows steps: - - name: Download macOS artifacts + - name: Download Linux publish artifact uses: actions/download-artifact@v4 with: - name: podishcli-osx-arm64-nativeaot + name: podishcli-linux-x64-nativeaot-publish + path: publish/linux-x64 - - name: Download Windows artifacts + - name: Download macOS publish artifact uses: actions/download-artifact@v4 with: - name: podishcli-win-x64-nativeaot + name: podishcli-osx-arm64-nativeaot-publish + path: publish/osx-arm64 + + - name: Download Windows publish artifact + uses: actions/download-artifact@v4 + with: + name: podishcli-win-x64-nativeaot-publish + path: publish/win-x64 + + - name: Package release artifacts + shell: bash + env: + RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }} + run: | + set -euo pipefail + version="${RELEASE_TAG#v}" + rm -rf release-artifacts + mkdir -p release-artifacts + + package_tarball() { + local rid="$1" + local source_dir="publish/$rid" + local staging_dir="release-artifacts/podishcli-$version-$rid-nativeaot-publish" + local archive="release-artifacts/podishcli-$version-$rid-nativeaot-publish.tar.gz" + rm -rf "$staging_dir" + mkdir -p "$staging_dir" + cp -a "$source_dir"/. "$staging_dir"/ + if [[ -f "$staging_dir/Podish.Cli" ]]; then + chmod +x "$staging_dir/Podish.Cli" + fi + tar -C release-artifacts -czf "$archive" "$(basename "$staging_dir")" + (cd release-artifacts && sha256sum "$(basename "$archive")" > "$(basename "$archive").sha256") + } + + package_zip() { + local rid="$1" + local source_dir="publish/$rid" + local staging_dir="release-artifacts/podishcli-$version-$rid-nativeaot-publish" + local archive="release-artifacts/podishcli-$version-$rid-nativeaot-publish.zip" + rm -rf "$staging_dir" "$archive" + mkdir -p "$staging_dir" + cp -a "$source_dir"/. "$staging_dir"/ + python -m zipfile -c "$archive" "$staging_dir" + (cd release-artifacts && sha256sum "$(basename "$archive")" > "$(basename "$archive").sha256") + } + + package_tarball linux-x64 + package_tarball osx-arm64 + package_zip win-x64 - name: Create or update GitHub Release env: @@ -161,8 +193,10 @@ jobs: gh release create "$tag" --title "$tag" --generate-notes fi gh release upload "$tag" \ - PodishCli-*-osx-arm64-nativeaot.tar.gz \ - PodishCli-*-osx-arm64-nativeaot.tar.gz.sha256 \ - PodishCli-*-win-x64-nativeaot.zip \ - PodishCli-*-win-x64-nativeaot.zip.sha256 \ + release-artifacts/podishcli-*-linux-x64-nativeaot-publish.tar.gz \ + release-artifacts/podishcli-*-linux-x64-nativeaot-publish.tar.gz.sha256 \ + release-artifacts/podishcli-*-osx-arm64-nativeaot-publish.tar.gz \ + release-artifacts/podishcli-*-osx-arm64-nativeaot-publish.tar.gz.sha256 \ + release-artifacts/podishcli-*-win-x64-nativeaot-publish.zip \ + release-artifacts/podishcli-*-win-x64-nativeaot-publish.zip.sha256 \ --clobber diff --git a/Podish.Cli/Podish.Cli.csproj b/Podish.Cli/Podish.Cli.csproj index e28f8c9..3b750d4 100644 --- a/Podish.Cli/Podish.Cli.csproj +++ b/Podish.Cli/Podish.Cli.csproj @@ -76,8 +76,8 @@ - - + +