HAL: A high-level actor language and its distributed implementation. We describe Hal, a high-level, actor-based language which has served as a test-bed for experimenting with powerful linguistic constructs for parallel and distributed programming. Hal is an architecture independent, concurrent object-oriented language which supports inheritance, synchronization constraints, continuation capture, synchronous and asynchronous message passing, and reflection. The Hal compiler has been used to execute actor programs on a number of shared and distributed memory machines. Hal allows powerful abstractions to be defined and reused. Furthermore, Hal supports the use of synchronization constraints at a fine-grained level and the use of software pipelining. In this paper, we describe the design of Hal, using specific examples to illustrate its features. We then discuss some of the implementation issues in the run-time system.