There exist two ways of launching processes: one is forking them with fork or vfork and replacing the clone with exec-family function, another is spawning process directly with procedures like posix_spawn. Not all platforms implement fork model, and spawn model has its own merits.
pkgsrc relies heavily on launching subprocesses when building software. NetBSD posix_spawn support was implemented in GSoC 2011, it is included in NetBSD 6.0. Now that NetBSD supports both ways, it would be nice to compare the efficiency of both ways of launching subprocesses and measure its effect when using pkgsrc (both in user and developer mode). In order to accomplish that, the following tools should support posix_spawn:
- NetBSD base make
- NetBSD sh
- NetBSD base ksh
- potentially some other tools (e.g. lang/nawk, shells/bash, lang/perl5)
Optionally, MinGW spawn support can be added as well.
The main goal of this project is to support starting processes and subprocesses by posix_spawn in devel/bmake and in shells/pdksh, measure its efficiency and compare it to traditional fork+exec.