Re: Patches that will come...
[email protected] (Nicholas Clark) Sat, 28 Aug 2004 15:35:42 +0100
| Newsgroups | perl.ponie.dev |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Aug 23, 2004 at 09:22:07AM +0200, [email protected] wrote: > > > 1) creating a Ponie::Parrot that allows access to Parrot internals from Ponie: > > > 2) allows building Ponie PMCs inside Ponie source tree, without putting > > > them in parrot/classes > > > 4) allows calling from Perl to Parrot (only plain subroutines, objects to come) > > > Is the current roadmap somewhere? Are there any plans I should > know of before re-starting coding? Sorry about the delay in responding. My time and energy is getting sucked up by the insides of work code, leaving little for anything perl related. (eg observe the progress on 5.8.6). The ponie hours bank is building up a good balance, but I'm not sure when I'll be able to withdraw it. :-( The roadmap *currently* looks like this draft: ------------------------------------------------------------------------------ 1: Data (about 3 months?) Dynamic PMCs Data structure rearranging into something sane for PMCs (from perl5 layout) Full PMC hierarchy Refcounting => GC Convert arrays,pads,hashes,stashes to something native PMC 2: Magic tie overload other (%ENV, %SIG etc) 3: Simplify ops (Perl5 ops have a lot of logic in them. Parrot puts the logic into vtables So need to migrate the perl5 logic into the perl5 PMCs) together 3 months? Might be better to do 3 before 2, except that I think we need overloading done the parrot way before we can usefully simplify ops. 3: Runloop. Migrate the runloop from perl5 ops to parrot ops, and therefore to parrot bytecode. We think that this actually doesn't need a huge prior knowledge of the perl core, as it is relatively self contained. 3 months? So as 3+3+3 == 12, we can get this done in a year. This gets us to a ponie that can run perl5 as parrot bytecode. Said bytecode would be generated by perl, probably by a custom B module walking the perl optree. eval would be messy. Slow, but functional. What next? Convert perl parser to emit bytecode directly (or PIR, or Leo's AST stuff) 3 months? Unify IO with parrot's IO 3 months? Replace regexps with however perl6 is doing perl5 compatibility regexps. (What's the plan for how perl5 compatibility regexps are implemented by perl6?) I think that these 3 are sufficiently independent that they can be done in parallel. Until then, I'm not sure how easy it is to parallelise any tasks. ------------------------------------------------------------------------------ The problem I find is that quite often I start work on the first logical task and then discover something important that I've missed, or didn't know needed doing. And because of this it's very difficult to parallelise tasks on the main line. The patch you say you have to allow building of dynamic PMCs in place would be very useful (as it's at the top of the list). The calling from parrot to perl and back doesn't sit on that roadmap, but I think is actually useful (and won't rapidly get thrown away, which is always my fear for the fate of other people's work) because it will make ponie far more useful for people to start experimenting with parrot, parrot assembler and other things in parrot. And ponie being useful will lead to interest, which is never bad :-) I'm not sure how the array stuff fits in - my problem is that it might rapidly become irrelevant when the refcounting/GC mess is resolved. I don't think that parrot has a make install target yet does it? ponie doesn't have one, because parrot didn't. What ponie also can't currently do is build on Win32. I don't have access to any Win32 machine with a compiler, and even if I did I don't have the knowledge of how Windows development works to get things done correctly, so unfortunately this is stalled. Steve Hay had a valiant attempt at making it work, but it got the better of him. [mmm, I'm really good at selling this, aren't I? :-)] As I see it the other things that parallelise nicely, won't be wasted effort, and give quick benefits are actually a: working on fixing parrot bugs, improving parrot portability and filling out the bits of parrot currently missing b: contributing tests to the Phalanx Project. (which ultimately will act as a large acceptance test suite for ponie) c: Testing ponie with whatever modules you use, particularly XS based modules, and particularly modules that aren't on CPAN. Problem with (c) right now is that it would really help if ponie had an install target. Nicholas Clark