Skip to content

roadrunner: update to v0.10.1 and render fortunes with Arizona - #1560

Open
williamthome wants to merge 8 commits into
MDA2AV:mainfrom
williamthome:entries/roadrunner-0.10.0
Open

williamthome wants to merge 8 commits into
MDA2AV:mainfrom
williamthome:entries/roadrunner-0.10.0

Conversation

@williamthome

@williamthome williamthome commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Description

Updates roadrunner to v0.10.1 and drops what the entry no longer needs: the manual body mode and size cap kept for the retired upload profile, and the endpoints of the retired crud profile.

/fortunes now renders through an Arizona template, which HTML-escapes every value, quotes and apostrophes included. The old hand-written escape skipped those two.


PR Commands — comment on this PR to trigger (requires collaborator approval):

Command Description
/benchmark -f <framework> Run every test the framework subscribes to
/benchmark -f <framework> -t <test> Run one test only
/benchmark -f <framework> --save Run and save results (updates the leaderboard on merge)
/benchmark -f <framework> -t <test> --save Run one test and save results
/benchmark -f <framework> --compare <other> Measure the deltas against another framework instead of this one
/benchmark-multiple -f <fw1>,<fw2>,... Benchmark several frameworks in one run — takes -t and --save too; saved results land in a single commit
/benchmark-multiple --save No -f needed: benchmark and save every framework the PR touches
/benchmark-test -t <test> Benchmark all enabled frameworks subscribed to <test> and save the results

For /benchmark, always specify -f <framework>; the flags combine in any order. Results come back as a comment with a per-profile table of RPS, p99, CPU and memory — one table per framework on multi runs. A new benchmark comment while a run is in flight queues behind it (one deep) instead of cancelling it. For multi-framework PRs (dependency bumps, same-language refactors) prefer /benchmark-multiple, which runs everything in a single job and commits all saved results together, so no run overwrites another. --compare works on single-framework runs only.

What the deltas are measured against. By default, this framework's own results published on main - answering "did this change help?". When you are tuning a variant or a successor entry, --compare re-bases them on another entry instead:

/benchmark -f genhttp --compare genhttp-kestrel

The reply states which baseline it used, and profiles the other framework does not run show n/a rather than a delta.


Run benchmarks locally

You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.

./scripts/validate.sh <framework>
./scripts/benchmark-lite.sh <framework> baseline
./scripts/benchmark-lite.sh --load-threads 4 <framework>

Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk) are built as self-contained Docker images on first run.

@williamthome

Copy link
Copy Markdown
Contributor Author

/benchmark -f roadrunner

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: roadrunner | Test: all tests

No results captured

Full log
[info] available CPUs: 128
[info] framework: roadrunner (roadrunner, Erlang)
[info] subscribed tests: baseline,latency-1m,latency-10k,latency-500k-8cpu,pipelined,limited-conn,json-comp,json-tls,8gbit,async,async-db,static-tls,fortunes,baseline-h2,static-h2,baseline-h2c,json-h2c,baseline-h3,static-h3,echo-ws,echo-ws-pipeline,echo-ws-limited
[info] building image: httparena-roadrunner
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 452B 0.0s done
#1 DONE 0.1s

#2 [internal] load metadata for docker.io/library/erlang:29.0-alpine
#2 ...

#3 [internal] load metadata for docker.io/library/alpine:3.23
#3 DONE 0.9s

#2 [internal] load metadata for docker.io/library/erlang:29.0-alpine
#2 DONE 1.1s

#4 [internal] load .dockerignore
#4 transferring context: 2B done
#4 DONE 0.0s

#5 [internal] load build context
#5 DONE 0.0s

#6 [build 1/7] FROM docker.io/library/erlang:29.0-alpine@sha256:f3e9516f881a2321126ca329a7d50b05693731784027978d12b8a8994f216e9f
#6 resolve docker.io/library/erlang:29.0-alpine@sha256:f3e9516f881a2321126ca329a7d50b05693731784027978d12b8a8994f216e9f 0.1s done
#6 DONE 0.1s

#7 [build 2/7] RUN apk add --no-cache ca-certificates git
#7 CACHED

#8 [build 3/7] WORKDIR /src
#8 CACHED

