In a potentially memory constrained environment, I need to portably (across sbcl and ccl at least) process a potentially large (multiple GiB) stream of bytes output from a Linux command. For the curious, "process" here means encrypt with a block cipher and push to the network; whereas the UNIX command is the output of "btrfs send".
I wanted to confirm with ASDF developers that as far as I can tell from wrangling with UIOP:RUN-PROGRAM, it isn't going to do what I want because there is no "asynchronous" mode. UIOP:RUN-PROGRAM cannot be "run in the background" like SBCL's SB-EXT:RUN-PROGRAM with :wait nil that allows the output of the sub-process to be gathered and processed in blocks. So, it would always be the case that UIOP/RUN-PROGRAM::SLURP-INPUT-STREAM has "gone through" all the (potentially huge) output of the sub-process before UIOP:RUN-PROGRAM can return.
Yes, UIOP:RUN-PROGRAM is synchronous. For an asynchronous and portable function I suggest IOLIB/OS:CREATE-PROCESS.