p2 progress

I announced that I want to parse 50% of the perl5 syntax within this summer with p2. I think this goal is doable.

The last weeks since YAPC I spent most of my p2 time integrating libuv as external "aio" module. This implements asynchronous non-blocking IO and rudimentary cross-platform process support. libuv is essentially the node.js backend library, and MoarVM stated its goal to switch from apr to libuv also.

I needed libuv before the p5 syntax to check the ability to do fast and easy library bindings with lots of callbacks, and without a FFI yet. This gives me now the feeling how the FFI should be implemented, and if the current post-XS API is good enough or lacks some API support from core. As it turned out only some class (=type)/OO features needed to be added to the public potion API, the p2 backend. Everything else went smooth. I also fixed some more core bugs on my way.

I only added a rudimentary testcase, open a TCP connection with a connect callback, nothing realistic so far.

The libuv documentation is here: http://nikhilm.github.io/uvbook/index.html

The p2 aio binding is documented here in the doxygen docs and the htags API reference.

Now I continue where I left off at YAPC, where I added BEGIN block support: The expression parser, method and function calls, and global symbols.

Leave a comment

About Reini Urban

user-pic Working at cPanel on B::C (the perl-compiler), p2, types, parrot, B::Generate, cygwin perl and more guts (LLVM, jit, optimizations).