#9 [stage-1 1/3] FROM docker.io/library/alpine:3.23@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
#9 resolve docker.io/library/alpine:3.23@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0 0.1s done
#9 CACHED

#5 [internal] load build context
#5 transferring context: 22.08kB 0.0s done
#5 DONE 0.1s

#10 [build 4/7] COPY rebar.config rebar.lock ./
#10 DONE 1.0s

#11 [stage-1 2/3] RUN apk add --no-cache libstdc++ ncurses-libs openssl
#11 ...

#12 [build 5/7] COPY config ./config
#12 DONE 0.2s

#13 [build 6/7] COPY src ./src
#13 DONE 0.1s

#11 [stage-1 2/3] RUN apk add --no-cache libstdc++ ncurses-libs openssl
#11 1.799 ( 1/11) Upgrading libcrypto3 (3.5.8-r0 -> 3.5.9-r0)
#11 2.259 ( 2/11) Upgrading libssl3 (3.5.8-r0 -> 3.5.9-r0)
#11 2.347 ( 3/11) Installing libgcc (15.2.0-r2)
#11 2.373 ( 4/11) Installing libstdc++ (15.2.0-r2)
#11 2.585 ( 5/11) Installing ncurses-terminfo-base (6.5_p20251123-r0)
#11 2.603 ( 6/11) Installing libncursesw (6.5_p20251123-r0)
#11 2.645 ( 7/11) Installing libformw (6.5_p20251123-r0)
#11 2.662 ( 8/11) Installing libmenuw (6.5_p20251123-r0)
#11 2.675 ( 9/11) Installing libpanelw (6.5_p20251123-r0)
#11 2.684 (10/11) Installing ncurses-libs (6.5_p20251123-r0)
#11 2.684 (11/11) Installing openssl (3.5.9-r0)
#11 2.763 Executing busybox-1.37.0-r30.trigger
#11 2.776 OK: 12.2 MiB in 25 packages
#11 DONE 2.8s

#14 [build 7/7] RUN rebar3 as prod release
#14 0.863 ===> Verifying dependencies...
#14 1.763 ===> Fetching arizona (from {git,"https://github.com/arizona-framework/arizona.git",
#14 1.763                    {ref,"5a93b397008507b417aed863233612ffcce869c4"}})
#14 1.834 ===> Failed to fetch and copy dep: {git,
#14 1.834                                   "https://github.com/arizona-framework/arizona.git",
#14 1.834                                   {ref,
#14 1.834                                       "5a93b397008507b417aed863233612ffcce869c4"}}
#14 ERROR: process "/bin/sh -c rebar3 as prod release" did not complete successfully: exit code: 1
------
 > [build 7/7] RUN rebar3 as prod release:
0.863 ===> Verifying dependencies...
1.763 ===> Fetching arizona (from {git,"https://github.com/arizona-framework/arizona.git",
1.763                    {ref,"5a93b397008507b417aed863233612ffcce869c4"}})
1.834 ===> Failed to fetch and copy dep: {git,
1.834                                   "https://github.com/arizona-framework/arizona.git",
1.834                                   {ref,
1.834                                       "5a93b397008507b417aed863233612ffcce869c4"}}
------
Dockerfile:7
--------------------
   5 |     COPY config ./config
   6 |     COPY src ./src
   7 | >>> RUN rebar3 as prod release
   8 |     
   9 |     FROM alpine:3.23
--------------------
ERROR: failed to build: failed to solve: process "/bin/sh -c rebar3 as prod release" did not complete successfully: exit code: 1
[FAIL] docker build failed
[info] restoring loopback MTU to 65536

@williamthome
williamthome marked this pull request as draft October 14, 2026 10:44
@williamthome

Copy link
Copy Markdown
Contributor Author

The image build failed fetching Arizona from git. I'll pin a new Arizona release from Hex and update this PR. Moving it to draft until then.

@williamthome
williamthome marked this pull request as ready for review October 14, 2026 19:55
@williamthome

Copy link
Copy Markdown
Contributor Author

Arizona is now pinned from Hex (0.2.0), so the image builds without git.

/benchmark -f roadrunner

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@williamthome williamthome changed the title roadrunner: update to v0.10.0 and render fortunes with Arizona roadrunner: update to v0.10.1 and render fortunes with Arizona Oct 15, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant