ccgo: add -compact-data flag with design document (phase 2 planning)
Summary
Phase 2 planning for issue #46: compact constant scalar arrays via //go:embed.
This MR establishes the CLI surface and provides a detailed design document
for the feature. No functional implementation is included — the -compact-data
flag is parsed but inert.
Changes
v4/lib/ccgo.go — -compact-data flag
- Added
compactData uint32field toTaskstruct -compact-data(boolean) enables compaction with default threshold 256-compact-data=1024sets a custom threshold
docs/phase2-compact-data.md — Design document
Covers all aspects cznic raised in the issue discussion:
- Eligibility: const, scalar arrays above threshold
- Alignment:
init()copy vsruntime.BytesAligned(Go 1.24+) - Mutability: conservative
constcheck - Endianness: target endian
.binfiles - Build workflow: ccgo generates
.go+.binsimultaneously - Step-by-step implementation plan (4 steps)
Next steps after this MR is accepted
- Implement binary writer utilities
- Modify
initializerArrayto detect eligibility and emit embed form - Test with tree-sitter grammars
- Document the feature
Refs: #46