

OLL is the latest iteration of a series of compiler projects I've written over the past 20+ years. During that time I've targeted C, VHDL (hardware), ARM and Java's JVM. Each has concentrated on a different aspect of the challenge.
I've also designed, by hand, a lot of high-performance test equipment hardware/firmware and control/interface software; also a little bit of a flight system for a satellite. All have required care to (try to) ensure reliable operation, eliminating run-time failures. CSP has been a critical framework that has worked very well.
I am more convinced than ever that there is a need for a design language that describes algorithms equally well regardless of whether they are to be run as hardware or software: Hardware/Software Same-Design (not Hardware/Software Co-Design).
Support for eliminating run-time errors is essential. However, it is theoretically impossible to analyse arbitrary programs adequately and relatively easy to create pathological cases that would break the compiler. The interesting question is whether it is possible to handle a large-enough set of real (not contrived) programs to be useful. This project aims to explore the bounds of practicality. I will give a brief overview of the aims of this ongoing project and report its current status. Slides used in the presentation can be downloaded from [1].