Smalltalk in a C world

Smalltalk, in spite of myriad advantages in terms of ease of development, has been largely eclipsed by lower-level languages like C, which has become the lingua franca on modern systems. This paper introduces the Pragmatic Smalltalk compiler, which provides a dialect of Smalltalk that is designed from the ground up for close interoperability with C libraries. We describe how high-level Smalltalk language features are lowered to allow execution without a virtual machine, allowing Smalltalk and C code to be mixed in the same program without hard boundaries between the two. This allows incremental deployment of Smalltalk code in programs and libraries along with heavily optimised low-level C and assembly routines for performance critical segments.

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

[2]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[3]  Craig Chambers,et al.  Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches , 1991, ECOOP.

[4]  Todd Millstein,et al.  Experimenting with programming languages , 2009 .

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

[6]  Los Angeles,et al.  Experimenting with Programming Languages , 2009 .

[7]  Chris Lattner,et al.  LLVM: AN INFRASTRUCTURE FOR MULTI-STAGE OPTIMIZATION , 2000 .

[8]  David Chisnall A New Objective-C Runtime: from Research to Production , 2012, ACM Queue.

[9]  V. T. Rajan,et al.  A unified theory of garbage collection , 2004, OOPSLA '04.

[10]  David Chisnall A Modern Objective-C Runtime , 2009, J. Object Technol..

[11]  Mikael Pettersson,et al.  The development of the HiPE system: design and experience report , 2003, International Journal on Software Tools for Technology Transfer.

[12]  ChisnallDavid A new Objective-C runtime , 2012 .

[13]  V. T. Rajan,et al.  Concurrent Cycle Collection in Reference Counted Systems , 2001, ECOOP.

[14]  Alexandre Bergel Reconciling method overloading and dynamically typed scripting languages , 2011, Comput. Lang. Syst. Struct..

[15]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[16]  Daniel H. H. Ingalls,et al.  The Smalltalk-76 programming system design and implementation , 1978, POPL.