Firstly, by "bytecode" I mean a .pmc and by "optree" I mean the perl6 VM's internal form that it goes through executing. It seems to me that one thing that the perl6 bytecode implementation _should_ do (in the interests of being light and fast, as well as meshing well with MT) is be position-independant. What do I mean? That all direct references to SV*'s or regexes or anything else in the bytecode _and_ the optree should actually be handles of some sort. This has several benefits: 1. Bytecode can just be mmap'ed or read in, no playing around with relocations on loading or games with RVAs (which can't be used anyway, since variable RVAs vary based on what's been allocated or freed earlier). 2. (more importantly, IMHO) Bytecode and the optree are shareable between threads. My primary reason for opposing to the RFC proposing that modules must be reloaded in each thread is the immense amount of memory that would be wasted without bytecode/optree sharing. 3. With a good slab allocator and possibly some mprotect() calls (and a good OS) bytecode/optree suddenly becomes _completely_ shared between child processed. No more needing to restart httpd and mod_perl6 because the mixing of code and data has doubled the core usage of each process! I don't have the background to seriously argue implementation, but I might suggest a "handle table" of sorts which defines for each thread and CV which variable goes with which handle. This sort of ties in with my (vague) idea that CVs should carry around instructions for building their scratchpad, rather than the pad itself (IOW, scratchpads become purely part of the stack frame, rather than the subroutine's carrier variable). This is all for the purpose of reducing the required locking around subroutine calls to nil or almost nil (perhaps one to make sure that no-one's changed the subroutine out from under us via eval("*foo = \&bar;"); or the like). At any rate, I'm just spouting off ideas sparked by various recent discussions (I probably need a higher blood sugar or something). It's probably too early to seriously argue technical merits, but on the other hand, basic VM design can start before we know the precise grammar. -- BKS __________________________________________________ Do You Yahoo!? Yahoo! Messenger - Talk while you surf! It's FREE. http://im.yahoo.com/Thread Next