Skip to content

Merge release 2.1.0 into 3.0.x - #230

Merged
DavidBadura merged 15 commits into
3.0.xfrom
2.1.x-merge-up-into-3.0.x_u28RGMLm
Oct 17, 2026
Merged

DavidBadura merged 15 commits into
3.0.xfrom
2.1.x-merge-up-into-3.0.x_u28RGMLm

Conversation

@github-actions

Copy link
Copy Markdown

Release Notes for 2.1.0

Feature release (minor)

2.1.0

  • Total issues resolved: 0
  • Total pull requests resolved: 4
  • Total contributors: 3

enhancement

documentation,enhancement

DavidBadura and others added 15 commits October 2, 2026 23:04
Properties can be assigned to groups with the new Groups attribute and
selected or excluded per call via the groups and ignored_groups context
keys. Filtering applies to extract and hydrate and is passed on to nested
objects.
The PSR-6 and PSR-16 metadata factories used the class name as cache key.
Class names contain a backslash, which is a reserved character in PSR-6 and
PSR-16, so the factories failed with any compliant cache like symfony/cache.
The class name is now hashed and prefixed, and a cache hit is only accepted
if the cached metadata really belongs to the requested class.

Unserialized metadata also missed some values, so metadata loaded from a
cache failed as soon as they were accessed: the class name of the class
metadata, and the property name, type and personal data fallback callable
of the property metadata.
Fix cache keys of the metadata factories
| datasource  | package                | from   | to     |
| ----------- | ---------------------- | ------ | ------ |
| github-tags | shivammathur/setup-php | 2.37.2 | 2.40.0 |


Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-2.0.x_rnicmz5Z

# Conflicts:
#	src/Metadata/ClassMetadata.php
#	src/Metadata/PropertyMetadata.php
#	tests/Unit/Metadata/ClassMetadataTest.php
The pull request comment shows one markdown table per benchmark class with
the base time, the current time and the difference, instead of the raw
console output in a collapsed block.

phpbench runs 5 iterations with opcache enabled and the JIT disabled, and
asserts that no benchmark gets more than 25% slower than the base. The job
fails after the comment was written if one does.

The single object benchmarks run 1000 revs, the 1,000,000 object benchmarks
are removed, they took most of the time and measure the same per object as
the 1000 object benchmarks. HydratorBench and HydratorWithCryptographyBench
were copies of the StackHydrator benchmarks and are removed,
HydratorWithLazyBench is renamed to StackHydratorWithLazyBench.
Show the benchmark results as markdown tables and fail on regressions
Adds a concurrency group to the CI workflows, so a new push to a pull
request or branch cancels the runs still going for the previous commit
instead of letting them finish for nothing. It uses the same group the
app repositories already have (github.workflow plus head_ref || ref),
so pull requests and branches never cancel each other. Release, notify
and docs deploy workflows are left as they are.
Follow-up to the concurrency groups added in the last pull request.
They used the workflow name plus the branch name, which lets two
workflows with the same name cancel each other on the same branch, and
two fork pull requests with the same branch name (e.g. patch-1) cancel
each other. github.workflow_ref is the workflow file plus the ref
(refs/pull/<number>/merge for pull requests) and has neither problem.
Use workflow_ref for the concurrency groups
…3.0.x_u28RGMLm

The groups extension is left out of 3.0.x for now. It filtered the metadata
before passing it on in the stack, which the mapper chain of 3.0 no longer
allows, so it needs a different approach there.

The generated benchmarks follow the benchmark changes of 2.1.x: 1000 revs
for the single object benchmarks and no 1,000,000 object benchmarks.
@github-actions

Copy link
Copy Markdown
Author

Hello 👋

Here are the most recent benchmark results, compared against 3.0.x. Time is the mode over the iterations in the its column, with the relative standard deviation in brackets.

GeneratedHydrator

subject revs its memory base current diff
benchHydrate1Object 1000 5 1.855mb -64.34% 1.200μs (±0.00%) 0.622μs (±1.84%) -48.19%
benchExtract1Object 1000 5 1.855mb -64.34% 1.000μs (±0.00%) 0.680μs (±0.93%) -31.99%
benchHydrate1000Objects 3 5 1.855mb -64.34% 663.667μs (±0.00%) 610.241μs (±10.20%) -8.05%
benchExtract1000Objects 3 5 1.855mb -64.34% 379.667μs (±0.00%) 364.130μs (±2.05%) -4.09%

StackHydrator

subject revs its memory base current diff
benchHydrate1Object 1000 5 1.855mb -62.95% 2.000μs (±0.00%) 1.185μs (±1.04%) -40.75%
benchExtract1Object 1000 5 1.855mb -62.95% 2.200μs (±0.00%) 1.497μs (±1.66%) -31.97%
benchHydrate1000Objects 3 5 1.855mb -62.95% 1.315ms (±0.00%) 1.156ms (±0.50%) -12.10%
benchExtract1000Objects 3 5 1.855mb -62.95% 1.180ms (±0.00%) 1.106ms (±1.17%) -6.23%

StackHydratorWithLazy

subject revs its memory base current diff
benchHydrate1Object 1000 5 1.855mb 0.246μs (±2.60%)
benchHydrate1ObjectTriggerInit 1000 5 1.855mb 1.632μs (±0.89%)
benchHydrate1000Objects 3 5 1.855mb 241.453μs (±1.17%)
benchHydrate1000ObjectsTriggerInit 3 5 1.855mb 1.627ms (±0.25%)

StackHydratorWithCryptography

subject revs its memory base current diff
benchHydrate1Object 1000 5 1.855mb -63.82% 4.000μs (±0.00%) 1.903μs (±0.60%) -52.43%
benchExtract1Object 1000 5 1.855mb -63.82% 9.400μs (±0.00%) 5.890μs (±0.61%) -37.34%
benchHydrate1000Objects 3 5 1.855mb -63.82% 2.064ms (±0.00%) 1.869ms (±1.62%) -9.41%
benchExtract1000Objects 3 5 1.855mb -63.82% 5.586ms (±0.00%) 5.521ms (±0.89%) -1.17%

GeneratedHydratorWithCryptography

subject revs its memory base current diff
benchHydrate1Object 1000 5 1.855mb -65.07% 3.000μs (±0.00%) 1.286μs (±0.61%) -57.13%
benchExtract1Object 1000 5 1.855mb -65.07% 11.200μs (±0.00%) 5.078μs (±0.50%) -54.66%
benchHydrate1000Objects 3 5 1.855mb -65.07% 1.357ms (±0.00%) 1.272ms (±2.14%) -6.27%
benchExtract1000Objects 3 5 1.855mb -65.07% 4.754ms (±0.00%) 4.652ms (±0.40%) -2.15%

This comment gets updated every time a new commit comes in.

@DavidBadura
DavidBadura merged commit 54ac222 into 3.0.x Oct 17, 2026
16 of 17 checks passed
@DavidBadura
DavidBadura deleted the 2.1.x-merge-up-into-3.0.x_u28RGMLm branch October 17, 2026 21:09
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.

2 participants