A Guided Tour through Smalltalk/X

Claus Gittinger

Abstract

At first sight, Smalltalk/X looks very similar to other Smalltalk implementations. Both its internal class libraries and externally visible tools look familiar to every smalltalker. As such, it allows for the traditional way of developing "in the system" using browsers, debuggers, images etc. However, Smallalk/X also supports a "batch compilation" system, which generates deployable applications using file-based tools like source code managers, make, command-line compilers and shell scripts. This batch compiler generates C-code as intermediate representation. By allowing inline C-code, primitives are very easy to write, tightly integrated and located in the class libraries instead of the VM. Bytecode, jitted- and precompiled code coexist and can be dynamically changed at any time. Inline C-code can even be written and "accepted" in the browser. The Smalltalk/X IDE itself is bootstraped and compiled using that very same mechanism. Therefore, it contains a mix of byte-code, which is jitted when first executed, and precompiled machine code, which comes from statically compiled dynamic link libraries. The later can - like any other dll - be reused among multiple applications. To the programmer, there is no noticable difference between jitted bytecode and shared dll machine code. To the user, it looks like a prefilled jitter code cache. This presentation consists of a walk through the system, following a typical development path of a simple demo application. The demonstration includes creation of a GUI in the UI-Painter tool, debugging the logic in the browser, generation of deployable packages and offline building using make and other file based tools. Implementation details about the garbage collector mechnisms, inline- and polymorphic message caches, stack context handling and the limitations of C as target language will be covered and explained.

Bio

Claus Gittinger is the original author of the Smalltalk/X environment. For many years, he has been consulting numerous companies in the areas of IT-strategy, architecture, development and quality improvement. His project experience covers almost everything from wafer stepper architecture planning to stock option trading and bank security on the other end. He is one of the co-founders of eXept Software AG, which uses Smalltalk/X as its main and only platform for product development. Products include the expecco test-execution and expeccoNET test-automation tools. Smalltalk/X is free, even for commercial work. In his free time, Claus teaches advanced dynamic language implementation at the HDM Stuttgart, plays with Smalltalk and Scheme, and tries to find some time for his wife and kids.

Slides

None (Demo)

Video

Part 1: http://youtu.be/_lOI6crzOmg

Part 2: http://youtu.be/5JWZfwm0wNU