Note that this change doesn't represent any sort of design suggestion
or decision: It merely represents an attempt to codify the
dependencies between the parts of the code base. There's still lots
of work to be done to actually make user-accessible modules.
opened by open-input-string could be closed by the GC before the exec().
Now << stores the port in a global variable.
The test to reveal the bug was:
(let lp ()
(run (head) (<< "a"))
(lp))
printing a "closed channel" message after some a few hundred interations.