Repository navigation
Conversation
Yakwilik
marked this pull request as ready for review
October 26, 2026 01:33
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.
Problem
Large dependencies make generation spend most of its time traversing installed files and repeating metadata/symlink checks for every target. Cold dependency resolution also reads wide destination directories repeatedly and discards a completed snapshot before installation builds it again.
This fixes #245 and the reported slow
easyp get googleapissnapshot phase.Changes
h1, the lock format and snapshot contents unchanged. A fresh cache handle verifies installed contents again; explicitVerifyCachedalways bypasses the in-memory result. Tidy independently rechecks contents before rewriting imports, including repository wrappers without the optional verifier..spec.A newly published snapshot does not receive a persistent verification stamp from a hash computed before publication. Only the verifier with matching before/after fingerprints writes that stamp.
Measurements
Linux, Go 1.26.6, googleapis commit
886464f687986b8b38392d83957a5a2ead4dcf71with 7,450 proto files. The Git source is local, excluding network time. Baseline is62fe940. These are indicative single-run CLI measurements, not Windows timing claims.get, separate empty EasyP cachesgenerate --all, 12 projects sharing googleapisEach generation project imports
google/type/date.proto, enables managed mode and exports descriptors with imports. All 12 output filenames and descriptor bytes are identical. Cold-get lockfiles are byte-identical.Validation
-race -count=1. The initial full run's three-minute timeout was too short for builtin WASM compilation ininternal/api; rerunning that package with-timeout=15mpassed (201.6 s, 321 passing test/subtest actions). Final source-index/core/generation regressions were rerun after the ordering adjustment.golangci-lint 2.14.0 run ./...: 0 issues.git diff --check: clean.Closes #245.