Skip to content

Copy inherited Composer fields shallowly when expanding (fork CI check) - #16

Closed
montehurd wants to merge 1 commit into
mainfrom
shallow-composer-expansion
Closed

montehurd wants to merge 1 commit into
mainfrom
shallow-composer-expansion

Conversation

@montehurd

Copy link
Copy Markdown
Owner

Draft PR inside the fork, only to run CI on this branch before proposing it upstream. Fork main is behind upstream, so the commit list is long; CI tests the branch merged onto it. Will be closed once CI finishes.

expandMinifiedVersions deep-copied every inherited field into every
version (b68184c) so that rewriting one version's dist URL in place
could not change the versions that inherited it. For a package with a
long history that means recursively copying require, autoload and the
rest hundreds of times per document, on every metadata request.

dist is the only field the proxy changes after expansion, so copy just
that: rewriteDistURL now gives the version its own dist map before
setting the URL, and expansion shares the other inherited values.
TestComposerExpandMinifiedSharedDistReferences still guards the original
bug, and fails if the copy in rewriteDistURL is removed.

On the symfony/console metadata from Packagist the rewritten output is
byte-identical, and the rewrite drops from about 20.7 ms to 13.8 ms,
with allocations down from 13.6 MB to 9 MB.
@montehurd montehurd closed this Oct 3, 2026
@montehurd montehurd reopened this Oct 3, 2026
@montehurd

Copy link
Copy Markdown
Owner Author

CI passed on all jobs; closing as planned. The change is going upstream.

@montehurd montehurd closed this Oct 3, 2026
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