Conversation
This branch has not been deployed
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.
StructUtils.make(Matrix{String}, [["a", "b"], ["c"]])currently returns an array with an unassigned cell. Shape discovery uses the first nested branch, and bounds checks cannot detect cells omitted by later branches.Track initialized cells during multidimensional
makeconstruction and reject incomplete coverage before returning the new array. Preserve reordered/repeated integer keys, ragged vector-valued leaves, collapsed singleton axes, and partial updates of existing arrays. Use dimension-specialized tuple indices to avoid the existing dynamic-splat allocations.For a warmed 32×32 integer matrix, total allocations change from 74,080 to 8,784 bytes. An indexing-only control allocates 8,480 bytes: the coverage check adds 304 bytes. The check allocates one bit per element and scans that bitmap once; it does not traverse the source again.
Validation: 68 focused checks pass with bounds checks disabled; Julia 1.9.4 passed 679 checks including its expected trim skip; Julia 1.12.7 passed all 678 ordinary checks. Independent review passed 13 further controls. The local Julia 1.12 trim executable compiled but became stuck in macOS
UEstate and did not exit after termination; that run is blocked, not passed. Repository CI still runs the unchanged trim check.Draft/API boundary: this fixes
make(Type, source). The separatemake!(Type, source)path calls the publicinitializehook, then updates its result. Its default initializer can still leave cells unassigned for ragged input, while custom initializers can validly supply defaults for partial updates. Preserving that hook needs a separate initializer-contract decision; this PR does not claim to fix that entrypoint or change it silently. Existing-instancemake!stays unchanged. PR #76 independently covers fixed-size vectors.Co-authored by Codex