Short: Object oriented addition to AmigaDOS Architecture: m68k-amigaos SHADOW.library V4.6 Released:09 Feb 1992 by David C. Navas Update to SHADOW V4.3 -- fixes 1.3 bugs and 68000 bugs (we hope). Freely distributable only for those environments which are themselves freely distributable. Includes shadow.library, ppipc.library, and several example programs including a class browser. Also included is more than 160k of Documentation! Requires AmigaDOS2.0!!! Taken from Shadow/Docs/Introduction.doc: SHADOW is a concurrent-object-oriented addition to AmigaDOS. Its principle design goal is to help standardize an extensible environment paradigm. It takes advantage of some of the better AmigaDOS facilities (shared memory system, IPC ports, and fast context switching) by internally managing much of the inter-task communications, resource tracking, and resource allocation. Traditional object-oriented systems separate function interfaces from internal data structures and manage the allocation and access of these structures within objects. SHADOW takes this interface separation one step further by uncoupling the method invocation from the parameter specification. It also manages the allocation of structures in a transparent manner, allowing the use of the faster, hard-coded structure offsets of C structs. SHADOW was created to solve the problems which I ran into with my first programming project -- JazzBench. That experience taught me that the most important thing in a co-operative multi-program environment is flexibility. You need to be able to change the behaviour of EVERYTHING -as- -it- -runs-. This lesson was the principle reason behind the initial design of SHADOW, and the result of that principle was the entire WatchedVariable construct. To a lesser extent, it was also responsible for Patches. However, that was not the only lesson that was learned. Trying to locate governing control in some kind of super-server was a real bust. Turns out so much information had to cross through that server to correctly manage all the resources that the server turns into a real bottleneck. So what I needed was a subsystem which effectively dealt with the concurrency and shared resource management problems. The other major subsystem of SHADOW supports the increased use of more complicated data structures. Sounds easy, but there've got to be a dozen AVLTree functions alone, and that doesn't include constant string management and singly-linked, priority lists, etc.