diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 81d4cf6b..7ab20d7b 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -174,7 +174,7 @@ jobs: VARIANT: ${{ matrix.variant }} - name: Upload builder metadata if: fromJson(needs.prepare.outputs.push) - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: metadata-builder-${{ matrix.variant }}-${{ steps.prepare.outputs.sanitized_platform }} path: /tmp/metadata/builder/* @@ -182,7 +182,7 @@ jobs: retention-days: 1 - name: Upload runner metadata if: fromJson(needs.prepare.outputs.push) - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: metadata-runner-${{ matrix.variant }}-${{ steps.prepare.outputs.sanitized_platform }} path: /tmp/metadata/runner/* @@ -216,7 +216,7 @@ jobs: target: ["builder", "runner"] steps: - name: Download metadata - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: pattern: metadata-${{ matrix.target }}-${{ matrix.variant }}-* path: /tmp/metadata diff --git a/.github/workflows/static.yaml b/.github/workflows/static.yaml index a8be8926..d4bf6126 100644 --- a/.github/workflows/static.yaml +++ b/.github/workflows/static.yaml @@ -170,7 +170,7 @@ jobs: METADATA: ${{ steps.build.outputs.metadata }} - name: Upload metadata if: fromJson(needs.prepare.outputs.push) && !matrix.debug && !matrix.mimalloc - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: metadata-static-builder-musl-${{ steps.prepare.outputs.sanitized_platform }} path: /tmp/metadata/* @@ -190,7 +190,7 @@ jobs: PLATFORM: ${{ matrix.platform }} - name: Upload artifact if: ${{ !fromJson(needs.prepare.outputs.push) }} - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: frankenphp-linux-${{ matrix.platform == 'linux/amd64' && 'x86_64' || 'aarch64' }}${{ matrix.debug && '-debug' || '' }}${{ matrix.mimalloc && '-mimalloc' || '' }} path: frankenphp-linux-${{ matrix.platform == 'linux/amd64' && 'x86_64' || 'aarch64' }}${{ matrix.debug && '-debug' || '' }}${{ matrix.mimalloc && '-mimalloc' || '' }} @@ -202,7 +202,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} REF: ${{ (github.ref_type == 'tag' && github.ref_name) || needs.prepare.outputs.ref }} - if: fromJson(needs.prepare.outputs.push) && (needs.prepare.outputs.ref || github.ref_type == 'tag') - uses: actions/attest-build-provenance@v3 + uses: actions/attest-build-provenance@v4 with: subject-path: ${{ github.workspace }}/frankenphp-linux-* - name: Run sanity checks @@ -323,7 +323,7 @@ jobs: METADATA: ${{ steps.build.outputs.metadata }} - name: Upload metadata if: fromJson(needs.prepare.outputs.push) - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: metadata-static-builder-gnu-${{ steps.prepare.outputs.sanitized_platform }} path: /tmp/metadata-gnu/* @@ -349,7 +349,7 @@ jobs: PLATFORM: ${{ matrix.platform }} - name: Upload artifact if: ${{ !fromJson(needs.prepare.outputs.push) }} - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: frankenphp-linux-${{ matrix.platform == 'linux/amd64' && 'x86_64' || 'aarch64' }}-gnu-files path: gh-output/* @@ -360,7 +360,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} REF: ${{ (github.ref_type == 'tag' && github.ref_name) || needs.prepare.outputs.ref }} - if: fromJson(needs.prepare.outputs.push) && (needs.prepare.outputs.ref || github.ref_type == 'tag') - uses: actions/attest-build-provenance@v3 + uses: actions/attest-build-provenance@v4 with: subject-path: ${{ github.workspace }}/gh-output/frankenphp-linux-*-gnu - name: Run sanity checks @@ -385,13 +385,13 @@ jobs: if: fromJson(needs.prepare.outputs.push) steps: - name: Download metadata - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: pattern: metadata-static-builder-musl-* path: /tmp/metadata merge-multiple: true - name: Download GNU metadata - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: pattern: metadata-static-builder-gnu-* path: /tmp/metadata-gnu @@ -480,17 +480,17 @@ jobs: NO_COMPRESS: ${{ github.event_name == 'pull_request' && '1' || '' }} - name: Upload logs if: ${{ failure() }} - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: path: dist/static-php-cli/log name: static-php-cli-log-${{ matrix.platform }}-${{ github.sha }} - if: needs.prepare.outputs.ref || github.ref_type == 'tag' - uses: actions/attest-build-provenance@v3 + uses: actions/attest-build-provenance@v4 with: subject-path: ${{ github.workspace }}/dist/frankenphp-mac-* - name: Upload artifact if: github.ref_type == 'branch' - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: frankenphp-mac-${{ matrix.platform }} path: dist/frankenphp-mac-${{ matrix.platform }} diff --git a/.github/workflows/translate.yaml b/.github/workflows/translate.yaml index 7a76f6d7..cfc72d51 100644 --- a/.github/workflows/translate.yaml +++ b/.github/workflows/translate.yaml @@ -25,7 +25,7 @@ jobs: # because this workflow needs to push a branch via git push - id: md_files run: | - FILES=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" -- 'docs/*.md') + FILES=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" -- 'docs/*.md' ':(exclude)docs/*/*.md') FILES=$(echo "$FILES" | xargs -n1 basename | tr '\n' ' ') [ -z "$FILES" ] && echo "found=false" >> "$GITHUB_OUTPUT" || echo "found=true" >> "$GITHUB_OUTPUT" echo "files=$FILES" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/windows.yaml b/.github/workflows/windows.yaml index 76cc067e..2602a8bc 100644 --- a/.github/workflows/windows.yaml +++ b/.github/workflows/windows.yaml @@ -207,7 +207,7 @@ jobs: - name: Upload Artifact if: ${{ !env.REF }} - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: ${{ env.DIR_NAME }} path: ${{ env.DIR_NAME }} diff --git a/internal/phpheaders/phpheaders.go b/internal/phpheaders/phpheaders.go index 19f1908d..e4a93554 100644 --- a/internal/phpheaders/phpheaders.go +++ b/internal/phpheaders/phpheaders.go @@ -118,18 +118,16 @@ var CommonRequestHeaders = map[string]string{ // Cache up to 256 uncommon headers // This is ~2.5x faster than converting the header each time -var headerKeyCache = otter.Must[string, string](&otter.Options[string, string]{MaximumSize: 256}) - -var headerNameReplacer = strings.NewReplacer(" ", "_", "-", "_") +var ( + headerKeyCache = otter.Must[string, string](&otter.Options[string, string]{MaximumSize: 256}) + headerNameReplacer = strings.NewReplacer(" ", "_", "-", "_") + loader = otter.LoaderFunc[string, string](func(_ context.Context, key string) (string, error) { + return "HTTP_" + headerNameReplacer.Replace(strings.ToUpper(key)) + "\x00", nil + }) +) func GetUnCommonHeader(ctx context.Context, key string) string { - phpHeaderKey, err := headerKeyCache.Get( - ctx, - key, - otter.LoaderFunc[string, string](func(_ context.Context, key string) (string, error) { - return "HTTP_" + headerNameReplacer.Replace(strings.ToUpper(key)) + "\x00", nil - }), - ) + phpHeaderKey, err := headerKeyCache.Get(ctx, key, loader) if err != nil { panic(err) }