GC integration notes
====================

- All ordinary Shen runtime heap allocations use shen_malloc/shen_calloc/
  shen_realloc from src/c/gc_shim.h.
- With SHEN_USE_BDWGC, these map to GC_malloc/GC_realloc.
- shen_free is deliberately a no-op under GC: memory is reclaimed when it is
  unreachable, avoiding dangling references through conservative C structures.
- shen_gc_init() is called before Shen runtime initialization.
- khash allocation is routed through the same shim.
- BDWGC is compiled from extra/gc.c as the single-threaded collector because
  Shen-C is currently single-threaded.

Local validation performed in this development environment:
- Shen boots under the BDWGC build.
- Test suite excluding c-minus: 132/132 passed.
- Resident memory stayed below roughly 100 MB during that workload instead of
  growing into multiple GB.
- c-minus.shen also loaded successfully in the GC build.

Windows/TinyCC integration should be tested on the target Windows machine; the
Linux-side runtime behavior has been exercised, but this environment cannot
execute a Windows PE binary.
