Release validation source bytes after checks
This commit is contained in:
@@ -52,8 +52,11 @@ must close it when finished. The shared validation executor closes its tree on
|
||||
every return before product checks or build callbacks run. A metadata-only
|
||||
selection never starts the reader. Per-read contexts cancel an in-flight blob
|
||||
exchange without tying the reader lifetime to a short-lived caller context.
|
||||
Until formatting and parsed-result reuse are in place, regular-file bytes stay
|
||||
cached by object ID for the lifetime of the tree.
|
||||
Regular-file reads return independent caller-owned byte slices and are not
|
||||
retained by the tree. Symlink targets are retained as immutable owned strings
|
||||
by blob object ID; explicitly reading a symlink still returns independent
|
||||
bytes. The Go-format check caches only whether each successfully inspected
|
||||
object is formatted, then reports every unformatted path that refers to it.
|
||||
|
||||
The internal Markdown parser uses Goldmark to record inline, reference, and
|
||||
autolinks, images, titles, and their source use sites, and to build heading
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Computational Efficiency Implementation Plan
|
||||
|
||||
**Status:** Stages 1–5 complete; Stages 6–11 pending.
|
||||
**Status:** Stages 1–6 complete; Stages 7–11 pending.
|
||||
|
||||
## Purpose And Baseline
|
||||
|
||||
@@ -359,6 +359,22 @@ buffers after formatting, and duplicate-content files retain per-path findings.
|
||||
Record the tradeoff for explicit repeated raw reads. Update validation mechanics
|
||||
with the new ownership and reuse choices.
|
||||
|
||||
**Completion:** Complete. Regular-file reads now return independent bytes and
|
||||
are not retained by `CandidateTree`; repeated explicit reads therefore transfer
|
||||
the blob again. The tree caches owned symlink-target strings by object ID, and
|
||||
explicit symlink reads still return independent byte slices. Go formatting
|
||||
caches only successful formatted/unformatted outcomes by object ID, checks
|
||||
cancellation per path, and reports every unformatted path even when contents
|
||||
repeat. Validation tests and the formatting/Markdown destination benchmarks
|
||||
passed. On the same Go 1.26.8, Git 2.53.0, Linux x86_64 Intel Core i5-7260U
|
||||
setup, three repetitions measured unique-file formatting at 75.0–75.9 ms loose
|
||||
and 37.9–42.5 ms packed, repeated-ID formatting at 1.97–2.17 ms, and the
|
||||
Markdown workload at 16.3–17.0 ms. Formatting used about 2.89 MB/op for unique
|
||||
files and 121 KB/op for repeated IDs. The retained-memory observation was
|
||||
129,496 bytes with the candidate and Markdown cache alive, compared with
|
||||
1,385,040–1,385,616 bytes in the baseline fixture. This retains Markdown parser
|
||||
data by path until Stage 7; it is a workload-specific heap observation.
|
||||
|
||||
## Stage 7: Reuse Owned Markdown And Module Results
|
||||
|
||||
**Owners:** [markdown.go](../../internal/validation/markdown.go),
|
||||
|
||||
Reference in New Issue
Block a user