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 uint32 field to Task struct
  • -compact-data (boolean) enables compaction with default threshold 256
  • -compact-data=1024 sets a custom threshold

docs/phase2-compact-data.md — Design document

Covers all aspects cznic raised in the issue discussion:

  1. Eligibility: const, scalar arrays above threshold
  2. Alignment: init() copy vs runtime.BytesAligned (Go 1.24+)
  3. Mutability: conservative const check
  4. Endianness: target endian .bin files
  5. Build workflow: ccgo generates .go + .bin simultaneously
  6. Step-by-step implementation plan (4 steps)

Next steps after this MR is accepted

  1. Implement binary writer utilities
  2. Modify initializerArray to detect eligibility and emit embed form
  3. Test with tree-sitter grammars
  4. Document the feature

Refs: #46

Merge request reports

Loading