PL·BENCH — agent language rig

● RUN COMPLETEGPT-5.6 SOL1,878 ZSTD RUNS LOGGED

Rig 01 · 25 languages · 2 benchmarks · 40 runs each

Your language is
the smallest lever
in the room.

Dan Luu pointed a coding agent at the same two problems in twenty-five languages and logged every run. The static-versus-dynamic argument that has burned a decade of threads shows up in the telemetry as this:

Static camp mean minus dynamic camp mean

cases
of 34

Three quarters of one test case, on a rig where a single language swings 14.5 cases between its own best and worst run. The camps are not different. The runs are just loud.

25 languages 938 medium · 940 ultra zstd decoder · pandoc ● effort beats language
··· STATIC 28.27 / 34 ··· DYNAMIC 27.51 / 34 ··· GAP 0.76 CASES ··· EFFORT +3.72 CASES ··· 8× CHEAP LOST 25 OF 25 ··· KEEPING CONTEXT WON 21 OF 25 ··· C++ 2ND ON ZSTD, 17TH ON PANDOC ··· RUST 13TH THEN 2ND ··· J CAME LAST ··· ··· STATIC 28.27 / 34 ··· DYNAMIC 27.51 / 34 ··· GAP 0.76 CASES ··· EFFORT +3.72 CASES ··· 8× CHEAP LOST 25 OF 25 ··· KEEPING CONTEXT WON 21 OF 25 ··· C++ 2ND ON ZSTD, 17TH ON PANDOC ··· RUST 13TH THEN 2ND ··· J CAME LAST ···

Control deck · set the rig

every figure below follows these two dials

Benchmark
Languages under test
01

↓ Run 01 · the camp that didn't matter

Hypothesis 01 · types the argument every thread starts with

Static versus dynamic is a rounding error.

Twelve statically typed languages, eleven dynamic ones, two assembly targets. Same brief every time: build a zstd decoder that passes 34 hidden test cases. Forty runs a language, cost and wall-clock logged per run.

The static camp passed cases. The dynamic camp passed . Dynamic languages also cost more per run, which is the opposite of the folklore. Neither gap survives contact with the noise.

loading data…
Fig.01 · cost × score, all 25 languagesblue and orange means land on top of each other

Static camp · 12 languages

cases of 34, at $ a run

Dynamic camp · 11 languages

cases of 34, at $ a run — dearer, not cheaper

The entire argument

cases between the camps — one twentieth of a single run's own spread

Fixed at zstd medium · these three do not follow the benchmark dial

Head to head · your picks only

ranked against the best of them

loading data…
Fig.02 · pairwise verdictsadd languages on the control deck
02

↓ Run 02 · the folklore audit

Hypothesis 02 · received wisdom six things the internet is confident about

Most of the folklore measured something else.

The token-efficiency claims that circulated all year were counted on Rosetta Code puzzles — twenty-line problems where terse syntax wins by construction. This rig asks for a working zstd decoder and a Pandoc feature, then runs the hidden tests.

Under that load the ordering inverts. Terse array languages come last. PHP, the punchline language, places third on Pandoc. Only one piece of folklore survives, and it is the boring one: don't write your agent's code in assembly.

Fig.03 · claim register

both benchmarks, full effort · fixed, not dial-driven

Claim you have probably seenVerdictWhat these runs showSource
Dynamic languages are cheaper to runNot supportedAcross all 25 languages the dynamic camp cost slightly more per run ($5.07 vs $4.63) and scored within one case of the static camp.Google AI summary
Clojure needs 2.6× fewer tokens than CMeasured something elseThat counted tokens in short Rosetta Code puzzles. Asked to build a real zstd decoder, C cost less ($3.80 vs $5.26 a run) and got more right (29.3 vs 23.0 of 34 cases).Alderson
Array languages like J are the most token-efficientMeasured something elseSame puzzle-sized measurement. On zstd, J came last of 25 for correctness and second-costliest per run.Alderson follow-up
Languages with lots of bad training code, like PHP, do worseNot supportedPHP came 3rd of 25 on Pandoc and sat mid-pack on zstd.folklore
Pick a powerful language like Haskell, since rewriting is cheap nowNot supportedHaskell came 5th of 25 on zstd but only 14th on Pandoc — no better than average overall.folklore
Stick to a popular, mainstream languageWeak supportOnly assembly clearly suffers: the two assembly targets passed 11% of Pandoc's tests, against 19–31% for the other 23 languages.folklore
Fig.03 · six claims, two benchmarksone survives, and it is the dull one
03

