perf(global): cache prefix records, parallelize conda-meta parsing, fast trampoline check#6513
Draft
Hofer-Julian wants to merge 1 commit into
Draft
perf(global): cache prefix records, parallelize conda-meta parsing, fast trampoline check#6513Hofer-Julian wants to merge 1 commit into
Hofer-Julian wants to merge 1 commit into
Conversation
…ast trampoline check pixi global commands re-parsed every environment's conda-meta/*.json — tens of MBs of JSON for Python-sized environments — many times per invocation: the sync check, exposing executables, shortcuts and completions each triggered a full parse, plus one parse per direct dependency when looking up designated packages. - Cache the parsed prefix records per environment on Project, shared across clones and invalidated whenever the prefix is modified (install, environment removal, pruning, and menuinst rewrites). - Parse conda-meta records in parallel (rayon via Prefix::find_installed_packages) in find_package_records instead of reading them sequentially one file at a time, and reuse the project cache in the list commands so 'pixi global list' parses each environment once instead of twice. - Answer Trampoline::is_trampoline from file metadata in the common case: verify the shared trampoline binary against the embedded one once per process, then treat hard links to it as trampolines instead of reading and comparing the full ~1MB binary for every exposed executable on every sync. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UZeFV9B6ECmc43Rppj8G1U
Hofer-Julian
force-pushed
the
claude/pixi-performance-improvements-5vpepk
branch
from
July 3, 2026 13:11
0954921 to
16dc66f
Compare
Hofer-Julian
marked this pull request as draft
July 6, 2026 07:42
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
pixi global commands re-parsed every environment's conda-meta/*.json —
tens of MBs of JSON for Python-sized environments — many times per
invocation: the sync check, exposing executables, shortcuts and
completions each triggered a full parse, plus one parse per direct
dependency when looking up designated packages.
across clones and invalidated whenever the prefix is modified
(install, environment removal, pruning, and menuinst rewrites).
Prefix::find_installed_packages) in find_package_records instead of
reading them sequentially one file at a time, and reuse the project
cache in the list commands so 'pixi global list' parses each
environment once instead of twice.
case: verify the shared trampoline binary against the embedded one
once per process, then treat hard links to it as trampolines instead
of reading and comparing the full ~1MB binary for every exposed
executable on every sync.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01UZeFV9B6ECmc43Rppj8G1U