Smalltalks 2014 — Córdoba, Argentina

I presented two invited talks at Smalltalks-2014 (Córdoba, Argentina).

The first is The Syntesis of Target-Agnostic JIT. (Slides, Video, YouTube).

A target-agnostic Smalltalk JIT is synthesized from microprocessor specifications written in a Processor Description Language. We begin by parsing a target model specified in the ArchC PDL (with AccGen extensions for instruction semantics). Code generation is achieved using Cattell or Aho–Ganapathi–Tjang tree matching; this results in more optimized machine code than mapping individual instructions from abstract RTL to a concrete ISA. The dynamic programming algorithm of tree matching is expressed using backtracking and unification, which in turn are implemented by manipulating Smalltalk contexts. The JIT therefore requires full Smalltalk as opposed to a subset such as Slang. It can be bootstrapped using either mixed-mode execution or ahead-of-time compilation; in the latter case, specific portions of the n-zone are made persistent.

The second talk is Reviving Cheese. (Video, YouTube).

Cheese was a Squeak with Native Widgets which I made in 1997/98. There were two major varieties. Cheese4's peculiar feature was dual UI message loop: it started from Squeak 1.30 X11 port on OS/2 (EMX), added an FFI and used that FFI to implement a native OS/2 Presentation Manager UI, all the while keeping the X11 UI for development. The X11 message loop and the PM/2 message loop ran at the same time. When Cheese gained enough native-based tools to self-host development, Cheese5 cut off X11 support in the VM and the BitBlt-based half of the image; so it's just a native OS/2 application.

Photos from Smalltalks-2014: