Experiment at optimizing the DWARF debug section parsers in the Crystal stdlib.
See crystal-lang/crystal#17120
A notable change is the use of scanners that avoid memory allocations instead of parsers that pre-parse everything and require lots of time and memory.
The final goal is to have a better implementation and more optimized tables, and a more efficient model overall, that consumes less CPU and RAM usage for the overall cases (dev or release, with/out full debug info).
The final implementation might keep the index tables (faster lookup, but slow to build), or dynamically lookup into the DWARF sections (no build, slow lookup) with a LRU cache (faster repeated lookups), or even adding a compilation step to inject the tables into the executable (no build, fast lookups).
Requires Crystal 1.21-dev or later.