From e869805ddf5e4a837bce245b0fec023102ddfae8 Mon Sep 17 00:00:00 2001 From: Sylvain Rabot Date: Fri, 14 Feb 2025 09:43:08 +0100 Subject: [PATCH 1/6] Use Go 1.24 Signed-off-by: Sylvain Rabot --- .github/workflows/go.yaml | 2 +- .github/workflows/tag.yaml | 2 +- Dockerfile | 4 ++-- go.mod | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/go.yaml b/.github/workflows/go.yaml index 051f0f3..3230110 100644 --- a/.github/workflows/go.yaml +++ b/.github/workflows/go.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go: ["1.23"] + go: ["1.24"] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/tag.yaml b/.github/workflows/tag.yaml index 74091bf..8745752 100644 --- a/.github/workflows/tag.yaml +++ b/.github/workflows/tag.yaml @@ -19,7 +19,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: "1.23" + go-version: "1.24" - name: Run GoReleaser uses: goreleaser/goreleaser-action@v6 diff --git a/Dockerfile b/Dockerfile index 69ed259..f4774ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} golang:1.20 as build +FROM --platform=${BUILDPLATFORM} golang:1.24 as build # Create appuser. # See https://stackoverflow.com/a/55757473/12429735 @@ -38,6 +38,6 @@ LABEL org.opencontainers.image.ref.name="${PACKAGE}" \ ARG TARGETOS ARG TARGETARCH -COPY ./dist/hey_${TARGETOS}_${TARGETARCH}/hey +COPY ./dist/hey_${TARGETOS}_${TARGETARCH}/hey / ENTRYPOINT ["/hey"] diff --git a/go.mod b/go.mod index 28b419c..2893024 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/sylr/hey go 1.22.0 -toolchain go1.23.4 +toolchain go1.24 require ( github.com/quic-go/quic-go v0.48.2 From 7a6428cb180f4083a2513dd9ba82bff56bd82335 Mon Sep 17 00:00:00 2001 From: Sylvain Rabot Date: Fri, 14 Feb 2025 09:43:51 +0100 Subject: [PATCH 2/6] Upgrade dependencies Signed-off-by: Sylvain Rabot --- go.mod | 26 +++++++++++------------ go.sum | 52 ++++++++++++++++++++++----------------------- requester/report.go | 2 +- 3 files changed, 39 insertions(+), 41 deletions(-) diff --git a/go.mod b/go.mod index 2893024..b17a69e 100644 --- a/go.mod +++ b/go.mod @@ -1,25 +1,23 @@ module github.com/sylr/hey -go 1.22.0 - -toolchain go1.24 +go 1.24 require ( - github.com/quic-go/quic-go v0.48.2 - golang.org/x/net v0.33.0 + github.com/quic-go/quic-go v0.49.0 + golang.org/x/net v0.35.0 ) require ( github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect - github.com/onsi/ginkgo/v2 v2.22.1 // indirect + github.com/google/pprof v0.0.0-20250208200701-d0013a598941 // indirect + github.com/onsi/ginkgo/v2 v2.22.2 // indirect github.com/quic-go/qpack v0.5.1 // indirect go.uber.org/mock v0.5.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 // indirect - golang.org/x/mod v0.22.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.28.0 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac // indirect + golang.org/x/mod v0.23.0 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + golang.org/x/tools v0.30.0 // indirect ) diff --git a/go.sum b/go.sum index e76cd98..4d4018f 100644 --- a/go.sum +++ b/go.sum @@ -6,41 +6,41 @@ github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1v github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= -github.com/onsi/ginkgo/v2 v2.22.1 h1:QW7tbJAUDyVDVOM5dFa7qaybo+CRfR7bemlQUN6Z8aM= -github.com/onsi/ginkgo/v2 v2.22.1/go.mod h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM= -github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw= -github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= +github.com/google/pprof v0.0.0-20250208200701-d0013a598941 h1:43XjGa6toxLpeksjcxs1jIoIyr+vUfOqY2c6HB4bpoc= +github.com/google/pprof v0.0.0-20250208200701-d0013a598941/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= +github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= +github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= +github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= -github.com/quic-go/quic-go v0.48.2 h1:wsKXZPeGWpMpCGSWqOcqpW2wZYic/8T3aqiOID0/KWE= -github.com/quic-go/quic-go v0.48.2/go.mod h1:yBgs3rWBOADpga7F+jJsb6Ybg1LSYiQvwWlLX+/6HMs= +github.com/quic-go/quic-go v0.49.0 h1:w5iJHXwHxs1QxyBv1EHKuC50GX5to8mJAxvtnttJp94= +github.com/quic-go/quic-go v0.49.0/go.mod h1:s2wDnmCdooUQBmQfpUSTCYBl1/D4FcqbULMMkASvR6s= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= -golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac h1:l5+whBCLH3iH2ZNHYLbAe58bo7yrN4mVcnkHDYz5vvs= +golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac/go.mod h1:hH+7mtFmImwwcMvScyxUhjuVHR3HGaDPMn9rMSUUbxo= +golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= -golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= +golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/requester/report.go b/requester/report.go index d281054..40107af 100644 --- a/requester/report.go +++ b/requester/report.go @@ -131,7 +131,7 @@ func (r *report) print() { log.Println("error:", err.Error()) return } - r.printf(buf.String()) + r.w.Write(buf.Bytes()) r.printf("\n") } From 9d3defe55a4efaad9cb5daaeac8eea27eabaee5e Mon Sep 17 00:00:00 2001 From: Sylvain Rabot Date: Sat, 22 Nov 2025 18:12:05 +0100 Subject: [PATCH 3/6] Use Go 1.25 Signed-off-by: Sylvain Rabot --- .github/workflows/go.yaml | 4 +-- .github/workflows/tag.yaml | 7 +++-- .goreleaser.yaml | 30 +++++++++++++++----- Dockerfile | 2 +- go.mod | 25 +++++++--------- go.sum | 58 ++++++++++++-------------------------- requester/requester.go | 49 ++++++++++++++++---------------- 7 files changed, 82 insertions(+), 93 deletions(-) diff --git a/.github/workflows/go.yaml b/.github/workflows/go.yaml index 3230110..257ab38 100644 --- a/.github/workflows/go.yaml +++ b/.github/workflows/go.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go: ["1.24"] + go: ["1.25"] steps: - name: Checkout uses: actions/checkout@v4 @@ -19,7 +19,7 @@ jobs: lfs: true - name: Set up Go ${{ matrix.go }} - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: ${{ matrix.go }} id: go diff --git a/.github/workflows/tag.yaml b/.github/workflows/tag.yaml index 8745752..0bf4a8c 100644 --- a/.github/workflows/tag.yaml +++ b/.github/workflows/tag.yaml @@ -11,15 +11,16 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 + filter: tree:none lfs: true - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: - go-version: "1.24" + go-version: "1.25" - name: Run GoReleaser uses: goreleaser/goreleaser-action@v6 diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 33f3fac..81f3952 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -7,6 +7,8 @@ before: builds: - env: - CGO_ENABLED=0 + tags: + - goexperiment.greenteagc goos: - linux - freebsd @@ -14,20 +16,34 @@ builds: - windows - darwin goarch: - - "386" - amd64 - arm - arm64 goarm: - - 6 - - 7 + - "6" + - "7" + goamd64: + - v1 + - v2 + - v3 + - v4 + goarm64: + - v8.0 + - v8.1 + - v8.2 + - v8.3 + - v9.0 + ignore: + - goos: windows + goarch: arm flags: - -trimpath ldflags: - -s -w archives: -- name_template: "{{ .ProjectName }}-v{{ .Version }}-{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" - format: binary +- name_template: "{{ .ProjectName }}-v{{ .Version }}-{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ else if .Amd64 }}v{{ .Amd64 }}{{ else if .Amd64 }}v{{ .Amd64 }}{{ end }}" + formats: + - binary checksum: name_template: '{{ .ProjectName }}-v{{ .Version }}-checksums.txt' snapshot: @@ -36,8 +52,8 @@ changelog: sort: asc filters: exclude: - - '^docs:' - - '^test:' + - '^docs:' + - '^test:' release: github: owner: sylr diff --git a/Dockerfile b/Dockerfile index f4774ef..edca48e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM} golang:1.24 as build +FROM --platform=${BUILDPLATFORM} golang:1.25 as build # Create appuser. # See https://stackoverflow.com/a/55757473/12429735 diff --git a/go.mod b/go.mod index b17a69e..c60d0d5 100644 --- a/go.mod +++ b/go.mod @@ -1,23 +1,18 @@ module github.com/sylr/hey -go 1.24 +go 1.24.0 + +toolchain go1.25.4 require ( - github.com/quic-go/quic-go v0.49.0 - golang.org/x/net v0.35.0 + github.com/quic-go/quic-go v0.57.0 + golang.org/x/net v0.47.0 ) require ( - github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/google/pprof v0.0.0-20250208200701-d0013a598941 // indirect - github.com/onsi/ginkgo/v2 v2.22.2 // indirect - github.com/quic-go/qpack v0.5.1 // indirect - go.uber.org/mock v0.5.0 // indirect - golang.org/x/crypto v0.33.0 // indirect - golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.23.0 // indirect - golang.org/x/sync v0.11.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.22.0 // indirect - golang.org/x/tools v0.30.0 // indirect + github.com/quic-go/qpack v0.6.0 // indirect + go.uber.org/mock v0.6.0 // indirect + golang.org/x/crypto v0.45.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect ) diff --git a/go.sum b/go.sum index 4d4018f..18d2987 100644 --- a/go.sum +++ b/go.sum @@ -1,46 +1,24 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= -github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20250208200701-d0013a598941 h1:43XjGa6toxLpeksjcxs1jIoIyr+vUfOqY2c6HB4bpoc= -github.com/google/pprof v0.0.0-20250208200701-d0013a598941/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= -github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= -github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= -github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= -github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= -github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= -github.com/quic-go/quic-go v0.49.0 h1:w5iJHXwHxs1QxyBv1EHKuC50GX5to8mJAxvtnttJp94= -github.com/quic-go/quic-go v0.49.0/go.mod h1:s2wDnmCdooUQBmQfpUSTCYBl1/D4FcqbULMMkASvR6s= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= -go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac h1:l5+whBCLH3iH2ZNHYLbAe58bo7yrN4mVcnkHDYz5vvs= -golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac/go.mod h1:hH+7mtFmImwwcMvScyxUhjuVHR3HGaDPMn9rMSUUbxo= -golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= -golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= -google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= -google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= +github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= +github.com/quic-go/quic-go v0.57.0 h1:AsSSrrMs4qI/hLrKlTH/TGQeTMY0ib1pAOX7vA3AdqE= +github.com/quic-go/quic-go v0.57.0/go.mod h1:ly4QBAjHA2VhdnxhojRsCUOeJwKYg+taDlos92xb1+s= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= +go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/requester/requester.go b/requester/requester.go index 5e7dbfa..4a47c90 100644 --- a/requester/requester.go +++ b/requester/requester.go @@ -243,34 +243,33 @@ func (b *Work) runWorkers() { ServerName: b.Request.Host, } - var rt http.RoundTripper - tr := &http.Transport{ - TLSClientConfig: tlsConfig, - MaxIdleConnsPerHost: min(b.C, maxIdleConn), - DisableCompression: b.DisableCompression, - DisableKeepAlives: b.DisableKeepAlives, - Proxy: http.ProxyURL(b.ProxyAddr), - } - - if b.H3 { - tlsConfig = http3.ConfigureTLSConfig(tlsConfig) - tr := &http3.Transport{ - TLSClientConfig: tlsConfig, - DisableCompression: b.DisableCompression, - } - rt = tr - } else if b.H2 { - http2.ConfigureTransport(tr) - rt = tr - } else { - tr.TLSNextProto = make(map[string]func(string, *tls.Conn) http.RoundTripper) - rt = tr - } - client := &http.Client{Transport: rt, Timeout: time.Duration(b.Timeout) * time.Second} - // Ignore the case where b.N % b.C != 0. for i := 0; i < b.C; i++ { go func() { + var rt http.RoundTripper + tr := &http.Transport{ + TLSClientConfig: tlsConfig, + MaxIdleConnsPerHost: min(b.C, maxIdleConn), + DisableCompression: b.DisableCompression, + DisableKeepAlives: b.DisableKeepAlives, + Proxy: http.ProxyURL(b.ProxyAddr), + } + + if b.H3 { + tlsConfig = http3.ConfigureTLSConfig(tlsConfig) + tr := &http3.Transport{ + TLSClientConfig: tlsConfig, + DisableCompression: b.DisableCompression, + } + rt = tr + } else if b.H2 { + http2.ConfigureTransport(tr) + rt = tr + } else { + tr.TLSNextProto = make(map[string]func(string, *tls.Conn) http.RoundTripper) + rt = tr + } + client := &http.Client{Transport: rt, Timeout: time.Duration(b.Timeout) * time.Second} b.runWorker(client, b.N/b.C) wg.Done() }() From 7daded77d7bb05ea09ab08434a5c2ea720a086be Mon Sep 17 00:00:00 2001 From: Sylvain Rabot Date: Sat, 22 Nov 2025 18:19:33 +0100 Subject: [PATCH 4/6] Tune goreleaser config Signed-off-by: Sylvain Rabot --- .goreleaser.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 81f3952..0a8ebe9 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -41,7 +41,7 @@ builds: ldflags: - -s -w archives: -- name_template: "{{ .ProjectName }}-v{{ .Version }}-{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ else if .Amd64 }}v{{ .Amd64 }}{{ else if .Amd64 }}v{{ .Amd64 }}{{ end }}" +- name_template: "{{ .ProjectName }}-v{{ .Version }}-{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ else if .Arm64 }}{{ .Arm64 }}{{ else if .Amd64 }}{{ .Amd64 }}{{ end }}" formats: - binary checksum: From a0763637d25867f5c7813cd2384ac1d929e97fac Mon Sep 17 00:00:00 2001 From: Sylvain Rabot Date: Sat, 22 Nov 2025 18:40:31 +0100 Subject: [PATCH 5/6] Update default.pgo Signed-off-by: Sylvain Rabot --- default.pgo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/default.pgo b/default.pgo index bdcf4b1..6c71f60 100644 --- a/default.pgo +++ b/default.pgo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4793a985207d654e32425f8e439342fca929c7b4635c53ebdb3ac28464f86cd -size 17314 +oid sha256:db655a2cdfc7f52209bd21e84f4a932badb26811c4a8fb7b71368739887100e9 +size 37067 From d73eec94065a21c2cd15d6cfc3c220ad4fb6d388 Mon Sep 17 00:00:00 2001 From: Sylvain Rabot Date: Sat, 22 Nov 2025 18:43:47 +0100 Subject: [PATCH 6/6] Add make target for updating default.pgo Signed-off-by: Sylvain Rabot --- Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile b/Makefile index 7be583d..36415c9 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,7 @@ .PHONY: build test release +HEY ?= hey + build: @goreleaser build --skip=validate --clean @@ -8,3 +10,8 @@ test: release: @goreleaser release --clean + +update-pgo: + $(HEY) -profile -h2 -n 15000 -c 10 https://abstraction.fr/static/css/light.css && mv cpu.pprof h2.prof + $(HEY) -profile -h3 -n 15000 -c 10 https://abstraction.fr/static/css/light.css && mv cpu.pprof h3.prof + go tool pprof -proto h2.prof h3.prof > default.pgo