**@yglukhov** I have to say, that I do agree with your pull request. a nil string should be NULL when converted to a cstring. I think the problem here is, that values of type string can be of no string at all (nil), and functions can be implemented that nil is a totally valid argument. I think for those functions c functions that support this behaviour, there should be the least amount of surprises (nil to NULL/nullptr conversion). Hopefully at some point in time strings are not nil but empty by default, but that is another issue on its own.
**@Ward** the string is internally a pointer to something like this `struct NimString{ size_t length; char data[length]; };`. The cstring conversion currently just returns a pointer to data.