An interned string is internally an int which is an index into a lookup table, which makes hashing and (non-lexicographic) comparison faster than for strings. The tradeoff is that converting an interned string to and from a string is slower, since they require table lookups instead of being no-ops.
Some notes on the implementation:
We don't fix the memory leak with weak pointers for performance reasons. See
jane/interns/ahuq/strint/README at revision b9a2b9dbf290.
sigval initial_table_size :