[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: io.popen read and write, again
- From: Sean Conner <sean@...>
- Date: Wed, 9 Jul 2014 17:27:34 -0400
It was thus said that the Great Jay Carlson once stated:
> On Feb 26, 2014 10:09 PM, "Sean Conner" <sean@conman.org> wrote:
> >
> > It was thus said that the Great Gary V. Vaughan once stated:
> > >
> > > Interestingly, the first version of this used luaposix to hook up the
> > > pipes, which required a lot more code and was considerable more hairy.
> > > But most of the overhead is in setting up the pipes, so for no noticeable
> > > speedup in execution and swapping a dependency on /bin/sh for a dependency
> > > on luaposix, I got to maintain all the low-level grungy pipe hookups
> > > instead of letting /bin/sh do the work.
> >
> > Actually, there is some stuff you can do. Like LPeg, you can create Unix
> > command objects [1] such that you could do:
> >
> > list = {}
> > cmd = U("ls -l") .. U("grep foobar") / "grep-stderr" .. function()
> > for line in io.lines() do
>
> For maximum fun, use a non-blocking io implementation. You can have
> arbitrary lua tasklets at any stage of the pipeline, I think.
Well, that was all theory, seeing how nobody has actually *implemented*
what I outlined.
But allowing arbitrary Lua coroutines (is that what you mean by
"tasklet"?) will be challenging to get right.
> > table.insert(list,line)
> > end
> > return 0
> > end
> > result = R(cmd) -- actually run the command
>
> Doesn't anybody call methods anymore?
Oh, you mean
result = cmd()
-spc