SOM: A minimal Smalltalk for teaching of and research on Virtual Machines
7 hours ago
- #Virtual Machines
- #Research Platform
- #Programming Languages
- SOM is an object-oriented language with multiple implementations varying from 2.5k to 8k lines of code, supporting features like objects, classes, closures, and benchmarks such as DeltaBlue and Are We Fast Yet.
- Key implementations include SOM (Java, bytecode-based), AweSOM (Smalltalk, bytecode-based), CSOM (C, bytecode-based, mark/sweep GC), SOM++ (C++, bytecode-based, multiple GCs), PySOM (Python, AST/bytecode, JIT via metatracing), TruffleSOM (Java, AST-based, highly optimized), SOM-RS (Rust, AST/bytecode), ykSOM (Rust, bytecode-like), and JsSOM (JavaScript, AST-based).
- SOM has inspired research-focused language implementations like SOMNS (Newspeak, for concurrency research), Moth (Grace, based on SOMNS), and TruffleMATE (extended Smalltalk support for metaobject protocol research).
- SOM is used in teaching and research, with historical use at universities like Aarhus, Technische Universität Darmstadt, and Lancaster University, and in papers on topics such as virtual machines, concurrency, garbage collection, and meta-compilation.
- Community resources include GitHub repositories, Twitter (@SOM_VMs), mailing lists (som-dev), and Slack for discussions, alongside teaching materials like slide sets and course content on virtual machine design.