I used the Elk 2.x series extensively in several engineering
applications I wrote for Ford Motor. It was a nice system in
general, but perl's XS (and guts documentation) was much better
than Elk's. One of the biggest problems with Elk is that it
has a scanning garbage collector, not a ref count collector, and
the traversal functions for C/C++ libraries are not easy to
write! For example, I ran into problems where Elk would collect
my Motif widgets (main windows, dialogs, etc.) because I didn't
keep Scheme references to all the widgets and Elk didn't have
a traversal function for widgets. I ended up writing widget
traversal and submitting a patch. Once the code was in place it
worked, but the code was ugly -- it had to use the *internal*
widget API rather than the portable external API.
When we put scanning garbage collectors into perl, we should
provide an alternative for foreign code.
Elk 3.0 doesn't seem to have changed the API much from 2.x.
What do you think makes it a "paragon" for implementation?
- Ken