home

Tue, 04 Oct 2005

Code archaeology

I got down to looking at the directory that holds my code checkouts the other day. There's a progression of version control software: CVS -> Arch -> Darcs; and several false starts (some without corresponding starts).

For example, there's PIJ, which amounts to the bare bones of a process-calculus based kernel in Java.

... All data implements Channel. The channel provides a process view of data. Most primitives (which are in turn just banged continuations hanging off ports) will access data directly rather than going via the process reflection. ...

Then, there's an implementation of join calculus (concurrency again!) with some syntax-case madness from TonyG, and a very simple scheduler from me.

  (define (scheduler-step continue)
  (and (not (queue-empty? *SCHEDULER-QUEUE*))
       (begin (call/cc
	       (lambda (k)
		 (set! stop! (lambda () (k 'dummy)))
		 (if (not (queue-empty? *SCHEDULER-QUEUE*))
		     ((queue-pop! *SCHEDULER-QUEUE*)))))
	      (and continue
		   (scheduler-step continue)))))

Then, Sake, which is supposed to be our answer to both Ant and Make but fails through lack of working ... anything. I do like the idea of it though.

Rather than being discouraged by all this unfinished, possibly abandoned code, I'm now feeling a little bit enthused about reviving, redeveloping, and redacting.

Top; this story; category (/geek/); permalink (CodeArchaeology).