Packaging Squeak as a DLL

Mentor: Eliot Miranda
Second mentor: Beepeng Ang
Level: Advanced
Invited students: Om Prakash
Students interested: Om Prakash(very)

A conventional approach to making libraries written in a particular language available to other languages is to package a library as a dynamic load library or shared object (dll from here on in).  Adapting that approach to Squeak would both allow use of Smalltalk code by a wider audience and enable alternative deployment approaches for Squeak applications, easing the creation of Squeak plug-ins for systems like Apache, web browsers and so on.  There are broadly two different approaches one can take, which one could call passive or active.  In the passive architecture, the Squeak dll is inactive until called from another language, and runs only until a result is answered to the caller.  In the active architecture the act of loading the dll causes Squeak to start up on its own thread and accept incoming calls from other threads in a form of rendezvous.  The passive approach is easier to build but less useful; one does not have the full range of Squeak facilities such as light-weight processes, delays etc.

Technical Details

The objective of the project would be to implement either the passive or the active approach, depending on the student's interest and ability.  The goal is to make Squeak more broadly useful to users and application deployers alike.  There are many technical challenges to be met that will involve both Smalltalk and C coding and the use of the Smalltalk-C hybrid language Slang in which the Squeak VM is written.

Benefits to the Student

The benefits to the student include gaining an in-depth understanding of dlls, interfacing to dynamic languages, foreign function interfaces and of the Squeak VM.  The student will also be gaining an understanding of architectural issues by considering the many trade-offs between the passive and active approaches.

Benefits to the Community

The benefits to the Squeak community will be in being able to package and deploy Squeak applications much more broadly than before.

Updated: 22.3.2010