Hi all, I am doing some work on the IO system in the io_cleanups branch. I just got a big change committed (not perfect, failing a handful of tests that I need to track down), but I wanted to get some feedback on my method before I waste any more time on it.
What the branch does (in part) is separate out the low-level details (file descriptor, buffer) into a separate Handle PMC. FileHandle, Socket, and Pipe PMCs are free to include a Handle as an attribute and delegate to it. Handle is intended for internal use only and cannot be instantated or meaningfully used from PIR. The benefit to this approach, besides helping to encapsulate functionality that is shared between other PMCs is that FileHandles, Sockets, and Pipes (and anything else that uses this) should be closer to being properly subclassable from PIR. I'll try to post a better description of the current state of the branch onto the wiki so people can get familiar with it if they want. So, two questions that I would like input on: 1) Does this approach sound like a reasonable path forward? 2) Are there maybe any alternative approaches to resolving the subclassing problem that I should consider? Assuming this is a good approach, I would like to get some help: 1) Building parrot in the branch, and testing (once I get some failures tracked down) to verify that this works on all platforms. I changed some of the platform-specific code, so I need testing on Win32 and "portable" (non-unix) systems. 2) There are lots of opportunities now for cleanups, refactors, and optimizations, and I will be happy to help new hackers get started on this if they are interested. It should be a reasonably good way to get started hacking Parrot (I know several people here at YAPC have expressed interest in these kinds of opportunities). 3) start working on a merge so we can get this into trunk before 1.4 next month. Thanks, let me know fthere are any questions or feedback. --Andrew Whitworth _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
