Today's Hacking

chromatic on 2002-05-03T04:49:08

With Test::MockObject on the CPAN, I've released a new version of Text::WikiFormat. The main enhancement is a custom import(), spurred on by a request from Tony Bowden. That's one five week-old project finally off my plate.

At work, I've added a nifty new navigation feature to the product catalogs. In the process, I merged the administrative and end-user lists as far as was reasonable. (More was possible, but there's diminishing returns -- the further I go, the more I'll have to revise.) I'm still in negative lines of code for the week, though.

Seeing that Simon has released new versions of B::Generate and B::Utils, and that multiple people have asked about B::ToXML and B::FromXML (see prior journal entries), it's time to devote more attention to the problem. I can serialize bytecode to XML with no problem. I'm pretty sure it captures the relevant information (at least, everything available through B.pm). I'm pretty sure it's generating the correct opcodes, though some of the optimizations may be getting in my way. (When a LISTOP has been flattened into a NOP, but still has children, I get confused.) I seem to be able to attach the ops in the right order and can splice them into a fresh anonymous sub, but they confuse both the interpreter and B::Deparse... So I get infinite loops when running the spliced sub and strange output from deparsing it.

There's something I'm missing, and it may take a really scary guru to find it.


Where can I get....

rafael on 2002-05-03T07:38:03

... B::(To|From)XML ? I'm not a "scary" guru, but it may be fun to look at. (Are you testing those with bleadperl ? O and B have been improved since 5.6.1.)

Scary Guru At Your Service

Simon on 2002-05-03T07:58:31

I wrote B::XML last year at OSCon as a futile attempt to use XSLT for processing abstract syntax trees to convert between languages.

Re:Where can I get....

chromatic on 2002-05-03T14:44:57

Hmm, I had the same idea as Simon, several months later. My version of B::ToXML and xmltwigtoperl.pl are both available from my site.

I've been using bleadperl to test these, and I think I patched B::Generate to add next() to B::COP objects, but I'm not completely certain at the moment.