Hi!

For a lower prio than SMP feature request I wish to suggest GC:able symbols.

This would be of use to enable processing of symbols from unsafe or otherwise unknown sources such as frequently is the case in SXML and many other more or less standardized formats.

Currently in such use the Gambit process tends to be susceptible to heap overflow possibility/attacks unless there's additional complexity in the form of separate marshalling code that limits symbol import to a pre-specified set only.

Very secondarily, an extreme variant of such "unsafe formats" would be some forms of untrusted or otherwise unknown code - for running any form of untrusted code in Gambit, symbols being GC:able would be a key enabler as they'd save the untrusted code handling mechanism of the need to implement symbols<->uninterned symbol conversion in a copying proxy on start and on any passing of values between trusted and untrusted code, and also save of any weird complexity such a proxy would impose on object reference equality, cyclical references support etc.

I completely understand that probably the default non-GC:ing quality of symbols is extremely well motivated for minimalism or technical reasons, however wanted to suggest this due to the huge practical use and unifying quality this feature would bring, then as a separate configurable option I guess.

If anyone has any thought on this topic feel free to share,

Best regards,
Mikael