2 research outputs found

    Distributing abstract machines

    Get PDF
    Today's distributed programs are often written using either explicit message passing or Remote Procedure Calls (RPCs) that are not natively integrated in the language. It is difficult to establish the correctness of programs written this way compared to programs written for a single computer. We propose a generalisation of RPCs that are natively integrated in a functional programming language meaning that they have support for higher-order calls across node boundaries. Our focus is on how such languages can be compiled correctly and efficiently. We present four different solutions. Two of them are based on interaction semantics --- the Geometry of Interaction and game semantics --- and two are extensions of conventional abstract machines --- the Krivine machine and the SECD machine. To target as general distributed systems as possible our solutions support RPCs without sending code. We prove the correctness of the abstract machines with respect to their single-node execution, and show their viability for use for compilation by implementing prototype compilers based on them. The conventionally based machines are shown to enable efficient programs. Our intention is that these abstract machines can form the foundation for future programming languages that use the idea of higher-order RPCs

    Distributing abstract machines - Online Appendix

    No full text
    This is the online appendix for Olle Fredriksson's PhD thesis titled: "Distributing abstract machines", from 2015. This appendix consists the source code for four compilers, and Agda formalisations of two of them. The most feature-complete compiler (based on DCESH) is in the floskel directory. The Agda formalisations are in the krivine (formalising DKrivine) and secd (formalising DCESH) directories. The goi and games directories contains compilers based on the Geometry of Interaction and game semantics. For further information, see the README files in the sub-directories
    corecore