It currently has lots of platform-specific code for creating the child process, getting handles and so on. Some of that is inevitable, but could be reduced by making it depend on glib, or moving it into the porting layer.