INSEL objects support encapsulation and can dynamically be created during program execution as instances of class describing objects, called generators. To prevent dangling pointers, objects are automatically deleted according to a conceptually defined life-time.
In contrast to class concepts known, as for instance in C++, generators
are integrated into the system in the same way as other objects and can
be nested within other generators or instances and vice versa.
Second,
they are implicitly determined by the programmer by employing our language
concepts. He is not burdened with having to specify hints to the resource
management system in addition to writing his application. And third, since
most of these dependencies are based on class properties, they are easy
to predetermine by software tools such as the compiler. Most important
of these system structures is the termination dependency, which defines
a partial order on the termination and deletion of objects. The lifetime
of each INSEL-object depends conceptually on exactly one other object in
a way that ensures that no object is deleted as long as it is accessible.
Major goals of the resource management system are to improve the execution speed and to reduce the size of the target representation. Hence, the basic implementation strategy is to incorporate management functionalities into the compiler or the OS kernel instead of employing inlining techniques or runtime libraries. (see figure "manager implementation")
Besides fundamental tasks such as allocating memory for the stack, heap and code of the objects within the AC the manager might also have to provide facilities to maintain consistency of replicated objects, enforce access restrictions or perform load balancing. Conflicts, such as stack overflows, arising from different managers performing their tasks in parallel are solved by communication and cooperation between managers according to application-level structural dependencies between the ACs.
This management scheme is scalable as it does not have a potential bottleneck and is adaptable since resource management is performed based on the requirements of application-level objects. For instance, the resource management system implements actots in a non-uniform manner. There is no single mapping of actors to - for example - UNIX processes or threads with a fixed size stack portion.
GCC ist the centerpiece of the GNU software, it is a compiler system with multiple front-ends(C, C++, Objective C, Fortran77, Ada, etc.) and many hardware targets.
The INSEL-Compiler is developed by adding the INSEL-Front-End to the GCC package.
