Small strings (up to 3 bytes on 32-bit, up to 7 bytes on 64-bin) can be represented as 'immediates' of struct Lisp_String, without allocating data separately. I observed two usage scenarios (editing with a few tens of buffers and long byte-force-recompile runs), and in both cases ~10% of live strings are less than 4 bytes long, and ~30% of live strings are less than 8 bytes long. So I think it's worth playing with such a little complication. Dmitry