ActorFoundry
ActorFoundry is a Java-based library for Actor programming. It enables writing actor programs in the usual Java syntax. It support safe (by-copy) as well as efficient (zero-copy) messaging, actor mobility, and message ordering using local synchronization constraints. The run-time provides location-independence and fairness in scheduling.
It is being actively developed and maintained by the Open Systems Laboratory at the University of Illinois.
History
ActorFoundry was originally designed and implemented by Mark Astley along with Thomas Clausen and James Waldby around 1998–2000. Mark Astley was a member of Open Systems Laboratory at that time. Actor Foundry (the original name had a space) can be accessed at its old page.[1] provides a comparison of Actor Foundry with SALSA.
In Fall 2008, the project has been revived at the Open Systems Laboratory. Some of the recent performance enhancements are discussed in [2]
Design
ActorFoundry is structured as a set of components which represent the semantic features of an Actor system such as scheduler, name service, discovery service. These components are defined in terms of interfaces. A pure Java implementation is provided for each such component. Thus, the foundry is modular in design as well as portable across all platforms supporting Java.
Performance
ActorFoundry internally performs CPS transform (using the bytecode post-processor included in Kilim) and employs an M:N architecture (mapping M actors to N native threads where M >> N) for a highly efficient implementation of Actor semantics. The performance of ActorFoundry for the thread-ring benchmark at The Computer Language Benchmarks Game is comparable to the other top performing languages.
References
- ↑ Carlos Varela and Gul Agha (2001). "Programming Dynamically Reconfigurable Open Systems with SALSA". ACM SIGPLAN Notices. OOPSLA’2001 Intriguing Technology Track Proceedings. 36.
- ↑ Rajesh Karmani and Amin Shali and Gul Agha (2009). "Actor frameworks for the JVM platform: A Comparative Analysis" (PDF). in proceedings of the 7th International Conference on the Principles and Practice of Programming in Java.