Not-so-foreign functions: Calling Ruby from Smalltalk

by Martin McClure


Most computing in a Smalltalk application is done either in Smalltalk code or by calling out to a "foreign function", typically in a C library. Since C is not object-oriented, interfacing it to Smalltalk can be a bit of work. However, there are many useful libraries in object-oriented languages such as Ruby, whose semantics are much closer to Smalltalk than to C. In the past, it has been even harder to make a call from Smalltalk to another O-O language than it has been to call a C function. Now that MagLev runs Ruby and Smalltalk in the same VM, this can become much simpler. In this talk we'll explore the current state of the art of using Ruby and Smalltalk together within MagLev.


Martin was first intrigued by Smalltalk 35 years ago. After a frustrating ten-year wait he finally got his hands on a running Smalltalk system and hasn't stopped since. As a senior engineer at the GemStone division of VMware, he leads a team that designs and implements a distributed object system that acts as a bridge between a Smalltalk client and a GemStone Smalltalk server. Other career highlights include developing embedded and robotic systems in FORTH and assembly language, data modeling and architecting a telecommunications order processing system, designing and prototyping embedded hardware, and touring with a high-tech juggling troupe. When he's not in front of a computer, he can often be found contra dancing or blowing glass.