Towards a Strongly Typed Functional Operating System

In this paper, we present Famke. It is a prototype implementation of a strongly typed operating system written in Clean. Famke enables the creation and management of independent distributed Clean processes on a network of workstations. It uses Clean's dynamic type system and its dynamic linker to communicate values of any type, e.g. data, closures, and functions (i.e. compiled code), between running applications in a type safe way. Mobile processes can be implemented using Famke's ability to communicate functions. We have built an interactive shell on top of Famke that enables user interaction. The shell uses a functional-style command language that allows construction of new processes, and it type checks the command line before executing it. Famke's type safe run-time extensibility makes it a strongly typed operating system that can be tailored to a given situation.

[1]  Olin Shivers A Scheme shell , 1994 .

[2]  ThieleckeHayo Using a Continuation Twice and Its Implications for the Expressive Power of call/cc , 1999 .

[3]  Godmar Back Patrick Tullmann Leigh Stoller Wilson C. Hsie Lepreau Java Operating Systems : Design and Implementation , 1998 .

[4]  Martín Abadi,et al.  Dynamic typing in a statically-typed language , 1989, POPL '89.

[5]  Simon L. Peyton Jones,et al.  Concurrent Haskell , 1996, POPL '96.

[6]  Marinus J. Plasmeijer,et al.  Lazy Dynamic Input/Output in the Lazy Functional Language Clean , 2002, IFL.

[7]  Marko C. J. D. van Eekelen,et al.  Concurrent Clean , 1991, PARLE.

[8]  John Hughes,et al.  Report on the Programming Language Haskell 98 , 1999 .

[9]  Marco Pil Dynamic Types and Type Dependent Functions , 1998, IFL.

[10]  J. Gregory Morrisett,et al.  Adding threads to Standard ML , 1990 .

[11]  Volker Stolz,et al.  Implementation of Port-based Distributed Haskell , 2001 .

[12]  Rinus Plasmeijer,et al.  Concurrent Clean Language Report - version 1.3 , 1998 .

[13]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[14]  Simon L. Peyton Jones,et al.  Asynchronous exceptions in Haskell , 2001, PLDI '01.

[15]  Ulrich Norbisrath,et al.  Distributed Programming in Haskell with Ports , 2000, IFL.

[16]  Hayo Thielecke,et al.  Using a Continuation Twice and Its Implications for the Expressive Power of call/cc , 1999, High. Order Symb. Comput..

[17]  Mitchell Wand,et al.  Continuation-Based Multiprocessing , 1980, High. Order Symb. Comput..

[18]  Marko C. J. D. van Eekelen,et al.  Functional Programming and Parallel Graph Rewriting , 1993 .

[19]  Byron Rakitzis,et al.  Es: A shell with higher-order functions , 1993, USENIX Winter.

[20]  Albert C. Lin Implementing Concurrency For An ML-based Operating System , 1998 .

[21]  Koen Claessen,et al.  A poor man's concurrency monad , 1999, Journal of Functional Programming.