Enroute to recursive links, I found a few more natural improvements to Behold’s internals.
It’s interesting how Behold has progressed. The first 7 years involved developing a working program with an Everything Report the way I thought it would be needed. The next 3 years added all the user interface functions and features. All during that time, I had to design and redesign the data structure, puzzling over how to generalize it. Then I would find some non-standard GEDCOMs where it did not work right, and I’d have to add code or links to handle those exceptions. Needless to say, the structure got quite complicated and it was starting to get difficult for me to work with.
But a month ago, I had finally done it. I realized that I now had everything I needed in the data structure. It was fully capable of handling all generalities (I call it Extended GEDCOM) plus all the additional features I’m planning right up to version 2.1. So over the last month, I have been disassembling the guts of Behold one piece at a time, and putting those pieces where they really belong. Each is really a tiny piece, small enough that I can make the change without too much trouble and I can ensure that Behold still works correctly before going on to the next.
I love the feeling of spending an hour making and checking a change that amounts to about 20 lines of code, but results in a 5% improvement in execution time and/or memory. The engine now under Behold’s hood is almost twice as powerful as the last release 0.98.8 which you are using, and there’s still more to come.