Ion as a Library
I'd like to be able to integrate Ion directly into my Parallel project, which needs to execute commands within a shell for each element processed (and an ability to even provide scripts as input elements), but that will require some work to get Ion suitable for use as a library, and separating the Binary logic from the Library logic. Namely, have a set of public library functions that would enable one to create a Shell
structure that writes to a different stderr and stdin FD, then returns something like IonResult(exit_status: Status, stdout: String, stderr: String)
when the shell returns.
Main reasoning for doing this versus executing ion as an external command is that this has a very high runtime cost for a program like Parallel, which tends to execute dozens, hundreds, or even thousands of inputs in parallel. Basically, ensuring that Parallel is the fastest implementation of GNU Parallel, under a permissive license.