I identified a need for extensions to support a hierarchy of nodes within an Erlang system to provide a "custom context", restrictions on "side-effects", and resource limits for processes executing in each node; the use of capabilities for nodes, processes, ports, and user defined references, to provide a finer granularity of control on the use of these identifiers; and support for remote module loading mechanisms that preserve the context for such modules.
Following the initial design and prototype phase, I developed some ideas on the best methods for specifying and implementing safety policies in this environment.
I spent the latter half of 2002 on sabbatical working at the Software Engineering Research Centre, in Melbourne. During this time I implemented the above safety extensions to Erlang, as well as developing the full runtime for, the Erlang Compiler (EC) [ADFA] [RMIT] being developed by Maurice Castro. Working notes are given in my 2002 sabbatical area. This work has continued during summer research visits to the School of Network Computing at Monash University (Peninsula - Frankston campus) in 2003 & 2004.
My original proposals are summarised in an overview paper with Dan Sahlin called Extending Erlang for Safe Mobile Code Execution (presented at ICICS'99 in Sydney in Nov 99), which updates our previous TR CS03/97 - Mar 98. The prototype I developed on sabbatical in 1997 is documented in SSErl - Prototype of a Safer Erlang (TR CS04/97 - Oct 97). My proposals for the best mechanisms to implement safety policies are detailed in Custom Safety Policies in SSErl (presented at ACISP2k in Brisbane in Jun 2000). Details of some of the design decisions for the EC Runtime are given in A New Runtime for the EC Erlang Compiler, presented at AUUG'03, Sydney, in Sept 2003.
Previous working papers may be found in my 1997 sabbatical area. Also of interest may be my earlier 1996 survey paper on Mobile Code Security.