[Python-Dev] Alternative implementation of interning
Fri, 16 Aug 2002 11:22:58 -0400
On Thu, Aug 15, 2002 at 12:46:25PM -0400, Tim Peters wrote:
> As the only person to have posted an example relying on this behavior, it's
> OK by me if that example breaks -- it was made up just to illustrate the
> possibility and raise a caution flag. I don't take it seriously.
In Python it's easier to just use the string so there is no real incentive
to use the id. I would say that making the result of the intern() builtin
mortal is probably safe.
The problem is in C extension modules. In C there is an incentive to rely
on the immortality of interned strings because it makes the code simpler.
There was an example of this in the Mac import code. PyString_InternInPlace
should probably create immortal interned strings for backward compatibility
(and deprecated, of course)
Maybe PyString_Intern should be renamed to PyString_InternReference to
make it more obvious that it modifies the pointer "in place".