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.
Unable to display preview. Download preview PDF.
- 1.S. Peyton Jones and J. Hughes et al. Report on the programming language Haskell 98. University of Yale, 1999. http://www.haskell.org/definition/
- 2.M. J. Plasmeijer and M. C. J. D. van Eekelen. Functional Programming and Parallel Graph Rewriting. Addison Wesley, 1993.Google Scholar
- 3.M. van Eekelen and R. Plasmeijer. Concurrent CLEAN Language Report (version 2.0, draft). University of Nijmegen, December 2001. http://www.cs.kun.nl/~clean.
- 5.M. Pil. Dynamic Types and Type Dependent Functions. In T. Davie K. Hammond and C. Clack, editors, Proceedings of the 10th International Workshop on the Implementation of Functional Languages, volume 1595 of Lecture Notes in Computer Science, pages 171–188. Springer-Verlag, 1998.Google Scholar
- 6.M. Vervoort and R. Plasmeijer. Lazy Dynamic Input/Output in the Lazy Functional Language Clean. In R. Peña and T. Arts, editors, Proceedings of the 14th International Workshop on the Implementation of Functional Languages, Lecture Notes in Computer Science. Springer-Verlag, 2002.Google Scholar
- 7.E.G.J.M.H. Nocker, J.E.W. Smetsers, M.C.J.D. van Eekelen, and M.J. Plasmeijer. Concurrent Clean. In E.H.L. Aarts, J. van Leeuwen, and M. Rem, editors, PARLE’ 91: Parallel Architectures and Languages Europe, Volume II, volume 506 of Lecture Notes in Computer Science, pages 202–219. Springer, 1991.Google Scholar
- 8.M. Wand. Continuation-Based Multiprocessing. In J. Allen, editor, Conference Record of the 1980 LISP Conference, pages 19–28, Palo Alto, CA, 1980. The Lisp Company.Google Scholar
- 9.K. Claessen. A Poor Man’s Concurrency Monad. Journal of Functional Programming, 9, May 1999.Google Scholar
- 10.S. Peyton Jones, A. Gordon, and S. Finne. Concurrent Haskell. In Conference Record of POPL’ 96: The 23 rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 295–308, St. Petersburg Beach, Florida, 21–24 1996.Google Scholar
- 11.S. Marlow, S.L. Peyton Jones, A. Moran, and J.H. Reppy. Asynchronous Exceptions in Haskell. In SIGPLAN Conference on Programming Language Design and Implementation, pages 274–285, 2001.Google Scholar
- 12.V. Stolz and F. Huch. Implementation of Port-based Distributed Haskell, 2001. http://www-i2.informatik.rwth-aachen.de/Research/distributedHaskell/ifl.2001.ps.gz
- 13.F. Huch and U. Norbisrath. Distributed Programming in Haskell with Ports. In M. Mohnen and P.W.M. Koopman, editors, Implementation of Functional Languages, 12th International Workshop, IFL 2000, volume 2011 of Lecture Notes in Computer Science, pages 107–121. Springer, September 2000.CrossRefGoogle Scholar
- 14.E.C. Cooper and J.G. Morrisett. Adding Threads to Standard ML. Technical Report CMU-CS-90-186, Pittsburgh, PA, 1990.Google Scholar
- 15.A.C. Lin. Implementing Concurrency For An ML-based Operating System. PhD thesis, Massachusetts Institute of Technology, February 1998.Google Scholar
- 16.J. Armstrong, R. Virding, C. Wikström, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, second edition, 1996.Google Scholar
- 17.G. Back, P. Wullmann, L. Stoller, W. C. Hsieh, and J. Lepreau. Java Operating Systems: Design and Implementation. Technical Report UUCS-98-015, 6, 1998.Google Scholar
- 18.O. Shivers. A Scheme Shell. Technical Report MIT/LCS/TR-635, 1994.Google Scholar
- 19.P. Haahr and B. Rakitzis. Es: A shell with higher-order functions. In USENIX Winter, pages 51–60, 1993.Google Scholar