First of all, there is a PHP backend‽ Second, isn't the usage of cstring for javascript wrappers an abuse of that type that already clearly says it's for C? For me cstring will continue to be nothing more than an alias type like this: type cstring {.unchecked.} = ptr array[0, char]
And I would truely be surprised if it would be anything else than only this and only this. And generally programmers don't like surprises. I would even go so far and say that cstring should only be defined when nim is on the c backend. But don't take my words on this too serious, since I don't have experience with the javascript backend, nor did I ever truely dig into the javascript world.