Saturday, August 15, 2009

A Fractured Collarbone

Whilst not directly related to Snowflake, my fractured collarbone has given me a lot of free time with very little to occupy it.  So after downloading a whole bunch of tools and deleting some music to make way for the installation of a Linux virtual machine, I now have a small development environment for Snowflake.

And now that I have everything I need to hack away on Snowflake again, I have to wonder what I should work on, what may interest me enough to get some fresh code cooked and committed.

I got Snowflake built with Ubuntu and gcc 4.x, booted the ISO image in VirtualBox, and mucked about in the extremely limited command interpreter.  Then I got to thinking that I need to start investigating what I will do about making processes, or at least something akin to processes.

One thought I’ve always had floating around is typed processes—like a function is typed in O’Caml.  Of course, this could get complicated if a program/process were to have complex types as inputs and outputs, such as records, sums, objects, and phantom types.

Then there is also the need to build a proper device/driver interface, with a file system becoming increasingly necessary.  Lastly, a hard think about how I/O will work is needed—everything is just so haphazard and likely inefficient.

The other big problem is the heavy use of locking; and these locks aren’t light-weight either.  I’m fairly certain most of my performance woes, if not all, are being caused by my excessive use of the Mutex and Condition interfaces.  Instead, extremely lightweight locks are needed, with the addition of atomic semantics within O’Caml itself.

So much to think about.  So much to plan.  So much to rewrite.  So much to throw out.  So much to create.

No comments:

Post a Comment