> Interesting, so in general this should probably malloc a sockaddr_un with the header + entire length of the CString

That's mostly right.  There's still an upper limit that's lower than PATH_MAX, I think it's usually 256 or 1024 bytes, but you could leave it to the user to deal with that.

> Taking a look at the libuv implementation, it looks like the requested path is truncated to sizeof(s.sun_path) (just for comparison). Do you know if that was intentional or "just because"?

Pretty much just because, I'm afraid.  I wrote libuv's initial pipes implementation under time pressure with the idea of coming back to it once long paths started becoming an issue.  But it never became an issue and there were always more critical bugs to squash so yeah...