From 0b53f5105c638734e5d3a0d72ec3288aa6da2f65 Mon Sep 17 00:00:00 2001 From: Anton Oreskin Date: Sat, 12 Sep 2026 13:41:00 +0200 Subject: [PATCH 1/2] Fix loader include for V3 --- .github/workflows/generated-bindings-ci.yml | 56 ++++++++++++--------- c/volk.c.v | 2 +- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/.github/workflows/generated-bindings-ci.yml b/.github/workflows/generated-bindings-ci.yml index 253ea3c..3144fbc 100644 --- a/.github/workflows/generated-bindings-ci.yml +++ b/.github/workflows/generated-bindings-ci.yml @@ -82,6 +82,10 @@ jobs: compiler: gcc v-channel: master v-version: master + - os: ubuntu-24.04 + compiler: gcc + v-channel: v3 + v-version: 5ff8ecb55f6709fd7e6f645ef7779383f30c47c0 - os: macos-14 compiler: clang v-channel: stable @@ -99,36 +103,36 @@ jobs: ref: 2700e4f4c58e9e625657b80f4f44b0584d7c6096 path: generator - uses: prantlf/setup-v-action@v4 - if: matrix.v-channel != 'master' + if: matrix.v-channel == 'stable' with: version: ${{ matrix.v-version }} - # V master currently builds a separate v1_fallback executable for tool - # commands such as `v test`. Keep the complete source build together; - # setup-v-action@v4's reduced cache bundle omits that executable. - - name: Check out V master - if: matrix.v-channel == 'master' + # Source-built V revisions include the v1_fallback executable needed by + # tool commands such as `v test`; setup-v-action@v4 omits it from cache. + - name: Check out source-built V + if: matrix.v-channel != 'stable' uses: actions/checkout@v7 - id: checkout_v_master - continue-on-error: true + id: checkout_v_source + continue-on-error: ${{ matrix.v-channel == 'master' }} with: repository: vlang/v - path: .ci-v-master + ref: ${{ matrix.v-version }} + path: .ci-v-source fetch-depth: 1 - - name: Build V master - if: matrix.v-channel == 'master' && steps.checkout_v_master.outcome == 'success' - id: setup_v_master - continue-on-error: true + - name: Build source V compiler + if: matrix.v-channel != 'stable' && steps.checkout_v_source.outcome == 'success' + id: setup_v_source + continue-on-error: ${{ matrix.v-channel == 'master' }} shell: bash run: | - make -C .ci-v-master - echo "$GITHUB_WORKSPACE/.ci-v-master" >> "$GITHUB_PATH" - .ci-v-master/v -V + make -C .ci-v-source + echo "$GITHUB_WORKSPACE/.ci-v-source" >> "$GITHUB_PATH" + .ci-v-source/v -V - name: Install Vulkan SDK and SwiftShader test artifacts - if: matrix.v-channel != 'master' || steps.setup_v_master.outcome == 'success' + if: matrix.v-channel == 'stable' || steps.setup_v_source.outcome == 'success' shell: bash run: bash .github/scripts/setup-vulkan-ci.sh 1.4.309.0 v1.2 - name: Install registry-matched headers and pinned Volk - if: matrix.v-channel != 'master' || steps.setup_v_master.outcome == 'success' + if: matrix.v-channel == 'stable' || steps.setup_v_source.outcome == 'success' shell: bash run: | set -euo pipefail @@ -151,11 +155,11 @@ jobs: "https://raw.githubusercontent.com/zeux/volk/$volk_commit/volk.c" \ --output "$VULKAN_SDK/include/volk/volk.c" - name: Verify the public setup diagnostics - if: matrix.v-channel != 'master' || steps.setup_v_master.outcome == 'success' + if: matrix.v-channel == 'stable' || steps.setup_v_source.outcome == 'success' shell: bash run: v run setup.vsh --check - name: Assemble isolated module - if: matrix.v-channel != 'master' || steps.setup_v_master.outcome == 'success' + if: matrix.v-channel == 'stable' || steps.setup_v_source.outcome == 'success' shell: bash run: | set -euo pipefail @@ -169,17 +173,19 @@ jobs: echo "VMODULES=$RUNNER_TEMP/vmodules" >> "$GITHUB_ENV" - name: Compile smoke test and ergonomic unit tests id: compile - if: matrix.v-channel != 'master' || steps.setup_v_master.outcome == 'success' + if: matrix.v-channel == 'stable' || steps.setup_v_source.outcome == 'success' continue-on-error: ${{ matrix.v-channel == 'master' }} shell: bash run: | set -euo pipefail + v_flags=() + if [[ "${{ matrix.v-channel }}" == v3 ]]; then v_flags+=(-new-compiler); fi if [[ "${{ runner.os }}" == macOS ]]; then - v -cc "${{ matrix.compiler }}" -o "$RUNNER_TEMP/vulkan-smoke" generator/test + v "${v_flags[@]}" -cc "${{ matrix.compiler }}" -o "$RUNNER_TEMP/vulkan-smoke" generator/test else - v -cc "${{ matrix.compiler }}" run generator/test + v "${v_flags[@]}" -cc "${{ matrix.compiler }}" run generator/test fi - v -cc "${{ matrix.compiler }}" test ergonomic + v "${v_flags[@]}" -cc "${{ matrix.compiler }}" test ergonomic - name: Validate TinyCC loader and ergonomic API if: runner.os == 'Linux' && matrix.v-channel == 'stable' shell: bash @@ -189,7 +195,7 @@ jobs: VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation \ v -cc tcc run examples/ergonomic_lifecycle - name: Report V master compatibility warning - if: always() && matrix.v-channel == 'master' && (steps.checkout_v_master.outcome == 'failure' || steps.setup_v_master.outcome == 'failure' || steps.compile.outcome == 'failure') + if: always() && matrix.v-channel == 'master' && (steps.checkout_v_source.outcome == 'failure' || steps.setup_v_source.outcome == 'failure' || steps.compile.outcome == 'failure') run: echo "::warning::The live V master compatibility lane failed; stable V 0.5.2 remains authoritative." - name: Run lifecycle under validation if: runner.os == 'Linux' && matrix.v-channel == 'stable' diff --git a/c/volk.c.v b/c/volk.c.v index fabd981..2f87f06 100644 --- a/c/volk.c.v +++ b/c/volk.c.v @@ -10,4 +10,4 @@ module c #define VK_NO_PROTOTYPES #define VOLK_IMPLEMENTATION #include -#include "loader_bridge.h" +#include "@VMODROOT/c/loader_bridge.h" From 26cb96802ac11e9dd8124183e7b8649e575448a8 Mon Sep 17 00:00:00 2001 From: Anton Oreskin Date: Sat, 12 Sep 2026 14:23:08 +0200 Subject: [PATCH 2/2] Keep source compiler lanes advisory --- .github/workflows/generated-bindings-ci.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/generated-bindings-ci.yml b/.github/workflows/generated-bindings-ci.yml index 3144fbc..a646ee5 100644 --- a/.github/workflows/generated-bindings-ci.yml +++ b/.github/workflows/generated-bindings-ci.yml @@ -174,18 +174,18 @@ jobs: - name: Compile smoke test and ergonomic unit tests id: compile if: matrix.v-channel == 'stable' || steps.setup_v_source.outcome == 'success' - continue-on-error: ${{ matrix.v-channel == 'master' }} + continue-on-error: ${{ matrix.v-channel != 'stable' }} shell: bash run: | set -euo pipefail - v_flags=() - if [[ "${{ matrix.v-channel }}" == v3 ]]; then v_flags+=(-new-compiler); fi + v_flags=(-cc "${{ matrix.compiler }}") + if [[ "${{ matrix.v-channel }}" == v3 ]]; then v_flags=(-new-compiler "${v_flags[@]}"); fi if [[ "${{ runner.os }}" == macOS ]]; then - v "${v_flags[@]}" -cc "${{ matrix.compiler }}" -o "$RUNNER_TEMP/vulkan-smoke" generator/test + v "${v_flags[@]}" -o "$RUNNER_TEMP/vulkan-smoke" generator/test else - v "${v_flags[@]}" -cc "${{ matrix.compiler }}" run generator/test + v "${v_flags[@]}" run generator/test fi - v "${v_flags[@]}" -cc "${{ matrix.compiler }}" test ergonomic + v "${v_flags[@]}" test ergonomic - name: Validate TinyCC loader and ergonomic API if: runner.os == 'Linux' && matrix.v-channel == 'stable' shell: bash @@ -194,9 +194,9 @@ jobs: v -cc tcc test ergonomic VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation \ v -cc tcc run examples/ergonomic_lifecycle - - name: Report V master compatibility warning - if: always() && matrix.v-channel == 'master' && (steps.checkout_v_source.outcome == 'failure' || steps.setup_v_source.outcome == 'failure' || steps.compile.outcome == 'failure') - run: echo "::warning::The live V master compatibility lane failed; stable V 0.5.2 remains authoritative." + - name: Report source compiler compatibility warning + if: always() && matrix.v-channel != 'stable' && (steps.checkout_v_source.outcome == 'failure' || steps.setup_v_source.outcome == 'failure' || steps.compile.outcome == 'failure') + run: echo "::warning::The ${{ matrix.v-channel }} compatibility lane failed; stable V 0.5.2 remains authoritative." - name: Run lifecycle under validation if: runner.os == 'Linux' && matrix.v-channel == 'stable' shell: bash