Copying, Moving and Borrowing semantics

In this paper we discuss primitives for mobilising code and communica- tions. We distinguish three types of semantics for mobility: copying (where an identi- cal copy is created remotely), moving (where the original is destroyed), and borrowing (where the original is moved to the target and back to where it came from at defined moments). We discuss these semantics for mobile code and mobile channels. We have implemented Icarus, a language that uses borrowing semantics for mobile code (the on-statement) and moving semantics for mobile channels (first class channels).