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