Unix, Plan 9 and the Lurking Smalltalk

High-level programming languages and their virtual machines have long aspired to erase operating systems from view. Starting from Dan Ingalls’ Smalltalk-inspired position that “an operating system is a collection of things that don’t fit inside a language; there shouldn’t be one”, I contrast the ambitions and trajectories of Smalltalk with those of Unix and its descendents, exploring why Ingalls’s vision appears not (yet) to have materialised. Firstly, I trace the trajectory of Unix’s “file” abstraction into Plan 9 and beyond, noting how its logical extrapolation suggests a surprisingly Smalltalk-like end-point. Secondly, I note how various reflection and debugging features of Smalltalk have many analogues in the fragmented world of Unix programming. Finally, I consider how these two directions of change may yet be convergent within future Unix-derived systems, and what this might mean for programming languages.

[1]  Timothy Roscoe,et al.  CLANGER: an interpreted systems programming language , 1995, OPSR.

[2]  Qin Zhao,et al.  Transparent dynamic instrumentation , 2012, VEE '12.

[3]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[4]  Dawson R. Engler,et al.  Exterminate all operating system abstractions , 1995, Proceedings 5th Workshop on Hot Topics in Operating Systems (HotOS-V).

[5]  Daniel H. H. Ingalls,et al.  Design Principles Behind Smalltalk , 2006 .

[6]  Alexander Galloway,et al.  Protocol, or, How Control Exists after Decentralization , 2001 .

[7]  D. Orr,et al.  Mach: a foundation for open systems (operating systems) , 1989, Proceedings of the Second Workshop on Workstation Operating Systems.

[8]  Ken Thompson,et al.  The UNIX time-sharing system , 1974, CACM.

[9]  Gilad Bracha,et al.  Mirrors: design principles for meta-level facilities of object-oriented programming languages , 2004, OOPSLA.

[10]  Jonathan Aldrich,et al.  The power of interoperability: why objects are inevitable , 2013, Onward!.

[11]  Larry Rudolph,et al.  How to Do a Million Watchpoints: Efficient Debugging Using Dynamic Instrumentation , 2008, CC.

[12]  Thomas A. Cargill Pi: a case study in object-oriented programming , 1986, OOPSLA 1986.

[13]  John Maloney,et al.  Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself , 1997 .

[14]  Manuel Oriol,et al.  Practical dynamic software updating for C , 2006, PLDI '06.

[15]  William R. Cook On understanding data abstraction, revisited , 2009, OOPSLA 2009.

[16]  Marcel Schelvis,et al.  The Implementation of a Distributed Smalltalk , 1988, ECOOP.

[17]  Robin Fairbairns,et al.  The Design and Implementation of an Operating System to Support Distributed Multimedia Applications , 1996, IEEE J. Sel. Areas Commun..

[18]  Steve R. Kleiman,et al.  Vnodes: An Architecture for Multiple File System Types in Sun UNIX , 1986, USENIX Summer.

[19]  Joseph Moran,et al.  Virtual Memory Architecture in SunOS , 1999 .

[20]  Yannis Smaragdakis Layered Development with (Unix) Dynamic Libraries , 2002, ICSR.

[21]  Brian W. Kernighan,et al.  The UNIX™ programming environment , 1979, Softw. Pract. Exp..

[22]  Emin Gün Sirer,et al.  SPIN—an extensible microkernel for application-specific operating system services , 1995, OPSR.

[23]  Christophe de Dinechin C++ exception handling , 2000, IEEE Concurr..

[24]  Peter B. Kessler,et al.  Fast breakpoints: design and implementation , 1990, SIGP.

[25]  Stephen Kell,et al.  Component adaptation and assembly using interface relations , 2010, OOPSLA.

[26]  Alan C. Kay The early history of Smalltalk , 1993, HOPL-II.

[27]  Simson L. Garfinkel,et al.  The Unix-Haters Handbook , 1994 .

[28]  Dennis M. Ritchie The UNIX system: The evolution of the UNIX time-sharing system , 1984, AT&T Bell Lab. Tech. J..

[29]  H. Zimmermann,et al.  OSI Reference Model - The ISO Model of Architecture for Open Systems Interconnection , 1980, IEEE Transactions on Communications.

[30]  Dale Dougherty sed and awk , 1990 .

[31]  Roger Faulkner,et al.  The Process File System and Process Model in UNIX System V , 1991, USENIX Winter.

[32]  Dennis Ritchie,et al.  The development of the C language , 1993, HOPL-II.

[33]  Deepak Gupta,et al.  TIED, LibsafePlus: Tools for Runtime Buffer Overflow Protection , 2004, USENIX Security Symposium.

[34]  Oscar Naim,et al.  MDL: a language and compiler for dynamic program instrumentation , 1997, Proceedings 1997 International Conference on Parallel Architectures and Compilation Techniques.

[35]  James R. Larus,et al.  Singularity: rethinking the software stack , 2007, OPSR.

[36]  Ken Thompson,et al.  Plan 9 from Bell Labs , 1995 .

[37]  Kristis Makris Whole-program dynamic software updating , 2009 .