SOM Language Example
JsSOM Read-Eval-Print Loop
- 9 main implementations
- clarity of implementation over absolute performance
- support for common language features such as objects, classes, closures, non-local returns, and primitives
- support for classic benchmarks: DeltaBlue, Richards, Benchmark Game, ...
- implementation variations include:
- abstract-syntax-tree-based or bytecode-based
- classic interpreter optimizations
- green and native threading
- reference counting, mark/sweep, and generational garbage collectors
- implementations ranging from 2.5k LOC to 8k LOC
Use in Teaching and Research: A Brief Chronology
A brief and incomplete list of papers and universities where SOM has been used in the past.
In 2015, the J9 team announced the plans to open source the platform underlying their JVM implementation. As part of their JavaOne talk “What's in an Object? Java Garbage Collection for the Polygot”, they used CSOM as a case study to show how their garbage collector can be integrated into an existing VM.
Tracing vs. Partial Evaluation: Comparing Meta-Compilation Approaches for Self-Optimizing Interpreters.
Marr, Stefan; and Ducasse, Stéphane.
Proceedings of the 2015 ACM International Conference on Object Oriented Programming Systems Languages & Applications, ACM, (2015), PDF, HTML.
Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and without Compromises.
Marr, Stefan; Seaton, Chris; and Ducasse, Stéphane.
Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, ACM, (2015), doi: 10.1145/2737924.2737963, PDF, HTML.
Are We There Yet?
Simple Language-Implementation Techniques for the 21st Century.
Marr, Stefan; Pape, Tobias; and De Meuter, Wolfgang.
IEEE Software 31, no. 5 (2014): 60-67, doi: 10.1109/MS.2014.98, PDF, HTML.
The SOM variants were used for a number of experiments such as ActorSOM, a SOM with a event-loop concurrency model similar to AmbientTalk.
SOM++ was optimized and extended with a generational garbage collector as part of a master's thesis.
Type Harvesting: A Practical Approach to Obtaining Typing Information in Dynamic Programming Languages.
Haupt, Michael; Perscheid, Michael and Hirschfeld, Robert.
Proceedings of the 2011 ACM Symposium on Applied Computing, 2011, doi: 10.1145/1982185.1982464, URL.
Virtual Machine Support for Many-Core Architectures: Decoupling Abstract From Concrete Concurrency Models.
Marr, Stefan; Haupt, Michael; Timbermont, Stijn; Adams, Bram; D'Hondt, Theo; Costanza, Pascal and De Meuter, Wolfgang.
Second International Workshop on Programming Languages Approaches to Concurrency and Communication-cEntric Software, York, UK, 2010, doi: 10.4204/EPTCS.17.6, URL.
The SOM Family: Virtual Machines for Teaching and Research.
Haupt, Michael; Hirschfeld, Robert; Pape, Tobias; Gabrysiak, Gregor; Marr, Stefan; Bergmann, Arne; Heise, Arvid; Kleine, Matthias and Krahn, Robert. Proceedings of the 15th Annual Conference on Innovation and Technology in Computer Science Education (ITiCSE), 2010, doi: 10.1145/1822090.1822098, PDF.
In 2010, SOM was used by Michael Haupt to teach one graduate course at Technische Universität Darmstadt (Germany).
NXTalk: Dynamic Object-oriented Programming in a Constrained Environment.
Beck, Martin; Haupt, Michael and Hirschfeld, Robert. Proceedings of the International Workshop on Smalltalk Technologies, 2009, doi: 10.1145/1735935.1735942, PDF.
SOM was used by Michael Haupt between 2007–2009 to teach a course on Virtual Machines at the Hasso Plattner Institute in Potsdam. Many of the feature variants of CSOM for instance support for Smalltalk images, threads, and garbage collection have been developed as part of course work. (more)
In 2006, SOM was used by Michael Haupt to teach one undergraduate course at Lancaster University (UK).
Related to SOM, at least in syntax and spirit:
Design, implementation, and evaluation of the Resilient Smalltalk embedded platform.
Andersen, Jakob R.; Bak, Lars; Grarup, Steffen; Lund, Kasper V.; Eskildsen, Toke; Hansen, Klaus Marius and Torgersen, Mads.
Computer Languages, Systems & Structures 31, no. 3–4 (2005): 127–141, doi: 10.1016/j.cl.2005.02.003.
SOM was originally implemented at the University of Århus in Denmark by Jakob Roland Andersen, Kasper Verdich Lund, Lars Bak, Mads Torgersen, and Ulrik Pagh Schultz in 2001/2002. It was used for teaching object-oriented VMs and came with the original version of the SOM Smalltalk libraries, test suites, and benchmarks.