Motivation


Communicating systems are everywhere

But as any other computer program they have bugs and occasionally fail

... bummer!

This thesis focuses on preventing two specific ways communicating systems might fail

Communication deadlocks


A


                    receive("B",x)
                    ...
        

B


                    receive("A",x)
                    ...
        

Communication deadlocks


A


                    ...
        

B


                    receive("A",x)
                    ...
        
Contributions:
  • Verfied choreography compiler

out-of-memory errors


A


                    x = number_crunching()
                    send("B",x)
                    ...
        

B


                    receive("A",x)
                    ...
        

out-of-memory errors


A


                    x = 💥
                    send("B",x)
                    ...
        

B


                    receive("A",x)
                    ...
        

out-of-memory errors


A

💥

B


                    receive("A",x)
                    ...
        
Contributions:
  • Cost semantics proved sound w.r.t compiler
  • Concrete examples with tight bounds