[squeak-dev] Faster FileStream experiments

David T. Lewis lewis at mail.msen.com
Fri Nov 27 16:03:16 UTC 2009


On Thu, Nov 26, 2009 at 08:56:08PM -0800, Colin Putney wrote:
> 
> I've been thinking about this too. For Filesystem, I've only  
> implemented very basic stream functionality so far. But I do intend to  
> develop its stream functionality further, and to go in a very  
> different direction from the existing design. Some design elements:
> 
> - Using handles to decouple the streams from the storage they're  
> operating on. The same stream class should be able to read or write to  
> collections, sockets, files etc.

I implemented IOHandle for this, see http://wiki.squeak.org/squeak/996.
I have not maintained it since about 2003, but the idea is straightforward.
My purpose at that time was to :

  * Separate the representation of external IO channels from the represention
    of streams and communication protocols.
  * Provide a uniform representation of IO channels similar to the unix notion
    of treating everything as a 'file'.
  * Simplify future refactoring of Socket and FileStream.
  * Provide a place for handling asynchronous IO events. Refer to the aio
    handling in the unix VM. Files, Sockets, and AsyncFiles could (should) use
    a common IO event handling mechanism (aio event signaling a Smalltalk Semaphore). 

Since that time I added aio event handling for file (AioPlugin, see
http://wiki.squeak.org/squeak/3384), which is a layer on top of Ian's
aio event handling in the unix and OS X VMx that which is mainly useful
for handling unix pipes. But I still think that a more unified view
of "handles for IO channels" is a good idea. The completely separate
representation of files and sockets in Squeak still feels wrong to me,
maybe just because I am accustomed to unix systems.

Dave




More information about the Squeak-dev mailing list