I guess I wasn't clear in my description of the patch; sorry about that.But it seems to me that the only major issue is the inability to provide zero-byte terminators with this new representation.
If external Python extension modules are as well-behaved as the shipping Python source tree, there simply wouldn't be a problem. Python source is delightfully consistent about using the macro PyString_AS_STRING() to get at the creamy char *center of a PyStringObject *. When code religiously uses that macro (or calls PyString_AsString() directly), all it needs is a recompile with the current stringobject.h and it will Just Work.If there were any reliable way to make sure these objects never got passed to extension modules then I'd say "go for it".