NAME
   PerlX::AsyncAwait - async/await keywords in pure perl

EXPERIMENTAL
   This is batshit crazy, even for mst. No warranty, express or implied.

SYNOPSIS
   First recommendation:

     use Future::AsyncAwait; # instead

   because it's XS and does suspend/resume properly and will perform
   better.

   This module, on the other hand, is an attempt to make it all work in
   pure perl, by rewriting your code into a .pmc file that contains extra
   code to handle suspend/resume at the pure perl level. Which is great if
   you want fatpacking or support for older perls, but not the best
   solution otherwise.

   That said:

     use PerlX::Generator::Runtime;
     use PerlX::Generator::Compiler;

     my $f = async_do {
       ...
       await some_future_returning_function();
       ...
       return ...;
     };

     my $result = $loop->await($f);

     my $sub = async_sub {
       ...
       await some_future_returning_function($_[0]);
       ...
       return ...;
     };

     my $result = $loop->await($sub->(...));

   This will result in a .pmc file that depends only on
   PerlX::AsyncAwait::Runtime. See the examples/ directory for what the
   results end up looking like. Note that the order is important, you
   *must* use the runtime *before* the compiler or weirdness will ensue.

   Note that since the .pmc does not require the compiler, on the author
   side you will need to depend on Module::Compile directly.

DESCRIPTION
   There should be details here but I'm shipping this now so the YAPC::EU
   crowd can play with it.

LIMITATIONS
   We rewrite "foreach" into a 3-arg "for" so you *can* await inside a
   foreach loop.

   We do not handle 'local' in any way shape or form that. I'll add that
   later.

AUTHOR
    mst - Matt S. Trout (cpan:MSTROUT) <[email protected]>

CONTRIBUTORS
   None yet - maybe this software is perfect! (ahahahahahahahahaha)

COPYRIGHT
   Copyright (c) 2017 the PerlX::AsyncAwait "AUTHOR" and "CONTRIBUTORS" as
   listed above.

LICENSE
   This library is free software and may be distributed under the same
   terms as perl itself.