If the problem is simply "implement Common Lisp special variables", then
the most likely solution is to create a LispSpecialVar PMC. In the same
way that a MultiSub acts like a sub but internally stores a list of
subs, the LispSpecialVar would act like an ordinary variable to Parrot
internals and to all other languages, but would internally store a stack
of previous dynamic bindings.
Likewise, the behavior at the point when a PMC is shared across threads
is determined by the 'share' and 'share_ro' vtable functions, and so
easily implemented within a LispSpecialVar PMC.
Allison