/*
 * "Interpreter" that you can put in #! like this
 *   #!/usr/bin/prefork-interp [<options>] <interpreter>
 * to amortise the startup time of a script.
 *
 * Usages:
 *   prefork-interp  [<option> ..] <interpreter>  [<script> [<args> ...]]
 *   prefork-interp  [<option>,..],<interpreter>   <script> [<args> ...]
 *   prefork-interp '[<option> ..] <interpreter>'  <script> [<args> ...]
 *
 * The script must load a corresponding library (eg Proc::Prefork::Interp
 * for Perl) and call its preform_initialisation_complete routine.
 *
 * Options must specify argument/environment mediation approach.
 * Currently the only args/env mediation supported is:
 *
 *   -U    unlaundered: setup and executor both get all arguments and env vars
 *         ident covers only env vars specified with -E
 *         ident covers only two arguments: interpreter and (if present) script
 *
 * Options for setting the operation mode:
 *
 *   (none)     Default: start new server if needed, then run service
 *   -f         Force a fresh service (old one is terminated)
 *   --kill     Kill any existing service; do not actually run anything
 *
 * Options for controlling whether different invocations share a server:
 *
 *   -E VAR      ident includes env var VAR (or its absence)
 *   -G STRING   ident includes string STRING
 *   -g IDENT    use IDENT rather than hex(SHA256(... identity things ...))
 *
 * (Ordering of -E and -G options is relevant; invocations with different
 * -E -G options are different even if the env var settings are the same)
 */
