In 1989 I started my first full time programming job at a software company called Harlequin, based near Cambridge, UK. I’d had summer jobs and an industrial year before this, working for ICL in Manchester and had heard some really good things about a small software house of really smart people who were doing some great work on compilers and programming environments for the Common Lisp language. So I applied. After an interview, where the boss gave me and my bike a lift home, they offered me the job.
During my first year there, I first worked on the Common Lisp system, improving the performance of the system on various numerical benchmarks and adding some missing parts to the runtime system. After some time, I was offered the chance to work on an ML compiler that was being being written as a contract job for RSRE. There were three of us working on this – the runtime work was done by Colin who did the parser and type checker, while I wrote the lexer and the code generator. The target language was Ten15, a high level virtual machine that ran on the PERQ computer, and it was this technology that got me interested in virtual machines.
I left a year or so later to start a Phd at Cambridge, and when I returned to Harlequin the ML compiler was being rewritten to target SPARC, as the MLWorks project. I joined this team for a while, helping to finish off the runtime system and writing an initial sampling profiler. I later started to add CORBA support to the system. I left to join another team when offered the chance to port the LispWorks system to the DEC Alpha, which was fantastic opportunity to get deep knowledge about a platform (and code generators and link loaders and shared libraries and memory management and cross platform compilers).
The MLWorks system was developed over the years by various people and it is nice to see that the code has just been released as open source. I’m not quite sure how relevant the technology is now – this was in the days of single threaded runtimes and machines that were considerably slower than today’s, but it will be nice seeing the system build and get some use. I’ll just be digging through the change logs to see what code changes I made in those days.