↓ Run 03 · two rigs, two leaderboards

Hypothesis 03 · transfer does winning here mean winning there?

Only the ends of the table hold still.

Two problems, two leaderboards. If a language were genuinely better for agents, its rank would travel. Python, JavaScript and C# do travel — they finish near the top of both. So does the floor: assembly is last on both, and nothing rescues it.

The middle does not travel at all. C++ finishes 2nd on the zstd decoder and 17th on Pandoc. Rust does the reverse, 13th then 2nd. Cost is the stable signal here: a language that runs expensive on one problem runs expensive on the other.

loading data…
Fig.04 · score against scorea cloud, not a line
loading data…
Fig.05 · cost against costthis one does line up
04
Anomaly 04 · noise floor zstd only the reading that invalidates the other readings

A language argues with itself twice as loudly as it argues with the others.

Every rank on this page rests on an average. Open the averages up and the same language, given the identical brief forty times, lands anywhere across a band of cases. Python's own runs cost between $1.36 and $8.71.

All twenty-five language averages fit inside cases. The spread within one language is about twice the spread across all of them — so a single run tells you nothing, and neighbouring ranks are indistinguishable.

Within one language

cases between its own worst and best run

Across all 25 languages

cases between the best and worst language average

Runs behind this figure

zstd runs, at the effort the control deck selects

loading data…
Fig.06 · worst run to best runthe bars overlap almost completely
loading data…
Fig.07 · failures by test casefive cases carry nearly all of it

Pandoc publishes no per-run figures, so this chapter always reads zstd — ultra when the control deck is set to Zstd (Ultra), medium otherwise. Blank cells mean the case never failed. Clojure is the one language with a failure signature of its own — it misses a set nothing else misses. Swift and both assembly targets ran twenty times, not forty.

05

↓ Run 05 · the lever that actually moves

Payoff 05 · effort the dial that was never in the argument

Stop shopping for languages. Buy effort.

The rig ran one more experiment. Instead of a single expensive run, let the cheap model loop eight times over the same problem — keeping its context between rounds, or wiping it each time. This is the strategy that is supposed to make the expensive model unnecessary.

It is not. One high-effort run beat the eight-round loop in of languages, and did it while spending $ less per language. If you do loop, keep the context: wiping it lost times out of .

Fig.08 · spend against result

averaged over all 25 languages · zstd

loading data…
Up and to the left is the good cornerone ultra run wins on both axes

Effort buys

+

cases of 34, one medium run to one ultra run

Language buys

cases, static camp over dynamic — five times smaller

The loop's record

/

languages where one ultra run beat eight cheap ones

Pick the language your team already knows. Spend the argument on the model.

One honest caveat from the source's own analysis: three cheap runs, with tests to pick the winner, reach about 30.5 of 34 cases for roughly 70 percent of a single expensive run's cost. That is the best value on the board — if you have the tests. The expensive run still scores higher in 18 of the 25 languages.

··· RAW TELEMETRY BELOW ··· 25 LANGUAGES ··· 2 BENCHMARKS ··· 4 SPEND STRATEGIES ··· SORT ANY COLUMN ··· NOTHING HIDDEN ··· ··· RAW TELEMETRY BELOW ··· 25 LANGUAGES ··· 2 BENCHMARKS ··· 4 SPEND STRATEGIES ··· SORT ANY COLUMN ··· NOTHING HIDDEN ···
Appendix A · raw telemetry unfiltered — the control deck does not touch this

Every language on both benchmarks. The last five columns come from the loop experiment: the cheap model run eight times on the same problem, keeping or wiping its context. The final column divides the ultra run's cases-per-dollar by the loop's — above 1.00 means the expensive run was the better buy.

Fig.09 · full run table

click a header to sort · scroll sideways for more

loading data…