I'm pondering whether it's sane to look at optrees and make statements about what external things they examine and what external things they modify. I'd like to know whether a function or block has side effects.
This has two purposes: the parallelization flamewar on perlmonks and deobfuscation. If I can tell what a piece of code depends on then I can decide whether to run it in a specific order or not. I've long wanted to have a lazy map and I know I get one in perl 6 but I'm impatient and I think I want to wait til I get a comfy workstation before I dive into it.
I think it'd also be super nifty to know that an expression or function or whatever is staticly defined and can be executed and eliminated during deobfuscation.
I'm thinking of just making a catalog of the things different ops read from and write to. Then a query is just asking what any given node cares about plus all of it's children. Simple, right?
I figure there's some ops I really just want to treat as blackboxes and it'd be easy to start things out that way as a default: everything is a blackbox til more information is added to the catalog.
I kind of doubt I'll post this to CPAN or even bother writing it. I have enough other things I haven't gotten to yet or synched with CPAN that I ought to do first before trying something new and likely to fail.