Skip to content

build(deps): hearth 0.4.2 / kindlings 0.3.2 — break the 23-element tuple ceiling on .fields - #102

Merged
kryptt merged 5 commits into
mainfrom
chore/bump-hearth-kindlings-tuple23
Sep 18, 2026
Merged

kryptt merged 5 commits into
mainfrom
chore/bump-hearth-kindlings-tuple23

Conversation

@kryptt

@kryptt kryptt commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

Breaks the 23-element tuple ceiling on .fields(_.x, _.y, …) by moving the
derivation backend: hearth 0.4.0 → 0.4.2, kindlings-{avro,cats,circe}-derivation
0.3.0 → 0.3.2
.

No longer stacked. #97 and #105 have both landed on main (as squash merges
75c7eaa and its predecessor), so this branch has been rebased with
git rebase --onto origin/main <old base> and now carries only its own 5 commits /
13 changed files
— down from the 13 commits / 30 files it showed while the two
ancestors were still open. The RED witness for the ceiling (WideFieldsArityCeilingSpec,
introduced against #97's spelling fix) is the first of those 5; the rest turn it green.
Re-gated on top of main after the rebase, including #107's cached-name-index rewrite in
AvroWalk — the arity result is unchanged by it.

What moved, and why

.fields synthesises a NamedTuple whose value tuple has no TupleN spelling
past arity 22
— at 23 components it is a *: cons chain. hearth 0.4.0 built
every NamedTuple by calling the underlying tuple type's primary constructor, and
*: declares no value parameters, so every 23+-selector .fields failed to
compile:

wrong number of arguments at inlining (while expanding macro) for ():
  (String, …, String): (): (String, …, String), expected: 0, found: 23

hearth 0.4.1 added an arity dispatch to SyntheticNamedTupleConstructor.unsafeApply
(upstream issues #313 / #314):

orderedArgs.length match
  case 0            => EmptyTuple
  case n if n < 23  => new TupleN(arg1, …, argN)          // unchanged from 0.4.0
  case _            => Tuple.fromArray(Array[Object](…))  // the fix

0.4.2 is byte-identical to 0.4.1 for that file (it carries a macro-loader metaspace
leak fix and Expr.semiEval on ValueOf). kindlings 0.3.2 contributes nothing to
the arity fix itself
— its NamedTuple decoder rule changed only in formatting — it
is simply the release that pins hearth 0.4.2.

Ceiling: before / after

Measured, not assumed. Spelling = how the macro writes the NamedTuple's value tuple.

arity spelling before (hearth 0.4.0 / kindlings 0.3.0) after (0.4.2 / 0.3.2)
2–22 TupleN ✅ compiles + round-trips ✅ compiles + round-trips
2–22 cons *: ❌ expected: 0, found: N ❌ expected: 0, found: N — unchanged
23 cons *: (forced — no TupleN exists) ❌ expected: 0, found: 23 ✅ compiles + round-trips, focus is scala.runtime.TupleXXL
40 (mixed types) cons *: ❌ expected: 0, found: 40 ✅ compiles + round-trips, every primitive kind read back correctly
24 … 512 cons *: ❌ ✅ (recon sweep; no new arity ceiling found)

The spelling ceiling is gone. Two real ceilings remain, and the second bites first —
both are now stated in avro.md, the spec scaladoc, AvroPrism.fields's scaladoc and the
CHANGELOG, where the page previously claimed "no arity ceiling":

  • 254 selectors, hard and permanent. .fields selects from a case class and the JVM
    caps a parameter list at 254 slots. Measured: a 254-field case class compiles, a
    255-field one fails with Platform restriction: a parameter list's length cannot exceed 254 — raised on the case class itself, before .fields is reached.

  • The compile thread's stack, which binds far lower. The derivation recurses per field.
    Measured on a full-cover .fields probe, varying only -Xss:

    -Xss where it comes from derived overflowed
    1m JVM default 32 36
    2m — 66 100
    4m sbt's launcher default 150 254
    8m this repo's .jvmopts 254 — (hard limit reached)

    This repo's -Xss8m is the only reason its own suites reach 254. A downstream consumer
    inherits none of it
    — the published artifact cannot carry an -Xss — so on a default
    1 MB compile thread a wide .fields starts overflowing between 32 and 36 selectors,
    barely past the old ceiling. The docs now say to raise -Xss in the consumer's build.

Compile time is the third cost, and the avroDerivation.timeout lever for it only started
working in this PR (see above).

The TupleN branch stays — permanently

hearth's fix is scoped to arity ≥ 23 only. Measured on this exact classpath:

arity 5, AvroDecoder.derived errors on 0.4.2
cons-spelled NamedTuple 17 — too many arguments for constructor *: in class *:
TupleN-spelled NamedTuple 0

So #97's "TupleN ≤ 22, cons fold above" split in MacroSelectors.tupleTypeOf is a
permanent requirement of the hearth contract, not a workaround this bump retires.
Collapsing it to a uniform cons fold would re-break every .fields call of arity 2–22.

Answering the follow-up question directly: do not simplify the branch. A follow-up
worth filing is upstream, not here — ask hearth to extend the Tuple.fromArray path
below 23 (or to dealias before choosing), which would make the branch genuinely
redundant. Until then the split is load-bearing, and the new negative row in
NamedTupleSpellingSpec makes a future simplification pass fail loudly.

Transitive dependency diff

Captured with show <module>/{Compile,Test}/dependencyClasspath across
avroIntegration, generics, circeIntegration, tests, diffed against the
pre-bump baseline. Identical in every configuration that carries them:

- com/fasterxml/jackson/core/jackson-annotations/2.21/jackson-annotations-2.21.jar
- com/fasterxml/jackson/core/jackson-core/2.21.5/jackson-core-2.21.5.jar
- com/fasterxml/jackson/core/jackson-databind/2.21.5/jackson-databind-2.21.5.jar
+ com/fasterxml/jackson/core/jackson-annotations/2.22/jackson-annotations-2.22.jar
+ com/fasterxml/jackson/core/jackson-core/2.22.1/jackson-core-2.22.1.jar
+ com/fasterxml/jackson/core/jackson-databind/2.22.1/jackson-databind-2.22.1.jar

- com/kubuszok/hearth{,-better-printers,-micro-fp}_3/0.4.0
+ com/kubuszok/hearth{,-better-printers,-micro-fp}_3/0.4.2

- com/kubuszok/kindlings-{avro,cats,circe}-derivation_3/0.3.0
- com/kubuszok/kindlings-derivation-commons_3/0.3.0
- com/kubuszok/kindlings-json-schema-config-macro-providers_3/0.3.0
+ com/kubuszok/kindlings-{avro,cats,circe}-derivation_3/0.3.2
+ com/kubuszok/kindlings-derivation-commons_3/0.3.2
+ com/kubuszok/kindlings-json-schema-config-macro-providers_3/0.3.2

- org/apache/avro/avro/1.12.1/avro-1.12.1.jar
+ org/apache/avro/avro/1.12.2/avro-1.12.2.jar

- org/slf4j/slf4j-api/2.0.17/slf4j-api-2.0.17.jar
+ org/slf4j/slf4j-api/2.0.18/slf4j-api-2.0.18.jar

commons-compress is unchanged at 1.28.0, and so is commons-lang3 at 3.18.0 —
an earlier revision of this PR showed it moving to 3.20.0, but that was the (now removed)
dependencyOverrides talking, not the bump. Nothing else in any configuration moved.

Dependency decisions (each one deliberate, not a default)

  • apache-avro 1.12.1 → 1.12.2. kindlings-avro-derivation 0.3.2 depends on 1.12.2.
    Holding the explicit pin at 1.12.1 would have turned a visibility pin into a silent
    downgrade of the transitive, contradicting the comment's own stated purpose.
  • The jackson / commons-lang3 dependencyOverrides are REMOVED, not re-pointed.
    See "Supply chain" below — they never reached a consumer, the jackson half is now a
    measured no-op, and keeping two thirds of a BOM-managed trio pinned was a live trap.
  • .scala-steward.conf's jackson series pin is removed, replaced by an
    updates.ignore naming the single bad version (2.22.0). A version = "2.22." pin is a
    series lock: it would block 2.23.x forever, and it matches 2.22.0 anyway so it does not
    even express "never 2.22.0". The old "2.21." pin is the proof of that failure mode —
    2.22.1 shipped OSV-clean and required by avro 1.12.2 while this build sat on 2.21.5 until
    a human edited the pin by hand.

Supply chain: the overrides were protecting nobody

This is the finding with real downstream impact, and it is fixed by the avro bump rather
than by anything eo was doing deliberately
.

sbt's dependencyOverrides is BUILD-LOCAL. It emits no <dependencyManagement>, and eo's
published POMs carry none — verified on all four:

cats-eo_3-...pom:          dm=0 jackson=0 lang3=0
cats-eo-avro_3-...pom:     dm=0 jackson=0 lang3=0
cats-eo-circe_3-...pom:    dm=0 jackson=0 lang3=0
cats-eo-generics_3-...pom: dm=0 jackson=0 lang3=0

So a consumer of cats-eo-avro resolved jackson through avro's own parent BOM, never
through eo's override. Before this PR that meant jackson-databind 2.20.0; OSV reports
5 advisories against it, 2 HIGH:

CVE-2026-54512 [HIGH]     PolymorphicTypeValidator bypass via generic type parameters
CVE-2026-54513 [HIGH]     array subtype allowlist bypass in BasicPolymorphicTypeValidator
CVE-2026-54514 [MODERATE] InetSocketAddress deserialization triggers eager DNS resolution (SSRF)
CVE-2026-54515 [MODERATE] case-insensitive deserialization bypasses per-property @JsonIgnoreProperties
CVE-2026-59888 [MODERATE] @JsonIgnore on a Record property bypassed with a PropertyNamingStrategy

avro 1.12.2's parent POM raises jackson-bom 2.20.0 → 2.22.1, so consumers now land on
2.22.1, which OSV reports clean. Meanwhile ci.yml's dependency-submission job submits
the build's resolved graph — with overrides applied — so Dependabot only ever saw the
safe version and the downstream exposure never raised an alert here.

Why the overrides are removed rather than completed:

  1. The jackson half is now a pure no-op: avroIntegration/Compile/dependencyClasspath is
    jar-for-jar identical with and without it (measured both ways on this branch).
  2. It was a live trap. jackson-bom 2.22.1 pairs core/databind 2.22.1 with annotations 2.22
    (annotations dropped its patch component at 2.20), and jackson-annotations was never
    in the override list. The next jackson-bom lift inside avro-parent would have moved
    annotations alone while core/databind stayed frozen — splitting the BOM across two
    minors, the precise hazard the override existed to prevent.
  3. The commons-lang3 half was masking, not fixing. Dropping it moves this build 3.20.0 →
    3.18.0, which is exactly what a consumer resolves: commons-lang3 arrives via
    avro → commons-compress 1.28.0, whose POM declares 3.18.0 outright, and avro-parent's
    commons-lang3.version 3.20.0 property manages only avro's OWN direct dependencies.
    3.18.0 is the first release patched against CVE-2025-48924 and is OSV-clean.

Net effect: the build now resolves avro's transitives exactly as consumers do, so
dependency-submission reports the real consumer graph instead of a locally-sweetened one,
and a future advisory against avro's transitives surfaces here as a genuine alert.

The macro-expansion timeout was inert — now it isn't

-Xmacro-settings:{circe,cats,avro}Derivation.timeout=30 did nothing. kindlings'
DerivationTimeout parses the value with

^\s*(\d+)\s*(ms|millis|milliseconds|s|seconds?|m|minutes?)\s*$

and the call site is flatMap(parse).getOrElse(Default) with Default = 5 SECONDS
(read out of the 0.3.2 class file). A bare integer has no unit, never matches, and is
discarded silently — no warning, no error. Every derivation in this build had been running
on 5s, not 30s, since the 0.3.0 pin.

Canary, same file and JVM, only the flag changing:

-Xmacro-settings:avroDerivation.timeout=1ms   EXIT=1  Macro … timed out after 1ms
-Xmacro-settings:avroDerivation.timeout=1     EXIT=0  (compiles — so a bare integer is
                                                       neither seconds nor millis: discarded)
-Xmacro-settings:avroDerivation.timeout=30s   EXIT=0

Every spelling now carries the unit: =30s build-wide, =120s for mdoc fences. This is
what finally mitigates the recurring "derivation timed out" CI flake the setting was added
for. The build comment records the regex and the canary procedure for the next bump.

Derived-schema behaviour: nothing changed

kindlings 0.3.1 shipped two real Avro changes (a rewritten sealed-trait decoder
name-match that drops the transformConstructorNames call, and
deriveSelfContainedSchema marking the root type as self-derived). No derived Avro
schema text moved
: record names, field names, namespaces and field order are
byte-identical across the bump. The full 216-example avro suite — including
AvroUnionSpec, AvroFieldNamingSpec, AvroNominalResolutionSpec,
AvroWriteCorrectnessSpec, ConfluentGraftSpec, ResolutionResidualSpec,
ResolutionFalsePositiveSpec, AvroVulcanSpec and AvroPrismLawsSpec — passes
unmodified; no expected string was touched anywhere. eo's only non-identity config
is a withSnakeCaseFieldNames (a field-name transform), which the rewritten path
does not touch. Same for kindlings 0.3.2's new circe built-in-type rules: the circe
and tests suites pass unmodified.

kindlings 0.3.1's new derivation-policy gate shares eo's -Xmacro-settings namespace
but defaults to always-allowed (= 0.3.0 behaviour) and eo sets no policy key, so no
policy key is added here. DerivationTimeout is byte-identical in 0.3.2 — which is also
why the timeout spelling bug above is a pre-existing defect this PR fixes rather than
one the bump introduced.

Gates

Run on JDK 25.0.4.1, sbt 1.12.13, Scala 3.8.4 — so the kyo module was in the
root aggregate and was exercised (KyoOpticsSpec ran; the kyo module compiled).

gate result
scalafmtCheckAll ✅ (verified cold — scalafmt stream caches cleared first)
scalafixAll --check ✅
scalafmtSbtCheck ✅
benchmarks/scalafmtCheck ✅
compile (root aggregate) ✅
test (root aggregate) ✅ 1189 total, 1187 passed, 0 failed, 0 errors, 2 skipped across core / laws / tests / generics / schemes / schemesLaws / circe / avro / jsoniter / zio / kyo (the 2 skips are NominalResolutionCostSpec's wall-clock rows, disarmed unless -Deo.costGate=true)
avroIntegration/test ✅ 232 total, 230 passed, 2 skipped (re-run post-rebase, so the count includes the specs main gained from #103/#107/#111)
benchmarks/compile (outside the aggregate) ✅
mimaReportBinaryIssues ✅ — but see below
docs/mdoc + docs/laikaSite ✅

MiMa is not a real gate here: mima.sbt sets
ThisBuild / tlMimaPreviousVersions := Set.empty build-wide for the 0.x line, so the
task passes vacuously. Worth stating because hearth and kindlings-avro are compile
scope in cats-eo-generics / cats-eo-avro and therefore appear in those published
POMs — downstream consumers inherit the new versions. Both upstream releases declare
MiMa green against their predecessors, and the one signature change near eo's surface
(ClassViewResult.Incompatible stopped being a case class) is source- and
binary-compatible by design and is a type eo never pattern-matches.

Test changes

  • WideFieldsArityCeilingSpec (the RED witness, first commit of this PR) now passes: arity 22
    over a 25-field record, arity 23 over the same, arity 40 over a 42-field record with
    String/Int/Long/Double/Boolean interleaved. Each row checks written slots
    by schema name, un-selected siblings still carrying their original values and
    reference-identical, the focus's runtime class, and a named-accessor read-back. The
    mixed-type row matters specifically because the Tuple.fromArray branch boxes every
    element to Object, so a homogeneous probe would miss a mis-unboxing.
  • NamedTupleSpellingSpec's inverted ceiling row is flipped to a positive round-trip
    (still given-free, asserting scala.runtime.TupleXXL), exactly as its own comment
    instructed. A new negative row replaces it: a cons-spelled NamedTuple below 23 is
    still unconstructible — the executable proof that the TupleN branch is permanent.

Nothing left broken

No skipped gate, no expected value adjusted to make something pass, no @Ignore.

🤖 Generated with Claude Code

https://claude.ai/code/session_0194EHFR4NamCpTHiqy7B74V

kryptt and others added 5 commits September 18, 2026 18:13
…ling (#96)

`WideFieldsArityCeilingSpec` drives `codecPrism[A].fields(...)` with 22, 23 and
40 selectors and NO hand-written `AvroCodec[NamedTuple[...]]` given in scope, so
every row goes through kindlings' NamedTuple derivation and hearth's
`SyntheticNamedTupleConstructor`.

On the current pins (hearth 0.4.0 via kindlings-avro-derivation 0.3.0) the 22
row compiles and passes; the 23 and 40 rows fail to compile with
`wrong number of arguments at inlining ... expected: 0, found: 23` / `found: 40`
-- hearth's `n < 23` branch calling the `*:` cons chain's zero-value-param
primary constructor. That is the failure the hearth 0.4.2 / kindlings 0.3.2 bump
is meant to remove.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0194EHFR4NamCpTHiqy7B74V
…ple ceiling

`.fields(_.x, _.y, ...)` synthesises a `NamedTuple` whose value tuple has no
`TupleN` spelling past arity 22 — it IS a `*:` cons chain. hearth 0.4.0's
`SyntheticNamedTupleConstructor.unsafeApply` built every NamedTuple by calling
the underlying tuple type's primary constructor, and `*:` declares no value
parameters, so every 23+-selector `.fields` died with `wrong number of arguments
at inlining … expected: 0, found: N`.

hearth 0.4.1 added an arity dispatch (issues #313/#314): `case 0 => EmptyTuple`,
`case n if n < 23 => new TupleN(...)`, `case _ => Tuple.fromArray(Array[Object](...))`.
0.4.2 is byte-identical to 0.4.1 for that file (0.4.2 carries a macro-loader
metaspace-leak fix and `Expr.semiEval` on `ValueOf`). kindlings 0.3.2 contributes
nothing to the arity fix itself — its NamedTuple decoder rule changed only in
formatting — it is the release that pins hearth 0.4.2.

The `n < 23` boundary lines up exactly with `MacroSelectors.tupleTypeOf`, which
spells `TupleN` up to 22 and folds a cons chain above. Both branches stay
load-bearing: a cons chain at arity 5 still fails on 0.4.2 (measured: 17 errors,
`too many arguments for constructor *:`) while the TupleN spelling at arity 5
compiles clean.

Transitive pin decisions, each justified rather than defaulted:

- apache-avro 1.12.1 -> 1.12.2. kindlings-avro-derivation 0.3.2 depends on
  1.12.2, so leaving the explicit pin at 1.12.1 would have turned a visibility
  pin into a silent DOWNGRADE of the transitive. The pin moves with it.
- jackson-core/-databind 2.21.5 -> 2.22.1. avro 1.12.2's parent POM raises
  jackson-bom 2.20.0 -> 2.22.1. 2.22.1 is exactly the release that re-fixed
  CVE-2026-54515 (which 2.22.0 regressed and the old comment was waiting for);
  it is now on Central. Holding 2.21.5 would have downgraded core/databind while
  jackson-annotations — not in the override list — moved to 2.22, splitting the
  BOM. The pin lifts to the version avro resolves, so the override is again a
  regression floor, not a shift, and never 2.22.0.
- commons-lang3 3.18.0 -> 3.20.0, same reasoning: the floor tracks what avro
  1.12.2 resolves instead of downgrading it. Still above the CVE-2025-48924
  range. commons-compress is unchanged at 1.28.0.

`.scala-steward.conf`'s jackson series pin moves 2.21.x -> 2.22.x to match, and
every stale comment in the pin block is rewritten (it claimed hearth 0.4.0).
The `-Xmacro-settings:{circe,cats,avro}Derivation.timeout=30` line needs no
change: `DerivationTimeout` is byte-identical in 0.3.2 and the namespaces are
unchanged. kindlings 0.3.1's new derivation-policy gate shares that namespace
but defaults to `always-allowed`, i.e. current behaviour, and eo sets no policy
key.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0194EHFR4NamCpTHiqy7B74V
…nch is permanent

`NamedTupleSpellingSpec`'s last row asserted the FAILURE — `typeCheckErrors` over
a 23-selector `.fields` had to contain `too many arguments for constructor *:`.
Its own comment said the bump would break it and that the break was the signal,
not a regression. It is now the positive assertion it asked for: the same
given-free `Wide23` fixture, `.fields` over all 23 selectors, decoded and read
back, with the focus's runtime class asserted to be `scala.runtime.TupleXXL` —
the `Tuple.fromArray` branch actually executing, not merely compiling.

A new row replaces it as the negative: a cons-spelled NamedTuple at arity 2 is
STILL unconstructible on hearth 0.4.2, because the fix is scoped to arity >= 23
and the `n < 23` arm is unchanged. That makes `MacroSelectors.tupleTypeOf`'s
split spelling a permanent requirement of the hearth contract rather than a
workaround the bump retires, and a future "simplify the branch away" pass fails
loudly instead of silently re-breaking arity 2..22.

`FieldsMacroErrorSpec`'s expected macro hint moves with the version string in
`JsonPrismMacro` (next commit).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0194EHFR4NamCpTHiqy7B74V
…tated it

PR #96's reply and #97's body documented a "2 to 22 selectors" ceiling to users.
Every statement of it is now wrong, so each one moves:

- `AvroPrism.fields` scaladoc: no arity ceiling; what a wide selection costs is
  compile time (superlinear derivation), which is an `-Xss` /
  `-Xmacro-settings:avroDerivation.timeout` question, not a correctness one.
- `MacroSelectors.tupleTypeOf` scaladoc: says explicitly that BOTH branches are
  load-bearing permanently, since hearth's sub-23 arm still cannot build a cons
  chain — the one thing a future simplification pass would get wrong.
- `site/docs/integrations/avro.md`: the "**2 to 22**" paragraph, plus the stale
  "kindlings-avro-derivation 0.1.2 / apache-avro 1.12.1" backend note.
- `AvroCodec` scaladoc, `site/docs/integrations/circe.md`, `JsonPrismMacro`'s
  missing-codec hint and `CLAUDE.md`: stale library versions (the hint's
  expected text is pinned by `FieldsMacroErrorSpec`, updated with it).
- CHANGELOG: an Added entry for the broken ceiling and a Changed entry for the
  bump, including the full transitive shift and the explicit note that NO
  derived Avro schema text moved.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0194EHFR4NamCpTHiqy7B74V
…rrides protect consumers, state the true `.fields` ceiling

Four audit findings on the hearth/kindlings bump, each verified before fixing.

**The macro-expansion timeout was inert.** The build spelled it
`-Xmacro-settings:{circe,cats,avro}Derivation.timeout=30`, but kindlings'
`DerivationTimeout` parses with
`^\s*(\d+)\s*(ms|millis|milliseconds|s|seconds?|m|minutes?)\s*$` and the call
site is `flatMap(parse).getOrElse(Default)` — a bare integer never matches and
falls through silently, so every derivation had been running on the 5s default,
not 30s. Confirmed in the 0.3.2 bytecode (`Default = 5 SECONDS`) and by canary:
`=1ms` fails with "timed out after 1ms", `=1` compiles clean (so a bare integer
is neither seconds nor millis — it is discarded), `=30s` compiles. All spellings
gain the unit: `=30s` build-wide, `=120s` for mdoc fences. The recurring
"derivation timed out" CI flake this setting was added for was never actually
mitigated until now.

**The jackson/commons-lang3 `dependencyOverrides` never reached a consumer.**
sbt's overrides are build-local and emit no `<dependencyManagement>`; verified
that all four generated POMs (cats-eo, -avro, -circe, -generics) carry zero
`<dependencyManagement>`, zero jackson, zero commons-lang3 entries. Downstream
always resolved jackson through avro's own parent BOM, i.e. jackson-databind
2.20.0 before this bump — 5 OSV advisories, 2 HIGH (checked against OSV) — while
eo's CI compiled against the overridden version and `dependency-submission`
reported that safe one. The override made the exposure invisible, not absent.

So the overrides are removed rather than re-pointed. The jackson half is now a
measured no-op (the avro compile classpath is jar-for-jar identical with and
without it) and was a live hazard besides: only two thirds of the BOM-managed
trio was ever overridden — `jackson-annotations` never was — so the next
jackson-bom lift inside avro-parent would have moved annotations alone while
core/databind stayed frozen, splitting the BOM. Dropping the commons-lang3 half
moves this build 3.20.0 -> 3.18.0, which is exactly what a consumer resolves
(commons-lang3 arrives via commons-compress 1.28.0, whose POM declares 3.18.0;
avro-parent's 3.20.0 property manages only avro's own direct deps). 3.18.0 is
past CVE-2025-48924 and OSV-clean. The build now resolves avro's transitives as
consumers do, so `dependency-submission` reports the real consumer graph.

**The scala-steward pin re-armed the trap it had just sprung.** `version =
"2.22."` is a series lock, not a floor: it blocks 2.23.x forever and matches
2.22.0 anyway, so it does not even express "never 2.22.0". The previous `"2.21."`
pin is the proof — 2.22.1 shipped OSV-clean and required by avro 1.12.2 while the
build sat on 2.21.5 until a human edited it. Steward cannot propose a version
below the current one, so the pin only strands. Replaced with an
`updates.ignore` naming the single bad version.

**`.fields` does have a ceiling; the docs said it did not.** Two of them, and the
second bites first. 254 selectors is hard and permanent — `.fields` selects from
a case class and the JVM caps a parameter list at 254 slots (measured: 254
compiles, 255 fails with "Platform restriction: a parameter list's length cannot
exceed 254", on the case class itself). Well below that the binding limit is the
compile thread's stack, since the derivation recurses per field. Measured on a
full-cover probe varying only -Xss: 1m (the JVM default) derives 32 and overflows
at 36; 2m derives 66, overflows at 100; 4m (sbt's launcher default) derives 150,
overflows at 254; 8m — this repo's .jvmopts, and the only reason its suites reach
254 — derives 254. A downstream build inherits none of that, because the
published artifact cannot carry an -Xss. avro.md, the spec scaladoc, the
`AvroPrism.fields` scaladoc and the CHANGELOG now say so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0194EHFR4NamCpTHiqy7B74V
@kryptt
kryptt force-pushed the chore/bump-hearth-kindlings-tuple23 branch from d6e4eac to 97ecf3f Compare September 18, 2026 16:19
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Cloudflare Pages preview for chore/bump-hearth-kindlings-tuple23 is live:

https://7b83ce65.cats-eo-docs.pages.dev

Branch alias: https://chore-bump-hearth-kindlings.cats-eo-docs.pages.dev

Built from commit 97ecf3f12bce3e3de6ae3c4c51b52dc6ece39b58 · updated on every push.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark A/B

Allocation (B/op) — authoritative

Benchmark params base head Δ
OrderJsoniterBench.eoReadStreet size=8 72.0 128.0 +77.8%
PlatedBench.visitorUniverseJson n=4096 533,769.4 327,811.0 -38.6%
AvroBytesBench.naivePassthroughPayload - 10,600.1 14,088.1 +32.9%
AvroBytesBench.naiveReadPartner - 4,264.0 5,424.0 +27.2%
AvroJsonBridgeBench.naiveClickToJson - 4,696.0 5,856.0 +24.7%
JsoniterBench.jReadStreet size=8 128.0 152.0 +18.7%
JsoniterBench.jReadStreet size=64 152.0 128.0 -15.8%
AvroBytesBench.naiveModifyPartner - 7,536.0 8,696.1 +15.4%
GetterBench.mGet_6 - 0.0 0.0 -12.6%
GetterBench.mGet_3 - 0.0 0.0 -10.0%
JsoniterBench.jMiss size=64 0.0 0.0 -6.6%
JsoniterBench.jMiss size=8 0.0 0.0 +6.0%
SchemesBench.handHylo - 0.1 0.1 +5.3%
ZioDiBench.eoDrillGet - 0.0 0.0 +5.0%
AvroVulcanBench.encode_bridged - 1,272.0 1,240.0 -2.5%
JsoniterBench.jReplaceId size=8 960.0 936.0 -2.5%
CapsBench.getDerivedHeld - 0.0 0.0 -2.5%
AvroJsonBridgeBench.eoWideToAvro - 6,584.0 6,744.0 +2.4%
OrderCirceBench.eoNames size=512 601,725.5 614,040.7 +2.0%
OrderCirceBench.hcursorNames size=512 613,999.3 601,692.5 -2.0%
433 more benchmarks
Benchmark params base head Δ
OrderCirceBench.hcursorNames size=64 77,811.2 76,259.0 -2.0%
OrderCirceBench.eoNamesIor size=64 87,529.8 85,946.0 -1.8%
PowerSeriesNestedBench.eoModify_nested size=16 4,792.1 4,720.1 -1.5%
OptionalBench.mModify_0_empty - 0.0 0.0 -1.4%
OptionalBench.mModify_loyalty_empty - 0.0 0.0 +1.3%
AvroVulcanBench.encode_vulcanRaw - 1,224.0 1,208.0 -1.3%
AffineFoldBench.eoGetOption_loyalty_empty - 0.0 0.0 -1.1%
OptionalBench.eoModify_loyalty_empty - 0.0 0.0 +1.1%
GenericsBench.rawLensGet - 0.0 0.0 +1.0%
GetterBench.eoGet_orderId - 0.0 0.0 +1.0%
PlatedBench.mUniverseJson n=4096 6,489,856.6 6,424,277.5 -1.0%
PrismBench.mGetOptionPresent - 0.0 0.0 +1.0%
CapsBench.getCap - 0.0 0.0 +0.9%
AffineFoldBench.eoGetOption_0_empty - 0.0 0.0 +0.9%
MultiFocusCollectBench.eoCollectMap_constSum - 0.0 0.0 +0.9%
GetterBench.eoGet_0 - 0.0 0.0 -0.8%
CapsBench.getDeepDirect - 0.0 0.0 -0.8%
LensBench.mGet - 0.0 0.0 -0.8%
AffineFoldBench.mGetOption_0 - 0.0 0.0 -0.8%
GenericsBench.genPrismGetMiss - 0.0 0.0 +0.7%
AffineFoldBench.mGetOption_6 - 0.0 0.0 +0.6%
JsoniterBench.jMiss size=512 0.0 0.0 +0.5%
FoldBench.mFoldMap size=8 0.0 0.0 +0.5%
OptionalBench.eoModify_0_empty - 0.0 0.0 -0.5%
PrismBench.mGetRightAbsent - 0.0 0.0 +0.5%
GetterBench.eoGet_6 - 0.0 0.0 -0.5%
GenericsBench.genPrismModifyMiss - 0.0 0.0 +0.5%
SchemesBench.handCata - 0.1 0.1 +0.5%
JsoniterBench.jReplaceId size=64 5,320.0 5,296.0 -0.5%
JsoniterBench.jModifyId size=64 5,328.0 5,352.0 +0.5%
PrismBench.eoGetOptionAbsent - 0.0 0.0 +0.4%
AffineFoldBench.eoGetOption_0_asAffineFold - 0.0 0.0 +0.4%
JsoniterBench.cSumPrices size=8 22,792.1 22,704.4 -0.4%
GenericsBench.handPrismGetMiss - 0.0 0.0 -0.4%
AffineFoldBench.eoGetOption_loyalty - 0.0 0.0 +0.4%
PrismBench.mGetOptionAbsent - 0.0 0.0 +0.4%
PowerSeriesPrismBench.monocle_sparse size=32 7,016.0 7,040.0 +0.3%
PowerSeriesNestedBench.eoModify_nested size=256 53,955.2 53,771.7 -0.3%
CapsBench.getDeepCap - 0.0 0.0 +0.3%
GenericsBench.genLensGet - 0.0 0.0 -0.3%
CapsBench.getDerivedPerCall - 0.0 0.0 -0.3%
AffineFoldBench.eoGetOption_0 - 0.0 0.0 +0.3%
GenericsBench.handPrismModifyMiss - 0.0 0.0 +0.3%
PrismBench.eoGetRightAbsent - 0.0 0.0 +0.2%
GetterBench.mGet_orderId - 0.0 0.0 -0.2%
GenericsBench.handLensGet - 0.0 0.0 -0.2%
AffineFoldBench.mGetOption_3 - 0.0 0.0 -0.2%
ZioDiBench.eoServiceGet - 0.0 0.0 +0.2%
FoldBench.eoFoldMap size=8 0.0 0.0 +0.2%
CapsBench.foldMapCap - 0.0 0.0 -0.2%
AvroJsonBridgeBench.eoClickToAvro - 9,384.0 9,400.0 +0.2%
GetterBench.mGet_0 - 0.0 0.0 +0.2%
AffineFoldBench.mGetOption_0_empty - 0.0 0.0 +0.1%
AffineFoldBench.mGetOption_loyalty_empty - 0.0 0.0 +0.1%
CapsBench.foldMapDirect - 0.0 0.0 +0.1%
JsoniterBench.cReplaceId size=8 20,668.0 20,644.1 -0.1%
JsoniterBench.cModifyId size=8 20,692.1 20,716.0 +0.1%
MultiFocusBench.naive_sumQty size=4 0.0 0.0 -0.1%
LensBench.eoGet - 0.0 0.0 -0.1%
CapsBench.getDirect - 0.0 0.0 +0.1%
GetterBench.eoGet_3 - 0.0 0.0 +0.1%
OrderCirceBench.monocleStreet size=8 17,064.1 17,048.1 -0.1%
KyoDiBench.handMapGet - 0.0 0.0 -0.1%
OrderCirceBench.monocleNames size=8 19,472.1 19,456.1 -0.1%
KyoDiBench.eoMapGet - 0.0 0.0 -0.1%
JsoniterBench.jModifyId size=512 41,945.0 41,921.0 -0.1%
OrderJsoniterBench.nativeSumPrices size=512 86,365.7 86,326.4 -0.0%
OrderJsoniterBench.monocleSumPrices size=64 47,369.8 47,391.2 +0.0%
PowerSeriesNestedBench.eoModify_nested size=1024 210,727.7 210,633.0 -0.0%
AffineFoldBench.mGetOption_loyalty - 0.0 0.0 -0.0%
CapsBench.foldMapDerivedPerCall - 0.0 0.0 -0.0%
OrderCirceBench.eoStreetIor size=8 2,736.0 2,737.0 +0.0%
OrderJsoniterBench.nativeReadStreet size=512 455.4 455.6 +0.0%
OrderCirceBench.eoStreet size=512 2,720.8 2,721.7 +0.0%
OrderCirceBench.monocleStreet size=64 113,831.0 113,798.9 -0.0%
PowerSeriesNestedBench.monocle_nested size=64 58,913.0 58,896.9 -0.0%
OrderCirceBench.naiveStreet size=64 113,806.7 113,779.8 -0.0%
CapsBench.foldMapDerivedHeld - 0.0 0.0 +0.0%
JsoniterBench.cSumPrices size=64 156,253.3 156,276.6 +0.0%
OrderJsoniterBench.nativeSumPrices size=64 10,929.4 10,927.9 -0.0%
OrderJsoniterBench.eoReadStreet size=512 128.2 128.2 +0.0%
OrderCirceBench.eoStreet size=64 2,721.2 2,721.0 -0.0%
OrderAvroBench.monocleModifyStreet size=512 169,067.4 169,081.2 +0.0%
MultiFocusBench.eoModify_multiFocus size=1024 331,084.7 331,106.0 +0.0%
OrderAvroBench.eoModifyNames size=512 97,404.2 97,408.6 +0.0%
PrismBench.eoGetOptionPresent - 0.0 0.0 +0.0%
JsoniterBench.cReplaceId size=512 1,066,747.4 1,066,712.1 -0.0%
PlatedBench.mUniverseExpr n=4096 4,687,725.9 4,687,572.8 -0.0%
OrderCirceBench.eoStreetIor size=64 2,737.0 2,737.0 -0.0%
OrderCirceBench.naiveStreet size=512 908,036.2 908,057.8 +0.0%
OrderCirceBench.directNames size=512 601,710.9 601,697.2 -0.0%
PowerSeriesBench.eoModify_powerEach size=4096 164,376.5 164,379.8 +0.0%
OrderCirceBench.eoStreetIor size=512 2,737.6 2,737.7 +0.0%
OrderJsoniterBench.nativeSumPrices size=8 1,512.5 1,512.5 +0.0%
OrderCirceBench.monocleNames size=64 131,732.3 131,729.9 -0.0%
JsoniterBench.cReadStreet size=512 797,930.1 797,943.4 +0.0%
JsoniterBench.jReadStreet size=512 128.1 128.1 +0.0%
OrderCirceBench.hcursorStreet size=512 3,032.9 3,032.9 +0.0%
PowerSeriesBench.monocle_powerEach size=4096 967,852.9 967,842.8 -0.0%
OrderCirceBench.eoNamesIor size=512 683,570.8 683,563.8 -0.0%
OrderCirceBench.naiveNames size=512 965,279.0 965,288.9 +0.0%
OrderJsoniterBench.nativeReadStreet size=64 424.5 424.5 -0.0%
JsoniterBench.jSumPrices size=512 63,632.9 63,632.4 -0.0%
JsoniterBench.cReadStreet size=64 101,309.1 101,309.9 +0.0%
PowerSeriesBench.monocle_powerEach size=4 1,176.0 1,176.0 -0.0%
JsoniterBench.cReadId size=512 797,936.9 797,930.5 -0.0%
JsoniterBench.cModifyId size=64 136,266.9 136,265.8 -0.0%
PowerSeriesPrismBench.naive_sparse size=2048 24,613.0 24,612.8 -0.0%
OrderCirceBench.naiveNames size=64 120,838.5 120,837.8 -0.0%
OrderCirceBench.eoNames size=64 79,300.0 79,299.5 -0.0%
OrderAvroBench.naiveReadStreet size=512 69,801.6 69,802.0 +0.0%
PowerSeriesNestedBench.naive_nested size=1024 115,068.8 115,068.2 -0.0%
OrderJsoniterBench.monocleSumPrices size=512 1,190,781.4 1,190,787.6 +0.0%
OrderJsoniterBench.naiveModifyStreet size=512 333,572.2 333,570.4 -0.0%
PowerSeriesPrismBench.eoModify_sparse size=2048 104,683.0 104,683.6 +0.0%
OrderAvroBench.naiveModifyStreet size=512 169,058.7 169,057.9 -0.0%
OrderJsoniterBench.eoReadStreet size=64 128.0 128.0 +0.0%
PowerSeriesPrismBench.monocle_sparse size=2048 523,145.1 523,147.5 +0.0%
OrderCirceBench.directStreet size=512 2,728.8 2,728.8 +0.0%
OrderJsoniterBench.eoModifyStreet size=512 42,027.7 42,027.6 -0.0%
PowerSeriesBench.monocle_powerEach size=256 107,337.7 107,338.0 +0.0%
OrderJsoniterBench.naiveReadStreet size=512 193,230.9 193,231.5 +0.0%
PowerSeriesBench.naive_powerEach size=4096 114,774.1 114,773.8 -0.0%
JsoniterBench.cSumPrices size=512 1,240,809.5 1,240,813.2 +0.0%
OrderJsoniterBench.eoSumPrices size=512 63,684.7 63,684.8 +0.0%
PowerSeriesPrismBench.monocle_sparse size=512 166,693.2 166,693.6 +0.0%
OrderCirceBench.monocleStreet size=512 908,035.7 908,033.3 -0.0%
PlatedBench.eoUniverseExpr n=4096 786,384.1 786,386.2 +0.0%
PlatedBench.eoTransformDeep n=4096 624,385.1 624,386.7 +0.0%
FoldBench.eoFoldMap size=512 14,080.6 14,080.6 -0.0%
JsoniterBench.jReadId size=64 48.0 48.0 +0.0%
OrderCirceBench.monocleNames size=512 1,121,833.4 1,121,831.0 -0.0%
AvroBytesBench.prunedReadCountry - 1,976.0 1,976.0 +0.0%
JsoniterBench.cReadId size=64 101,309.3 101,309.5 +0.0%
JsoniterBench.cReplaceId size=64 136,218.5 136,218.2 -0.0%
OrderJsoniterBench.eoSumPrices size=64 8,121.2 8,121.2 +0.0%
OrderJsoniterBench.monocleModifyStreet size=512 333,570.0 333,570.5 +0.0%
OrderCirceBench.directStreet size=64 2,728.1 2,728.1 -0.0%
FoldBench.mFoldMap size=512 14,080.6 14,080.6 -0.0%
PlatedBench.visitorTransformExpr n=4096 360,471.2 360,470.7 -0.0%
OrderAvroBench.monocleModifyNames size=64 39,867.4 39,867.4 -0.0%
PlatedBench.visitorTransformDeep n=4096 163,886.4 163,886.2 -0.0%
PlatedBench.eoTransformExpr n=4096 655,360.2 655,359.4 -0.0%
JsoniterBench.cModifyId size=512 1,066,784.1 1,066,785.3 +0.0%
PowerSeriesPrismBench.eoModify_sparse size=512 24,785.6 24,785.5 -0.0%
MultiFocusBench.eoModify_powerEach size=1024 115,177.2 115,177.1 -0.0%
PowerSeriesNestedBench.naive_nested size=256 29,019.4 29,019.3 -0.0%
OrderJsoniterBench.naiveSumPrices size=512 230,123.8 230,124.0 +0.0%
PowerSeriesNestedBench.monocle_nested size=4 5,568.0 5,568.0 +0.0%
PowerSeriesNestedBench.monocle_nested size=256 430,200.2 430,199.9 -0.0%
PlatedBench.mTransformExpr n=4096 753,739.0 753,739.6 +0.0%
AvroBytesBench.naiveReadCountry - 4,256.0 4,256.0 -0.0%
OrderCirceBench.directNames size=64 77,730.3 77,730.2 -0.0%
AvroBytesBench.prunedReadPartner - 1,592.0 1,592.0 +0.0%
TraversalBench.eoFoldPrices size=512 12,312.4 12,312.4 +0.0%
PowerSeriesPrismBench.naive_sparse size=512 6,176.3 6,176.3 +0.0%
TraversalBench.eoModify size=512 36,897.2 36,897.2 +0.0%
JsoniterBench.jReplaceId size=512 41,889.0 41,889.0 -0.0%
JsoniterBench.jReadId size=8 48.0 48.0 -0.0%
AvroBytesBench.eoReadCountry - 520.0 520.0 +0.0%
PowerSeriesBench.eoModify_powerEach size=1024 41,414.2 41,414.2 +0.0%
OrderJsoniterBench.eoSumPrices size=8 1,176.0 1,176.0 +0.0%
OrderCirceBench.hcursorStreet size=8 3,032.0 3,032.0 +0.0%
OrderAvroBench.eoReadStreet size=64 88.0 88.0 -0.0%
PlatedBench.mUniverseExpr n=512 475,009.0 475,009.2 +0.0%
PlatedBench.eoUniverseJson n=4096 786,482.6 786,482.2 -0.0%
OrderJsoniterBench.naiveModifyStreet size=64 30,058.0 30,058.0 +0.0%
CompositionBench.reuseLens1 - 40.0 40.0 -0.0%
PlatedBench.visitorUniverseExpr n=512 24,584.7 24,584.7 -0.0%
PlatedBench.eoUniverseDeep n=4096 786,576.2 786,575.8 -0.0%
JsoniterBench.jReadId size=512 48.0 48.0 -0.0%
OrderAvroBench.naiveModifyNames size=512 226,283.7 226,283.8 +0.0%
OrderAvroBench.eoModifyNames size=8 2,160.0 2,160.0 +0.0%
OrderJsoniterBench.nativeReadStreet size=8 424.0 424.0 -0.0%
OrderJsoniterBench.naiveReadStreet size=64 24,705.2 24,705.2 +0.0%
PlatedBench.visitorUniverseDeep n=4096 196,706.8 196,706.9 +0.0%
MultiFocusBench.eoFold_powerEach size=1024 43,035.9 43,035.8 -0.0%
JsoniterBench.jSumPrices size=64 8,120.3 8,120.3 -0.0%
PlatedBench.visitorTransformExpr n=512 45,032.8 45,032.8 -0.0%
PlatedBench.visitorTransformDeep n=512 20,496.5 20,496.5 +0.0%
MultiFocusBench.naive_listMap size=1024 65,578.1 65,578.1 -0.0%
PlatedBench.eoUniverseJson n=64 12,168.1 12,168.1 +0.0%
OrderJsoniterBench.naiveSumPrices size=64 29,337.3 29,337.3 -0.0%
MultiFocusBench.eoModify_powerEach size=256 26,080.6 26,080.6 +0.0%
OrderCirceBench.eoStreet size=8 2,720.0 2,720.0 +0.0%
PowerSeriesNestedBench.monocle_nested size=1024 1,118,854.9 1,118,855.2 +0.0%
OrderAvroBench.eoModifyStreet size=512 328.0 328.0 +0.0%
AvroDecodeReuseBench.confluentRecordReaderFresh - 3,696.0 3,696.0 +0.0%
PlatedBench.eoUniverseExpr n=64 12,168.0 12,168.0 -0.0%
JsoniterBench.jSumPrices size=8 1,176.0 1,176.0 +0.0%
PowerSeriesBench.eoModify_powerEach size=256 10,688.5 10,688.5 -0.0%
AvroBytesBench.eoReadPartner - 480.0 480.0 +0.0%
OrderJsoniterBench.monocleSumPrices size=8 6,640.1 6,640.1 +0.0%
PowerSeriesBench.naive_powerEach size=64 1,848.0 1,848.0 +0.0%
PlatedBench.visitorUniverseDeep n=64 3,128.0 3,128.0 -0.0%
OrderCirceBench.hcursorNames size=8 10,768.1 10,768.1 +0.0%
PlatedBench.mUniverseJson n=512 699,917.8 699,917.6 -0.0%
FoldBench.eoFoldPrices size=512 12,312.4 12,312.5 +0.0%
OrderJsoniterBench.eoModifyStreet size=8 1,072.0 1,072.0 +0.0%
PlatedBench.visitorUniverseExpr n=4096 196,655.0 196,654.9 -0.0%
TraversalBench.mFoldPrices size=64 15,424.1 15,424.1 -0.0%
TraversalBench.mFoldPrices size=512 162,581.0 162,581.0 -0.0%
OrderAvroBench.eoModifyStreet size=64 328.0 328.0 -0.0%
AvroVulcanBench.encode_native - 56.0 56.0 +0.0%
AvroJsonBridgeBench.naiveWideToJson - 4,376.0 4,376.0 +0.0%
OrderJsoniterBench.monocleReadStreet size=512 193,231.8 193,231.7 -0.0%
FoldBench.mFoldMap size=64 768.0 768.0 +0.0%
OrderCirceBench.eoNamesIor size=8 11,592.1 11,592.1 -0.0%
MultiFocusBench.eoFold_powerEach size=256 9,240.2 9,240.2 -0.0%
PowerSeriesNestedBench.eoModify_nested size=4 2,264.0 2,264.0 -0.0%
OrderJsoniterBench.monocleModifyStreet size=64 30,081.9 30,081.8 -0.0%
TraversalBench.eoFoldNested size=512 20,200.9 20,200.8 -0.0%
OrderAvroBench.monocleModifyNames size=512 382,759.5 382,759.5 +0.0%
MultiFocusBench.eoModify_powerEach size=4 800.0 800.0 -0.0%
FoldBench.mFoldPrices size=512 12,312.5 12,312.5 +0.0%
AvroVulcanBench.rootGet_bridged - 1,472.0 1,472.0 +0.0%
OrderJsoniterBench.naiveModifyStreet size=8 4,640.1 4,640.1 +0.0%
OrderJsoniterBench.monocleReadStreet size=64 24,705.2 24,705.2 -0.0%
AvroBytesBench.eoSliceGraftPayload - 1,192.0 1,192.0 -0.0%
PlatedBench.visitorUniverseJson n=512 40,954.2 40,954.2 -0.0%
PlatedBench.mTransformExpr n=512 69,585.6 69,585.6 -0.0%
PowerSeriesBench.monocle_powerEach size=64 14,520.1 14,520.1 -0.0%
KyoDiBench.eoVarUpdateFocus - 200.0 200.0 +0.0%
AvroJsonBridgeBench.eoClickToJson - 4,000.0 4,000.0 +0.0%
OrderCirceBench.directStreet size=8 2,728.0 2,728.0 -0.0%
OrderCirceBench.eoNames size=8 10,944.1 10,944.1 -0.0%
AvroBytesBench.naiveModifyCountry - 7,616.0 7,616.0 +0.0%
OrderCirceBench.directNames size=8 10,688.1 10,688.1 -0.0%
PowerSeriesPrismBench.monocle_sparse size=128 27,808.2 27,808.2 +0.0%
PowerSeriesBench.monocle_powerEach size=1024 279,426.7 279,426.7 +0.0%
AvroVulcanBench.fieldGet_bridged - 432.0 432.0 +0.0%
AvroVulcanBench.fieldGet_native - 432.0 432.0 +0.0%
PowerSeriesBench.eoModify_powerEach size=16 1,088.0 1,088.0 -0.0%
PowerSeriesBench.eoModify_powerEach size=64 3,008.0 3,008.0 -0.0%
MultiFocusBench.eoFold_powerEach size=32 920.0 920.0 +0.0%
JsoniterBench.cReadStreet size=8 15,568.0 15,568.0 -0.0%
PlatedBench.mUniverseJson n=64 73,208.4 73,208.4 +0.0%
OrderAvroBench.eoReadStreet size=8 88.0 88.0 +0.0%
OrderJsoniterBench.monocleModifyStreet size=8 4,664.1 4,664.1 +0.0%
AvroDecodeReuseBench.cachedDecodeRecord - 1,224.0 1,224.0 +0.0%
AvroJsonBridgeBench.eoWideToJson - 1,472.0 1,472.0 -0.0%
OrderAvroBench.naiveModifyNames size=64 27,936.3 27,936.3 -0.0%
SetterBench.eoModify_3 - 72.0 72.0 -0.0%
AvroJsonBridgeBench.naiveWideToAvro - 3,504.0 3,504.0 +0.0%
OrderAvroBench.naiveModifyStreet size=64 20,880.2 20,880.2 -0.0%
MultiFocusCollectBench.naive_listSum - 56.0 56.0 +0.0%
PowerSeriesNestedBench.naive_nested size=16 2,136.0 2,136.0 -0.0%
MultiFocusBench.naive_listMap size=256 16,424.1 16,424.1 -0.0%
TraversalBench.mModify size=8 1,936.0 1,936.0 +0.0%
AvroJsonBridgeBench.naiveClickToAvro - 3,928.0 3,928.0 +0.0%
PowerSeriesBench.naive_powerEach size=16 504.0 504.0 -0.0%
PowerSeriesNestedBench.monocle_nested size=16 15,776.1 15,776.1 +0.0%
PlatedBench.eoUniverseJson n=512 98,186.9 98,186.9 +0.0%
PlatedBench.eoUniverseExpr n=512 98,185.5 98,185.5 -0.0%
AvroBytesBench.eoModifyCountry - 3,304.0 3,304.0 +0.0%
KyoDiBench.eoEnvFocus - 312.0 312.0 +0.0%
AvroBytesBench.eoModifyPartner - 3,360.0 3,360.0 +0.0%
OrderCirceBench.hcursorStreet size=64 3,032.1 3,032.1 -0.0%
AvroDecodeReuseBench.freshDecodeRecord - 3,344.0 3,344.0 +0.0%
PlatedBench.eoUniverseDeep n=512 98,377.6 98,377.5 -0.0%
AvroDecodeReuseBench.confluentRecordReader - 1,560.0 1,560.0 +0.0%
PlatedBench.eoTransformExpr n=64 10,144.0 10,144.0 +0.0%
MultiFocusCollectBench.eoCollectList_listSum - 56.0 56.0 +0.0%
OrderJsoniterBench.monocleReadStreet size=8 3,648.0 3,648.0 -0.0%
AvroVulcanBench.decode_native - 48.0 48.0 +0.0%
PlatedBench.visitorUniverseDeep n=512 24,632.8 24,632.8 -0.0%
OrderCirceBench.naiveNames size=8 17,808.1 17,808.1 +0.0%
PowerSeriesPrismBench.eoModify_sparse size=8 496.0 496.0 +0.0%
PlatedBench.mTransformExpr n=64 11,728.1 11,728.0 -0.0%
OrderAvroBench.eoModifyStreet size=8 328.0 328.0 +0.0%
JsoniterBench.cReadId size=8 15,568.0 15,568.0 -0.0%
PlatedBench.eoTransformDeep n=512 57,361.2 57,361.3 +0.0%
PowerSeriesPrismBench.naive_sparse size=128 1,568.0 1,568.0 +0.0%
OrderCirceBench.naiveStreet size=8 17,040.1 17,040.1 -0.0%
MultiFocusCollectBench.eoCollectMap_zipMean - 880.0 880.0 +0.0%
TraversalBench.eoFoldNested size=8 424.0 424.0 -0.0%
MultiFocusBench.eoModify_multiFocus size=32 8,600.0 8,600.0 -0.0%
PlatedBench.eoTransformExpr n=512 81,825.7 81,825.7 +0.0%
PlatedBench.visitorUniverseJson n=64 5,096.0 5,096.0 -0.0%
PowerSeriesPrismBench.eoModify_sparse size=32 1,360.0 1,360.0 -0.0%
OpticBuildBench.buildAndUse - 2,888.0 2,888.0 +0.0%
OrderAvroBench.monocleModifyStreet size=8 2,992.0 2,992.0 -0.0%
PowerSeriesNestedBench.eoModify_nested size=64 14,592.5 14,592.5 +0.0%
OrderAvroBench.naiveReadStreet size=64 8,848.2 8,848.2 -0.0%
OrderAvroBench.monocleReadStreet size=64 8,848.2 8,848.2 -0.0%
TraversalBench.eoFoldPrices size=8 216.0 216.0 +0.0%
PowerSeriesPrismBench.eoModify_sparse size=128 4,816.1 4,816.1 -0.0%
OrderAvroBench.naiveReadStreet size=8 1,208.0 1,208.0 -0.0%
OrderJsoniterBench.eoModifyStreet size=64 5,432.1 5,432.1 +0.0%
OrderAvroBench.monocleModifyStreet size=64 20,904.2 20,904.2 -0.0%
PowerSeriesBench.eoModify_powerEach size=4 608.0 608.0 -0.0%
TraversalBench.mModify size=64 14,448.0 14,448.0 -0.0%
PlatedBench.mUniverseExpr n=64 45,424.3 45,424.3 +0.0%
MultiFocusBench.eoModify_multiFocus size=4 1,320.0 1,320.0 -0.0%
OrderAvroBench.monocleReadStreet size=8 1,208.0 1,208.0 -0.0%
PowerSeriesBench.naive_powerEach size=256 7,224.3 7,224.3 -0.0%
OrderJsoniterBench.naiveReadStreet size=8 3,648.0 3,648.0 -0.0%
PowerSeriesNestedBench.naive_nested size=64 7,512.2 7,512.2 +0.0%
OptionalBench.eoModify_6 - 208.0 208.0 +0.0%
MultiFocusBench.naive_sumQty size=1024 16,129.1 16,129.1 -0.0%
SchemesBench.handAna - 163,816.1 163,816.1 -0.0%
MultiFocusBench.naive_sumQty size=256 3,840.1 3,840.1 -0.0%
KyoDiBench.handVarUpdate - 184.0 184.0 +0.0%
OpticBuildBench.reuseUse - 2,648.0 2,648.0 +0.0%
SchemesBench.eoCata - 197,568.6 197,568.6 +0.0%
ZioDiBench.handDrillGet - 120.0 120.0 +0.0%
PlatedBench.visitorUniverseExpr n=64 3,080.0 3,080.0 +0.0%
SetterBench.mModify_6 - 288.0 288.0 -0.0%
OptionalBench.mModify_6 - 496.0 496.0 -0.0%
AvroVulcanBench.decode_bridged - 880.0 880.0 -0.0%
OrderAvroBench.naiveModifyStreet size=8 2,968.0 2,968.0 -0.0%
OrderAvroBench.eoModifyNames size=64 12,584.1 12,584.1 -0.0%
OpticBuildBench.build - 184.0 184.0 +0.0%
SchemesBench.eoHylo - 295,848.6 295,848.6 +0.0%
AvroVulcanBench.decode_vulcanRaw - 880.0 880.0 +0.0%
OrderAvroBench.monocleReadStreet size=512 69,801.9 69,801.9 +0.0%
PowerSeriesBench.naive_powerEach size=1024 28,730.4 28,730.4 -0.0%
OrderAvroBench.naiveModifyNames size=8 3,752.0 3,752.0 +0.0%
LensBench.eoReplace - 40.0 40.0 -0.0%
ZioDiBench.eoServiceReplace - 456.0 456.0 -0.0%
OrderAvroBench.monocleModifyNames size=8 5,400.0 5,400.0 -0.0%
CompositionBench.reuseLensOptional3 - 160.0 160.0 +0.0%
PowerSeriesPrismBench.naive_sparse size=32 416.0 416.0 -0.0%
TraversalBench.eoModify size=64 4,640.0 4,640.0 -0.0%
GenericsBench.handPrismModifyHit - 24.0 24.0 -0.0%
FoldBench.mFoldPrices size=64 1,560.0 1,560.0 +0.0%
IsoBench.eoGet - 32.0 32.0 +0.0%
ZioDiBench.handDrillModify - 648.0 648.0 +0.0%
PrismBench.mRightReverseGet - 16.0 16.0 -0.0%
CapsBench.modifyDeepCap - 176.0 176.0 +0.0%
TraversalBench.eoFoldPrices size=64 1,560.0 1,560.0 +0.0%
PlatedBench.visitorTransformExpr n=64 5,608.0 5,608.0 -0.0%
PowerSeriesNestedBench.naive_nested size=4 792.0 792.0 +0.0%
PowerSeriesPrismBench.monocle_sparse size=8 1,952.0 1,952.0 -0.0%
OptionalBench.mReplace_0 - 40.0 40.0 +0.0%
AvroBytesBench.eoGraftPayload - 720.0 720.0 -0.0%
OrderJsoniterBench.naiveSumPrices size=8 4,248.0 4,248.0 +0.0%
CapsBench.modifyDerivedPerCall - 40.0 40.0 -0.0%
SchemesBench.drosteCata - 164,824.3 164,824.3 -0.0%
OptionalBench.mModify_0 - 112.0 112.0 +0.0%
MultiFocusCollectBench.naive_tuple3Rewrite - 96.0 96.0 +0.0%
CompositionBench.buildLensOptional3 - 184.0 184.0 +0.0%
MultiFocusCollectBench.naive_constSum - 16.0 16.0 -0.0%
MultiFocusCollectBench.naive_tuple6Rewrite - 184.0 184.0 +0.0%
PowerSeriesPrismBench.naive_sparse size=8 128.0 128.0 +0.0%
SetterBench.eoModify_0 - 24.0 24.0 -0.0%
TraversalBench.mModify size=512 176,920.8 176,920.8 -0.0%
LensBench.mModifyDeep - 176.0 176.0 -0.0%
PrismBench.mReverseGet - 16.0 16.0 -0.0%
FoldBench.eoFoldPrices size=64 1,560.0 1,560.0 +0.0%
OptionalBench.mModify_3 - 304.0 304.0 +0.0%
KyoDiBench.eoMapDrillModify - 216.0 216.0 -0.0%
ZioDiBench.handServiceReplace - 576.0 576.0 +0.0%
CompositionBench.reuseLens6 - 120.0 120.0 -0.0%
MultiFocusBench.naive_sumQty size=32 256.0 256.0 -0.0%
SchemesBench.drosteHylo - 328,640.5 328,640.5 -0.0%
IsoBench.eoReverseGet - 32.0 32.0 -0.0%
LensBench.eoModifyDeep - 152.0 152.0 -0.0%
AffineFoldBench.eoGetOption_3 - 16.0 16.0 +0.0%
PlatedBench.eoTransformDeep n=64 7,184.0 7,184.0 -0.0%
CompositionBench.reuseLens3 - 72.0 72.0 +0.0%
ReviewBench.eoReverseGet_0 - 24.0 24.0 -0.0%
SchemesBench.eoAna - 589,712.7 589,712.8 +0.0%
OptionalBench.mModify_loyalty - 112.0 112.0 +0.0%
PrismBench.eoRightReverseGet - 16.0 16.0 -0.0%
CapsBench.modifyDirect - 40.0 40.0 -0.0%
OptionalBench.eoModify_loyalty - 112.0 112.0 +0.0%
TraversalBench.eoModify size=8 608.0 608.0 -0.0%
FoldBench.eoFoldPrices size=8 216.0 216.0 -0.0%
AvroVulcanBench.rootGet_native - 600.0 600.0 -0.0%
MultiFocusBench.naive_listMap size=4 296.0 296.0 -0.0%
PowerSeriesBench.monocle_powerEach size=16 3,736.0 3,736.0 -0.0%
KyoDiBench.handMapDrillModify - 216.0 216.0 +0.0%
GenericsBench.rawLensModify - 24.0 24.0 +0.0%
TraversalBench.eoFoldNested size=64 2,680.0 2,680.0 +0.0%
SchemesBench.drosteAna - 327,632.3 327,632.3 -0.0%
GenericsBench.rawPrismGetHit - 16.0 16.0 +0.0%
ZioDiBench.handServiceGet - 120.0 120.0 -0.0%
FoldBench.eoFoldMap size=64 768.0 768.0 -0.0%
LensBench.eoModify - 40.0 40.0 +0.0%
IsoBench.mReverseGet - 32.0 32.0 -0.0%
PlatedBench.eoUniverseDeep n=64 12,360.0 12,360.0 -0.0%
GenericsBench.handPrismGetHit - 16.0 16.0 +0.0%
LensBench.mReplace - 40.0 40.0 -0.0%
FoldBench.mFoldPrices size=8 216.0 216.0 -0.0%
OptionalBench.eoModify_3 - 160.0 160.0 -0.0%
MultiFocusBench.eoModify_powerEach size=32 3,152.0 3,152.0 -0.0%
CapsBench.modifyDerivedHeld - 40.0 40.0 -0.0%
OrderAvroBench.eoReadStreet size=512 88.0 88.0 -0.0%
AffineFoldBench.eoGetOption_6 - 16.0 16.0 +0.0%
SetterBench.mModify_3 - 168.0 168.0 -0.0%
ReviewBench.eoReverseGet_3 - 72.0 72.0 -0.0%
OptionalBench.eoModify_0 - 112.0 112.0 +0.0%
KyoDiBench.handEnvUse - 304.0 304.0 +0.0%
CompositionBench.buildLens3 - 184.0 184.0 +0.0%
MultiFocusCollectBench.eoModify_multiFocusTuple3 - 128.0 128.0 +0.0%
ReviewBench.naiveBuild_3 - 72.0 72.0 -0.0%
SetterBench.eoModify_6 - 120.0 120.0 -0.0%
OptionalBench.eoReplace_loyalty - 88.0 88.0 +0.0%
ZioDiBench.eoDrillModify - 528.0 528.0 -0.0%
SetterBench.eoModify_orderId - 40.0 40.0 -0.0%
CapsBench.modifyDeepDirect - 152.0 152.0 -0.0%
GenericsBench.genPrismModifyHit - 24.0 24.0 +0.0%
ReviewBench.eoReverseGet_6 - 120.0 120.0 +0.0%
OptionalBench.mReplace_loyalty - 88.0 88.0 +0.0%
AffineFoldBench.eoGetOption_0_asOptional - 16.0 16.0 +0.0%
OptionalBench.eoReplace_0 - 40.0 40.0 +0.0%
SetterBench.mModify_0 - 24.0 24.0 -0.0%
PowerSeriesBench.naive_powerEach size=4 168.0 168.0 -0.0%
PrismBench.eoReverseGet - 16.0 16.0 +0.0%
MultiFocusBench.naive_listMap size=32 2,088.0 2,088.0 +0.0%
ReviewBench.naiveBuild_6 - 120.0 120.0 -0.0%
MultiFocusBench.eoFold_powerEach size=4 328.0 328.0 +0.0%
GenericsBench.rawPrismModifyHit - 24.0 24.0 +0.0%
MultiFocusCollectBench.eoModify_multiFocusTuple6 - 224.0 224.0 -0.0%
CompositionBench.buildLens1 - 72.0 72.0 +0.0%
LensBench.mModify - 40.0 40.0 -0.0%
PlatedBench.visitorTransformDeep n=64 2,576.0 2,576.0 -0.0%
IsoBench.mGet - 32.0 32.0 +0.0%
SetterBench.mModify_orderId - 40.0 40.0 -0.0%
PrismBench.mGetRightPresent - 16.0 16.0 -0.0%
CompositionBench.buildLens6 - 352.0 352.0 -0.0%
GenericsBench.handLensModify - 24.0 24.0 +0.0%
MultiFocusBench.eoModify_multiFocus size=256 76,112.6 76,112.6 -0.0%
JsoniterBench.jModifyId size=8 968.0 968.0 +0.0%
GenericsBench.genPrismGetHit - 16.0 16.0 -0.0%
TraversalBench.mFoldPrices size=8 2,016.0 2,016.0 -0.0%
CompositionBench.reuseLeaf - 24.0 24.0 +0.0%
MultiFocusCollectBench.naive_zipMeanBroadcast - 1,176.0 1,176.0 +0.0%
ReviewBench.naiveBuild_0 - 24.0 24.0 +0.0%
PrismBench.eoGetRightPresent - 16.0 16.0 +0.0%
CapsBench.modifyCap - 40.0 40.0 -0.0%
GenericsBench.genLensModify - 24.0 24.0 +0.0%
Timing (ns/op) — directional only, same-VM but shared runner
Benchmark params base head Δ
AvroBytesBench.prunedReadCountry - 732.3 980.6 +33.9%
AvroBytesBench.naivePassthroughPayload - 3,866.0 4,907.1 +26.9%
PlatedBench.visitorUniverseJson n=4096 199,806.1 146,952.3 -26.5%
PowerSeriesNestedBench.monocle_nested size=4 1,238.7 1,494.1 +20.6%
AvroBytesBench.naiveReadPartner - 1,716.5 2,023.8 +17.9%
AvroBytesBench.naiveModifyPartner - 2,590.7 3,032.2 +17.0%
CompositionBench.reuseLens1 - 19.2 16.4 -14.4%
AvroJsonBridgeBench.naiveClickToJson - 2,593.8 2,962.0 +14.2%
AvroJsonBridgeBench.eoWideToAvro - 956.6 1,084.7 +13.4%
AvroVulcanBench.encode_native - 11.9 13.5 +13.4%
AvroBytesBench.prunedReadPartner - 571.3 643.2 +12.6%
GetterBench.mGet_6 - 28.7 25.1 -12.6%
OrderCirceBench.monocleNames size=64 27,725.5 24,418.0 -11.9%
AvroBytesBench.eoReadCountry - 171.3 190.4 +11.1%
JsoniterBench.jReadId size=64 35.4 39.3 +10.9%
AvroBytesBench.naiveReadCountry - 1,904.0 1,705.7 -10.4%
GetterBench.mGet_3 - 9.4 8.5 -9.6%
JsoniterBench.jReadStreet size=8 190.1 208.1 +9.5%
AvroVulcanBench.fieldGet_bridged - 95.5 103.9 +8.8%
SetterBench.eoModify_3 - 12.8 11.7 -8.5%
AvroVulcanBench.fieldGet_native - 97.9 106.1 +8.4%
OrderCirceBench.naiveStreet size=512 184,963.3 200,271.6 +8.3%
MultiFocusBench.eoModify_powerEach size=4 211.7 194.6 -8.1%
JsoniterBench.jReadId size=8 38.5 35.4 -7.9%
OrderJsoniterBench.monocleSumPrices size=64 17,736.4 16,375.0 -7.7%
AvroVulcanBench.rootGet_bridged - 427.9 460.6 +7.7%
KyoDiBench.eoVarUpdateFocus - 57.0 61.2 +7.4%
PlatedBench.mUniverseExpr n=4096 2,812,846.2 2,606,300.3 -7.3%
AvroDecodeReuseBench.confluentRecordReaderFresh - 1,310.1 1,404.7 +7.2%
OrderCirceBench.naiveNames size=512 199,957.9 214,126.3 +7.1%
JsoniterBench.jReplaceId size=8 110.2 102.4 -7.1%
OrderJsoniterBench.eoReadStreet size=512 198.4 212.2 +6.9%
TraversalBench.mModify size=8 287.3 307.0 +6.9%
JsoniterBench.jMiss size=64 184.2 171.7 -6.8%
AvroJsonBridgeBench.naiveWideToJson - 1,790.3 1,908.0 +6.6%
JsoniterBench.cReadStreet size=512 203,802.3 216,816.7 +6.4%
MultiFocusBench.eoModify_multiFocus size=1024 54,796.8 51,307.6 -6.4%
KyoDiBench.eoEnvFocus - 61.8 65.7 +6.3%
OrderCirceBench.directNames size=512 277,896.4 260,938.1 -6.1%
OrderCirceBench.monocleNames size=512 247,989.8 233,166.5 -6.0%
TraversalBench.mFoldPrices size=64 2,200.7 2,071.3 -5.9%
JsoniterBench.jMiss size=8 172.7 182.8 +5.8%
AvroJsonBridgeBench.naiveWideToAvro - 982.8 1,035.9 +5.4%
SchemesBench.handHylo - 9,522.2 10,029.3 +5.3%
FoldBench.eoFoldMap size=512 3,993.1 3,781.1 -5.3%
OrderCirceBench.eoStreet size=512 1,064.7 1,120.8 +5.3%
OrderCirceBench.eoStreet size=64 1,072.3 1,127.3 +5.1%
ZioDiBench.eoDrillGet - 12.0 12.6 +5.0%
JsoniterBench.jReadStreet size=64 208.3 198.7 -4.6%
JsoniterBench.jModifyId size=512 3,669.0 3,504.0 -4.5%
JsoniterBench.cReadStreet size=8 4,184.2 4,000.7 -4.4%
AvroVulcanBench.encode_vulcanRaw - 253.0 241.9 -4.4%
OrderAvroBench.eoModifyNames size=512 34,483.6 35,962.3 +4.3%
JsoniterBench.cReadStreet size=64 26,356.4 27,448.4 +4.1%
TraversalBench.eoFoldNested size=8 59.6 57.2 -4.1%
OrderCirceBench.directStreet size=64 1,084.5 1,040.8 -4.0%
MultiFocusCollectBench.eoCollectMap_zipMean - 172.8 179.7 +4.0%
OrderCirceBench.hcursorStreet size=512 1,143.8 1,188.4 +3.9%
PowerSeriesNestedBench.eoModify_nested size=256 17,795.7 18,483.2 +3.9%
OrderJsoniterBench.eoModifyStreet size=512 3,892.4 3,743.5 -3.8%
SchemesBench.handAna - 20,840.7 20,059.3 -3.7%
AvroJsonBridgeBench.naiveClickToAvro - 1,474.5 1,528.6 +3.7%
OrderAvroBench.naiveModifyStreet size=512 53,384.5 55,343.2 +3.7%
PowerSeriesBench.eoModify_powerEach size=4096 53,312.5 55,265.9 +3.7%
ZioDiBench.handDrillGet - 14.8 15.3 +3.6%
AvroJsonBridgeBench.eoWideToJson - 723.5 697.9 -3.5%
AvroBytesBench.eoReadPartner - 207.7 214.9 +3.5%
AvroDecodeReuseBench.cachedDecodeRecord - 394.0 407.6 +3.4%
OrderCirceBench.eoNames size=64 31,553.9 32,638.1 +3.4%
OrderAvroBench.eoReadStreet size=64 39.5 38.1 -3.4%
FoldBench.mFoldMap size=512 3,961.3 3,828.0 -3.4%
PowerSeriesBench.monocle_powerEach size=4096 184,741.5 178,537.8 -3.4%
OrderJsoniterBench.eoModifyStreet size=8 288.8 298.5 +3.4%
PowerSeriesBench.monocle_powerEach size=64 2,156.5 2,084.4 -3.3%
PowerSeriesBench.naive_powerEach size=16 102.4 99.1 -3.3%
PowerSeriesBench.eoModify_powerEach size=16 267.8 259.0 -3.3%
AvroBytesBench.eoModifyCountry - 436.2 450.4 +3.3%
PowerSeriesNestedBench.eoModify_nested size=4 704.0 681.5 -3.2%
OrderJsoniterBench.monocleSumPrices size=8 2,545.2 2,623.1 +3.1%
OrderCirceBench.eoStreetIor size=512 1,103.2 1,069.6 -3.1%
JsoniterBench.jReplaceId size=64 455.9 442.2 -3.0%
AvroJsonBridgeBench.eoClickToJson - 2,811.2 2,894.8 +3.0%
AvroBytesBench.eoModifyPartner - 527.5 542.6 +2.9%
OrderCirceBench.eoNamesIor size=512 282,067.3 273,974.4 -2.9%
OpticBuildBench.buildAndUse - 1,136.6 1,169.1 +2.9%
PlatedBench.eoUniverseExpr n=4096 99,089.3 101,911.2 +2.8%
AvroBytesBench.eoSliceGraftPayload - 338.4 328.9 -2.8%
JsoniterBench.jReplaceId size=512 3,481.5 3,385.8 -2.7%
MultiFocusBench.eoModify_multiFocus size=4 230.3 224.0 -2.7%
JsoniterBench.jReadStreet size=512 192.9 198.2 +2.7%
LensBench.eoReplace - 3.4 3.3 -2.7%
AvroJsonBridgeBench.eoClickToAvro - 3,077.4 3,160.6 +2.7%
AvroVulcanBench.decode_native - 18.5 19.0 +2.7%
AvroDecodeReuseBench.confluentRecordReader - 413.9 424.9 +2.7%
JsoniterBench.jModifyId size=64 455.3 467.4 +2.7%
OrderAvroBench.eoReadStreet size=8 38.0 39.0 +2.7%
PowerSeriesPrismBench.monocle_sparse size=2048 107,409.7 110,220.2 +2.6%
OrderCirceBench.hcursorNames size=512 248,683.4 255,163.4 +2.6%
PowerSeriesPrismBench.eoModify_sparse size=8 120.2 123.3 +2.6%
AvroBytesBench.naiveModifyCountry - 2,617.1 2,683.1 +2.5%
JsoniterBench.cReadId size=8 4,097.5 3,996.4 -2.5%
CapsBench.getDerivedHeld - 2.5 2.4 -2.5%
PlatedBench.mUniverseJson n=64 19,148.4 19,613.7 +2.4%
OrderCirceBench.directStreet size=8 1,107.7 1,081.1 -2.4%
TraversalBench.eoFoldPrices size=8 43.2 44.3 +2.4%
PowerSeriesNestedBench.eoModify_nested size=16 1,526.6 1,490.9 -2.3%
OrderJsoniterBench.nativeSumPrices size=512 64,399.3 62,934.6 -2.3%
MultiFocusBench.eoModify_multiFocus size=32 1,416.4 1,384.2 -2.3%
TraversalBench.eoFoldPrices size=512 2,762.6 2,822.7 +2.2%
PowerSeriesPrismBench.monocle_sparse size=512 33,529.4 34,257.0 +2.2%
MultiFocusCollectBench.naive_listSum - 36.2 37.0 +2.2%
JsoniterBench.cSumPrices size=512 352,653.7 360,258.3 +2.2%
JsoniterBench.jSumPrices size=512 87,606.9 85,769.4 -2.1%
JsoniterBench.jSumPrices size=8 1,411.3 1,440.6 +2.1%
TraversalBench.eoModify size=512 7,364.0 7,514.8 +2.0%
MultiFocusBench.eoFold_powerEach size=32 396.2 404.2 +2.0%
PowerSeriesBench.eoModify_powerEach size=4 126.9 124.3 -2.0%
OrderCirceBench.eoNamesIor size=64 35,453.1 34,761.5 -2.0%
PowerSeriesPrismBench.monocle_sparse size=128 3,890.0 3,965.9 +2.0%
OrderJsoniterBench.eoSumPrices size=8 1,435.5 1,463.3 +1.9%
AvroDecodeReuseBench.freshDecodeRecord - 1,349.2 1,375.2 +1.9%
KyoDiBench.handVarUpdate - 49.0 49.9 +1.9%
SetterBench.mModify_6 - 65.8 64.5 -1.8%
PlatedBench.visitorTransformExpr n=512 7,716.7 7,575.7 -1.8%
OrderJsoniterBench.eoReadStreet size=64 198.8 202.4 +1.8%
OrderCirceBench.naiveNames size=8 3,496.1 3,559.5 +1.8%
PlatedBench.eoTransformDeep n=4096 122,428.7 124,578.5 +1.8%
PlatedBench.mUniverseJson n=4096 3,181,648.0 3,126,111.8 -1.7%
OrderCirceBench.eoStreet size=8 1,065.4 1,046.8 -1.7%
FoldBench.mFoldMap size=64 341.4 347.3 +1.7%
PlatedBench.eoTransformExpr n=64 2,003.3 2,037.9 +1.7%
OrderCirceBench.monocleStreet size=8 3,411.6 3,352.9 -1.7%
MultiFocusCollectBench.naive_tuple3Rewrite - 7.3 7.4 +1.7%
PowerSeriesNestedBench.monocle_nested size=16 2,847.4 2,895.3 +1.7%
PlatedBench.visitorUniverseExpr n=512 6,837.9 6,723.9 -1.7%
OptionalBench.mReplace_0 - 3.6 3.7 +1.7%
OrderCirceBench.directNames size=8 4,166.4 4,097.9 -1.6%
OrderAvroBench.naiveReadStreet size=512 34,026.0 34,574.4 +1.6%
MultiFocusCollectBench.naive_tuple6Rewrite - 13.7 13.9 +1.6%
OrderCirceBench.eoNames size=8 4,402.6 4,333.6 -1.6%
OrderAvroBench.eoModifyStreet size=64 123.2 121.3 -1.6%
PowerSeriesPrismBench.eoModify_sparse size=512 5,716.9 5,628.2 -1.6%
OrderCirceBench.eoNames size=512 246,511.1 250,324.3 +1.5%
GenericsBench.handPrismModifyHit - 2.8 2.8 -1.5%
OrderAvroBench.eoModifyStreet size=8 123.1 125.0 +1.5%
PlatedBench.mUniverseExpr n=64 14,603.0 14,826.0 +1.5%
PlatedBench.mTransformExpr n=64 2,606.6 2,568.1 -1.5%
OrderCirceBench.naiveStreet size=8 3,354.8 3,305.6 -1.5%
IsoBench.eoGet - 3.5 3.6 +1.5%
PlatedBench.mUniverseExpr n=512 160,898.4 163,190.5 +1.4%
OrderCirceBench.eoNamesIor size=8 4,582.4 4,647.5 +1.4%
OptionalBench.mModify_6 - 123.3 121.6 -1.4%
OptionalBench.mModify_0_empty - 1.4 1.4 -1.4%
MultiFocusBench.eoModify_powerEach size=256 8,440.8 8,556.8 +1.4%
OrderAvroBench.monocleModifyStreet size=8 991.9 978.3 -1.4%
OptionalBench.mModify_loyalty_empty - 1.4 1.5 +1.3%
PowerSeriesNestedBench.monocle_nested size=64 8,788.1 8,669.8 -1.3%
ZioDiBench.eoServiceReplace - 82.1 81.0 -1.3%
AvroVulcanBench.encode_bridged - 265.7 269.2 +1.3%
PlatedBench.visitorTransformDeep n=512 4,867.9 4,932.2 +1.3%
PowerSeriesPrismBench.naive_sparse size=2048 5,035.7 5,102.1 +1.3%
AffineFoldBench.eoGetOption_loyalty_empty - 1.1 1.0 -1.3%
OpticBuildBench.reuseUse - 1,072.5 1,086.4 +1.3%
OrderJsoniterBench.eoSumPrices size=64 10,441.5 10,576.1 +1.3%
JsoniterBench.cSumPrices size=8 6,344.3 6,262.8 -1.3%
TraversalBench.mModify size=64 1,758.5 1,736.0 -1.3%
CompositionBench.buildLensOptional3 - 18.4 18.7 +1.3%
JsoniterBench.cModifyId size=8 8,807.7 8,697.7 -1.2%
OrderJsoniterBench.naiveModifyStreet size=512 166,153.3 164,095.5 -1.2%
OrderCirceBench.directStreet size=512 1,058.7 1,071.6 +1.2%
PowerSeriesPrismBench.naive_sparse size=512 1,182.1 1,196.4 +1.2%
AvroVulcanBench.decode_bridged - 222.9 220.3 -1.2%
CapsBench.modifyDerivedPerCall - 4.6 4.5 -1.2%
AvroVulcanBench.decode_vulcanRaw - 215.9 218.4 +1.1%
OrderJsoniterBench.naiveModifyStreet size=8 3,267.2 3,304.7 +1.1%
PlatedBench.visitorTransformExpr n=4096 64,860.9 64,119.2 -1.1%
MultiFocusBench.eoModify_powerEach size=1024 35,587.9 35,182.7 -1.1%
PrismBench.mRightReverseGet - 2.5 2.5 -1.1%
OrderCirceBench.naiveStreet size=64 22,244.8 21,994.5 -1.1%
MultiFocusBench.naive_listMap size=256 2,089.1 2,065.6 -1.1%
MultiFocusCollectBench.naive_constSum - 1.8 1.7 -1.1%
OrderAvroBench.naiveModifyNames size=64 8,965.9 8,868.7 -1.1%
PowerSeriesPrismBench.monocle_sparse size=32 1,062.6 1,051.2 -1.1%
JsoniterBench.cReplaceId size=8 8,680.5 8,772.8 +1.1%
OrderJsoniterBench.nativeSumPrices size=64 8,136.2 8,050.9 -1.0%
AffineFoldBench.eoGetOption_0_empty - 0.9 0.9 +1.0%
SetterBench.eoModify_0 - 2.4 2.4 -1.0%
ZioDiBench.handDrillModify - 105.8 106.9 +1.0%
CapsBench.modifyDeepCap - 29.8 30.1 +1.0%
SchemesBench.eoHylo - 85,318.1 86,190.2 +1.0%
MultiFocusCollectBench.eoCollectMap_constSum - 2.1 2.1 +1.0%
SchemesBench.eoCata - 78,171.8 78,944.0 +1.0%
MultiFocusBench.naive_listMap size=1024 8,230.6 8,150.0 -1.0%
AffineFoldBench.mGetOption_6 - 24.4 24.7 +1.0%
OrderCirceBench.eoStreetIor size=64 1,082.3 1,092.7 +1.0%
JsoniterBench.cReadId size=64 26,711.3 26,964.4 +0.9%
JsoniterBench.cReplaceId size=64 53,037.8 52,544.1 -0.9%
OrderAvroBench.naiveReadStreet size=8 514.6 510.0 -0.9%
JsoniterBench.jSumPrices size=64 10,521.0 10,425.5 -0.9%
PlatedBench.eoUniverseExpr n=64 1,842.8 1,859.3 +0.9%
OrderJsoniterBench.monocleModifyStreet size=8 3,247.7 3,276.5 +0.9%
IsoBench.eoReverseGet - 3.0 3.0 -0.9%
OrderCirceBench.monocleStreet size=512 186,018.1 187,654.1 +0.9%
GenericsBench.rawLensGet - 0.6 0.6 +0.9%
GetterBench.eoGet_orderId - 0.9 0.9 +0.9%
PowerSeriesNestedBench.eoModify_nested size=1024 73,236.1 73,859.4 +0.9%
OrderJsoniterBench.nativeReadStreet size=8 845.3 838.1 -0.9%
JsoniterBench.cModifyId size=512 416,820.7 420,220.3 +0.8%
OrderAvroBench.monocleReadStreet size=8 520.2 516.0 -0.8%
OrderAvroBench.naiveModifyStreet size=64 7,277.6 7,219.7 -0.8%
OptionalBench.eoModify_loyalty_empty - 1.3 1.3 +0.8%
OrderCirceBench.monocleNames size=8 3,787.1 3,817.1 +0.8%
CapsBench.getDeepDirect - 1.5 1.5 -0.8%
CapsBench.modifyDirect - 3.9 3.9 -0.8%
OrderCirceBench.eoStreetIor size=8 1,114.3 1,105.8 -0.8%
PlatedBench.eoTransformExpr n=4096 132,153.5 131,142.1 -0.8%
OrderJsoniterBench.naiveReadStreet size=512 92,192.1 92,894.0 +0.8%
SchemesBench.eoAna - 105,910.6 106,702.7 +0.7%
PlatedBench.visitorTransformDeep n=4096 41,749.2 41,437.4 -0.7%
OrderJsoniterBench.naiveModifyStreet size=64 20,109.7 20,258.5 +0.7%
OrderJsoniterBench.naiveReadStreet size=64 11,687.9 11,774.0 +0.7%
MultiFocusCollectBench.eoCollectList_listSum - 67.1 67.6 +0.7%
OrderJsoniterBench.naiveSumPrices size=64 12,565.8 12,474.2 -0.7%
PlatedBench.mUniverseJson n=512 206,896.6 205,393.3 -0.7%
ReviewBench.eoReverseGet_0 - 2.7 2.6 -0.7%
PowerSeriesBench.eoModify_powerEach size=64 839.1 833.0 -0.7%
OptionalBench.eoModify_6 - 146.3 147.3 +0.7%
OrderCirceBench.hcursorStreet size=8 1,121.7 1,129.8 +0.7%
PowerSeriesBench.monocle_powerEach size=1024 59,885.7 59,457.0 -0.7%
GenericsBench.rawLensModify - 2.2 2.2 +0.7%
MultiFocusBench.eoFold_powerEach size=256 3,468.5 3,444.0 -0.7%
OptionalBench.mModify_loyalty - 16.6 16.7 +0.7%
OrderAvroBench.naiveModifyStreet size=8 989.8 983.1 -0.7%
OptionalBench.mModify_0 - 21.5 21.7 +0.7%
TraversalBench.mFoldPrices size=512 31,482.3 31,271.0 -0.7%
GetterBench.eoGet_0 - 0.9 0.9 -0.7%
PowerSeriesNestedBench.naive_nested size=256 5,315.4 5,280.4 -0.7%
GenericsBench.genPrismModifyMiss - 1.2 1.3 +0.7%
CompositionBench.reuseLensOptional3 - 58.0 58.3 +0.6%
FoldBench.eoFoldPrices size=512 2,755.3 2,772.8 +0.6%
PlatedBench.visitorUniverseJson n=64 2,041.4 2,028.5 -0.6%
PlatedBench.mTransformExpr n=512 15,618.4 15,519.9 -0.6%
PowerSeriesNestedBench.monocle_nested size=256 92,572.2 91,990.6 -0.6%
JsoniterBench.cModifyId size=64 52,938.6 52,606.6 -0.6%
PrismBench.mReverseGet - 2.5 2.5 -0.6%
LensBench.mGet - 1.3 1.3 -0.6%
CapsBench.getCap - 1.2 1.3 +0.6%
LensBench.mReplace - 3.3 3.3 -0.6%
PowerSeriesPrismBench.monocle_sparse size=8 331.3 329.2 -0.6%
AffineFoldBench.mGetOption_0 - 0.9 0.9 -0.6%
AffineFoldBench.mGetOption_0_empty - 0.9 0.9 +0.6%
OrderJsoniterBench.monocleReadStreet size=8 1,896.7 1,885.2 -0.6%
PlatedBench.eoUniverseDeep n=64 1,909.5 1,898.0 -0.6%
GenericsBench.rawPrismGetHit - 1.7 1.7 +0.6%
ZioDiBench.handServiceReplace - 88.9 89.5 +0.6%
PlatedBench.eoUniverseDeep n=512 14,740.6 14,654.7 -0.6%
LensBench.mModifyDeep - 31.1 31.0 -0.6%
LensBench.eoModify - 3.9 3.9 +0.6%
OrderCirceBench.hcursorNames size=64 30,689.1 30,862.6 +0.6%
IsoBench.mReverseGet - 3.1 3.1 -0.6%
JsoniterBench.jMiss size=512 172.3 173.3 +0.5%
GetterBench.mGet_orderId - 0.5 0.5 -0.5%
PowerSeriesPrismBench.eoModify_sparse size=32 360.4 358.4 -0.5%
SchemesBench.drosteCata - 39,334.8 39,120.7 -0.5%
PowerSeriesBench.eoModify_powerEach size=256 3,158.4 3,141.2 -0.5%
PlatedBench.eoUniverseDeep n=4096 99,180.3 98,642.4 -0.5%
PlatedBench.visitorUniverseExpr n=64 814.2 818.6 +0.5%
AffineFoldBench.eoGetOption_0_asAffineFold - 0.9 0.9 +0.5%
OptionalBench.eoModify_loyalty - 16.3 16.4 +0.5%
OrderJsoniterBench.nativeReadStreet size=512 34,900.3 35,085.7 +0.5%
MultiFocusBench.naive_listMap size=4 33.4 33.3 -0.5%
OrderAvroBench.naiveModifyNames size=8 1,154.7 1,160.7 +0.5%
PlatedBench.mTransformExpr n=4096 168,958.7 169,826.0 +0.5%
PrismBench.eoRightReverseGet - 2.5 2.4 -0.5%
PlatedBench.eoUniverseExpr n=512 14,356.1 14,282.8 -0.5%
KyoDiBench.eoMapDrillModify - 40.6 40.4 -0.5%
OrderJsoniterBench.eoReadStreet size=8 206.7 205.7 -0.5%
OrderCirceBench.hcursorNames size=8 4,197.9 4,176.7 -0.5%
PrismBench.mGetOptionPresent - 1.1 1.1 +0.5%
OrderCirceBench.naiveNames size=64 23,958.0 23,845.2 -0.5%
SchemesBench.handCata - 12,963.9 13,024.7 +0.5%
OrderAvroBench.monocleModifyNames size=8 1,471.2 1,464.3 -0.5%
ZioDiBench.handServiceGet - 14.9 14.8 -0.5%
PowerSeriesBench.monocle_powerEach size=4 266.1 264.9 -0.5%
SetterBench.mModify_0 - 2.4 2.4 -0.4%
PowerSeriesPrismBench.naive_sparse size=32 83.2 83.5 +0.4%
JsoniterBench.cSumPrices size=64 42,679.9 42,866.7 +0.4%
PowerSeriesBench.eoModify_powerEach size=1024 13,011.9 13,068.5 +0.4%
GetterBench.eoGet_6 - 35.0 34.9 -0.4%
OrderJsoniterBench.monocleModifyStreet size=512 163,498.5 164,204.2 +0.4%
CapsBench.getDerivedPerCall - 1.7 1.7 -0.4%
SchemesBench.drosteHylo - 64,867.2 64,589.1 -0.4%
TraversalBench.eoFoldNested size=512 5,373.7 5,350.7 -0.4%
OrderCirceBench.directNames size=64 32,115.2 32,251.0 +0.4%
OrderCirceBench.monocleStreet size=64 22,446.6 22,352.0 -0.4%
GenericsBench.genPrismGetMiss - 1.2 1.2 +0.4%
SchemesBench.drosteAna - 48,311.9 48,110.2 -0.4%
OptionalBench.eoReplace_loyalty - 7.5 7.5 +0.4%
SetterBench.eoModify_orderId - 3.1 3.1 -0.4%
ReviewBench.naiveBuild_3 - 6.5 6.5 -0.4%
FoldBench.mFoldPrices size=512 2,773.5 2,784.9 +0.4%
OrderJsoniterBench.monocleSumPrices size=512 445,787.8 447,601.3 +0.4%
PrismBench.mGetRightAbsent - 1.2 1.2 +0.4%
OptionalBench.mModify_3 - 71.9 72.2 +0.4%
FoldBench.eoFoldPrices size=64 349.0 347.6 -0.4%
OrderAvroBench.eoModifyNames size=8 601.4 599.0 -0.4%
MultiFocusBench.eoFold_powerEach size=1024 14,876.5 14,818.9 -0.4%
KyoDiBench.handMapDrillModify - 36.0 36.1 +0.4%
MultiFocusBench.eoModify_multiFocus size=256 11,647.5 11,692.4 +0.4%
OptionalBench.mReplace_loyalty - 7.2 7.2 +0.4%
OrderJsoniterBench.naiveReadStreet size=8 1,885.3 1,878.2 -0.4%
LensBench.eoModifyDeep - 34.0 33.8 -0.4%
GenericsBench.handPrismGetMiss - 1.1 1.1 -0.4%
PowerSeriesNestedBench.naive_nested size=4 126.0 126.5 +0.4%
PrismBench.mGetOptionAbsent - 1.1 1.1 +0.4%
AvroBytesBench.eoGraftPayload - 160.0 160.6 +0.4%
OrderAvroBench.eoModifyStreet size=512 120.8 121.2 +0.4%
PlatedBench.visitorUniverseDeep n=64 829.0 826.0 -0.4%
PowerSeriesPrismBench.eoModify_sparse size=128 1,359.6 1,354.8 -0.4%
PowerSeriesPrismBench.naive_sparse size=8 25.2 25.2 +0.4%
CompositionBench.buildLens3 - 20.4 20.5 +0.4%
PowerSeriesPrismBench.naive_sparse size=128 322.8 323.9 +0.3%
PowerSeriesNestedBench.naive_nested size=16 374.8 373.6 -0.3%
PlatedBench.visitorTransformExpr n=64 986.7 983.3 -0.3%
PlatedBench.eoUniverseJson n=64 3,350.5 3,339.2 -0.3%
TraversalBench.eoModify size=8 96.9 96.6 -0.3%
OrderJsoniterBench.monocleReadStreet size=64 11,728.1 11,689.5 -0.3%
AffineFoldBench.eoGetOption_0 - 0.9 0.9 +0.3%
CapsBench.foldMapCap - 22.3 22.2 -0.3%
TraversalBench.mModify size=512 33,551.2 33,658.2 +0.3%
OrderJsoniterBench.eoSumPrices size=512 82,677.1 82,933.8 +0.3%
OrderAvroBench.monocleModifyStreet size=64 7,276.8 7,254.3 -0.3%
TraversalBench.eoModify size=64 863.6 860.9 -0.3%
GetterBench.mGet_0 - 0.5 0.5 +0.3%
PlatedBench.eoUniverseJson n=512 27,300.6 27,383.9 +0.3%
PowerSeriesBench.naive_powerEach size=4096 18,214.8 18,270.4 +0.3%
FoldBench.mFoldMap size=8 22.6 22.7 +0.3%
OrderJsoniterBench.eoModifyStreet size=64 641.2 643.2 +0.3%
OrderJsoniterBench.nativeReadStreet size=64 4,484.7 4,471.2 -0.3%
PlatedBench.eoTransformDeep n=512 11,832.9 11,868.0 +0.3%
OrderAvroBench.monocleModifyNames size=512 101,592.4 101,889.9 +0.3%
MultiFocusCollectBench.eoModify_multiFocusTuple3 - 17.1 17.1 +0.3%
OrderJsoniterBench.monocleModifyStreet size=64 20,020.2 19,963.3 -0.3%
OrderAvroBench.naiveModifyNames size=512 69,380.4 69,576.6 +0.3%
GenericsBench.handPrismGetHit - 2.0 2.0 +0.3%
PrismBench.eoGetOptionAbsent - 0.9 0.9 +0.3%
ReviewBench.naiveBuild_6 - 10.7 10.7 -0.3%
GenericsBench.rawPrismModifyHit - 2.1 2.2 +0.3%
OpticBuildBench.build - 46.2 46.1 -0.3%
PlatedBench.visitorUniverseJson n=512 21,229.6 21,172.9 -0.3%
FoldBench.eoFoldPrices size=8 44.0 43.9 -0.3%
FoldBench.mFoldPrices size=64 349.6 350.6 +0.3%
OptionalBench.eoReplace_0 - 4.6 4.6 +0.3%
GenericsBench.genPrismModifyHit - 2.9 3.0 +0.3%
OrderAvroBench.naiveReadStreet size=64 4,406.4 4,395.2 -0.3%
GenericsBench.handPrismModifyMiss - 1.1 1.1 +0.3%
PlatedBench.visitorUniverseDeep n=512 7,244.3 7,226.3 -0.2%
MultiFocusBench.naive_sumQty size=256 795.6 793.6 -0.2%
GenericsBench.genLensGet - 1.1 1.1 -0.2%
AffineFoldBench.eoGetOption_0_asOptional - 2.3 2.3 +0.2%
GenericsBench.genPrismGetHit - 2.1 2.1 -0.2%
PlatedBench.eoTransformExpr n=512 16,297.8 16,336.5 +0.2%
OrderJsoniterBench.naiveSumPrices size=512 97,881.5 98,113.2 +0.2%
AvroVulcanBench.rootGet_native - 177.7 177.3 -0.2%
PlatedBench.eoUniverseJson n=4096 234,389.5 233,849.3 -0.2%
JsoniterBench.jReadId size=512 35.6 35.5 -0.2%
SetterBench.mModify_orderId - 3.1 3.1 -0.2%
OrderCirceBench.hcursorStreet size=64 1,134.8 1,132.3 -0.2%
PowerSeriesPrismBench.eoModify_sparse size=2048 23,221.7 23,271.5 +0.2%
CapsBench.modifyDerivedHeld - 5.3 5.3 -0.2%
AffineFoldBench.mGetOption_loyalty - 1.0 1.0 +0.2%
AffineFoldBench.eoGetOption_loyalty - 1.1 1.1 +0.2%
GetterBench.eoGet_3 - 16.3 16.3 -0.2%
PlatedBench.eoTransformDeep n=64 1,441.4 1,438.5 -0.2%
OptionalBench.eoModify_0 - 21.8 21.8 +0.2%
CapsBench.getDirect - 1.1 1.1 -0.2%
PowerSeriesBench.monocle_powerEach size=16 634.7 633.5 -0.2%
OrderJsoniterBench.nativeSumPrices size=8 1,201.4 1,199.1 -0.2%
KyoDiBench.handEnvUse - 60.5 60.6 +0.2%
LensBench.mModify - 4.3 4.3 -0.2%
AffineFoldBench.mGetOption_3 - 9.7 9.7 -0.2%
MultiFocusCollectBench.eoModify_multiFocusTuple6 - 28.8 28.7 -0.2%
FoldBench.mFoldPrices size=8 44.3 44.2 -0.2%
OrderAvroBench.monocleReadStreet size=64 4,395.1 4,386.9 -0.2%
PrismBench.eoReverseGet - 2.4 2.4 +0.2%
CapsBench.getDeepCap - 1.6 1.6 +0.2%
OrderAvroBench.monocleModifyNames size=64 10,386.3 10,368.4 -0.2%
PowerSeriesNestedBench.naive_nested size=64 1,321.1 1,323.3 +0.2%
TraversalBench.eoFoldPrices size=64 350.6 351.2 +0.2%
MultiFocusBench.naive_sumQty size=32 65.7 65.6 -0.2%
SetterBench.eoModify_6 - 26.5 26.5 -0.2%
ZioDiBench.eoDrillModify - 114.2 114.0 -0.2%
PlatedBench.visitorUniverseDeep n=4096 58,806.1 58,899.5 +0.2%
CompositionBench.buildLens6 - 37.0 36.9 -0.2%
OrderAvroBench.monocleReadStreet size=512 34,426.5 34,477.8 +0.1%
AffineFoldBench.mGetOption_loyalty_empty - 1.0 1.0 +0.1%
ReviewBench.eoReverseGet_3 - 19.9 19.9 -0.1%
CapsBench.modifyDeepDirect - 33.8 33.8 -0.1%
CompositionBench.buildLens1 - 5.2 5.2 +0.1%
IsoBench.mGet - 3.7 3.7 +0.1%
AffineFoldBench.eoGetOption_3 - 14.7 14.7 +0.1%
PowerSeriesBench.naive_powerEach size=64 396.2 395.7 -0.1%
PowerSeriesNestedBench.eoModify_nested size=64 4,787.0 4,793.6 +0.1%
OptionalBench.eoModify_3 - 58.3 58.2 -0.1%
PowerSeriesNestedBench.naive_nested size=1024 19,835.1 19,861.4 +0.1%
PowerSeriesBench.naive_powerEach size=4 26.3 26.3 -0.1%
ZioDiBench.eoServiceGet - 5.1 5.1 +0.1%
GenericsBench.handLensModify - 2.8 2.8 +0.1%
CapsBench.foldMapDerivedHeld - 22.3 22.3 -0.1%
PlatedBench.visitorTransformDeep n=64 428.8 428.3 -0.1%
MultiFocusBench.naive_listMap size=32 249.0 249.3 +0.1%
CompositionBench.reuseLens3 - 45.7 45.8 +0.1%
OrderAvroBench.eoModifyNames size=64 4,144.1 4,139.1 -0.1%
PrismBench.eoGetRightAbsent - 1.1 1.1 -0.1%
ReviewBench.eoReverseGet_6 - 34.5 34.6 +0.1%
SetterBench.mModify_3 - 28.3 28.2 -0.1%
PowerSeriesBench.naive_powerEach size=256 1,627.2 1,625.4 -0.1%
FoldBench.eoFoldMap size=8 21.1 21.1 -0.1%
LensBench.eoGet - 1.1 1.1 -0.1%
PrismBench.mGetRightPresent - 2.4 2.4 -0.1%
OrderAvroBench.monocleModifyStreet size=512 56,133.0 56,186.9 +0.1%
TraversalBench.eoFoldNested size=64 545.9 546.4 +0.1%
PowerSeriesNestedBench.monocle_nested size=1024 249,361.4 249,136.4 -0.1%
KyoDiBench.handMapGet - 2.2 2.2 -0.1%
PlatedBench.visitorUniverseExpr n=4096 53,529.1 53,481.2 -0.1%
CapsBench.foldMapDirect - 21.2 21.2 -0.1%
CompositionBench.reuseLens6 - 130.8 130.7 -0.1%
OptionalBench.eoModify_0_empty - 1.2 1.2 -0.1%
MultiFocusBench.eoFold_powerEach size=4 87.2 87.3 +0.1%
MultiFocusBench.eoModify_powerEach size=32 1,045.8 1,045.1 -0.1%
JsoniterBench.jModifyId size=8 110.0 110.1 +0.1%
CompositionBench.reuseLeaf - 3.0 3.0 +0.1%
KyoDiBench.eoMapGet - 2.8 2.8 -0.1%
OrderJsoniterBench.naiveSumPrices size=8 1,981.5 1,982.8 +0.1%
ReviewBench.naiveBuild_0 - 2.2 2.2 +0.1%
MultiFocusCollectBench.naive_zipMeanBroadcast - 166.4 166.5 +0.1%
MultiFocusBench.naive_sumQty size=1024 4,388.6 4,386.3 -0.1%
JsoniterBench.cReplaceId size=512 417,973.0 418,187.2 +0.1%
TraversalBench.mFoldPrices size=8 344.6 344.4 -0.1%
OrderJsoniterBench.monocleReadStreet size=512 93,189.6 93,147.6 -0.0%
PrismBench.eoGetRightPresent - 2.3 2.3 -0.0%
JsoniterBench.cReadId size=512 205,112.3 205,191.8 +0.0%
PowerSeriesBench.monocle_powerEach size=256 21,914.6 21,922.7 +0.0%
CapsBench.foldMapDerivedPerCall - 21.7 21.7 -0.0%
FoldBench.eoFoldMap size=64 371.2 371.1 -0.0%
CapsBench.modifyCap - 4.2 4.2 -0.0%
AffineFoldBench.eoGetOption_6 - 32.6 32.6 +0.0%
MultiFocusBench.naive_sumQty size=4 7.5 7.5 +0.0%
PowerSeriesBench.naive_powerEach size=1024 5,153.4 5,152.5 -0.0%
GenericsBench.handLensGet - 1.1 1.1 +0.0%
GenericsBench.genLensModify - 3.6 3.6 +0.0%
OrderAvroBench.eoReadStreet size=512 38.2 38.2 -0.0%
PrismBench.eoGetOptionPresent - 1.0 1.0 +0.0%

base_sha: ad30b87ce2171fdc815fc72e8cb6e4eba6c988d7 · head_sha: 97ecf3f12bce3e3de6ae3c4c51b52dc6ece39b58 · jdk: temurin-21 · runner: ubuntu-22.04 · jmh_params: -i 3 -wi 2 -f 1 -t 1 -foe true -prof gc -rf json · profile: pr:-i3-wi2-f1-t1-gc

@kryptt
kryptt merged commit 052becc into main Sep 18, 2026
16 checks passed
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