Erlang's actor concurrency model is a good fit for a wide range of concurrent applications. One domain that would seem ideal is real-time control of concurrent physical processes. But as it stands right now Erlang is best suited for soft real-time applications - there's really nothing in the language or runtime geared towards hard real-time constraints. Towards Hard Real-Time Erlang talks about one piece of the puzzle: a hard real-time scheduler.
In the last decades faster and more powerful computers made possible to seriously take into account highâ€“level and functional programming languages also for nonâ€“academic projects. Haskell, Erlang, Oâ€™CAML have been effectively exploited in many application fields, demonstrating how highâ€“level languages can help in writing efficient, readable and almost bugâ€“free code, rapidly stealing the prominent position gained in many fields by OO languages such as Java and C++. One of the fields where lowâ€“level imperative languages are still preferred to functional programming is that of hard realâ€“time applications, since usually programmers (and managers) think that highâ€“level languages are really not able to cope with the complex and critical requirements of realâ€“time.
In this paper we propose an implementation of a hard realâ€“time scheduler entirely written in Erlang, and perfectly integrated with the Erlang BEAM emulator. Performance analysis show that the proposed solution is effective, precise and efficient, while remaining really simple to use as expected by Erlang programmers.
The paper closes with mentions of two more pieces of the puzzle.
Realâ€“time message passing will be introduced in a future version...
A solution to the unpredictable behaviour of garbage collection should be implemented before a really hard realâ€“time scheduling can be done in Erlang.
Besides the scheduler, message passing, and garbage collector, what else do you think is needed before Erlang or something like it is a viable alternative in this domain? Or is the actor model really not such a great fit?
*Edit: Based on a comment from renox added closing quotes about message passing and garbage collector and added message passing to the editorial question.