I thought the point of vfork is that they do not share an address space. But there are other things still shared and they should really just have a CreateProcess.
the posix_spawn mentioned in the article is effectively the equivalent of CreateProcess
In Solaris/Illumos it uses vfork() or vforkx().
In principle posix_spawn() can be a system call.