Function library system in ForwardCom
ForwardCom has an innovative library system. There are no dynamic link libraries and no shared objects, but only one type of function libraries that can be used for both static and dynamic linking. Executable files can be relinked by the user to update or replace a function library if needed.
This system has several advantages:
- Memory use is economized. It is not uncommon in traditional systems to load a dynamic link library or a shared object of one megabyte and use only one kilobyte of its code. ForwardCom links only the part of the library that is needed.
- The library code is contiguous with the executable program that uses it. This prevents memory fragmentation and improves code caching.
- Library functions and variables are accessed directly. There are no import tables, procedure linkage tables, or global offset tables. Functions linked dynamically after loading are accessed through pointers.
- No compatibility problems. Each executable program is distributed together with a compatible version of the necessary library functions. The user can update the library, if desired, by relinking the executable file with a new version of the library. In traditional Windows systems, all programs share the same version of a library. Updating one program may thus affect the behavior of other programs that use the same library. Linux systems, on the other hand, have version numbers on all libraries (shared objects). This may cause problems if the user has problems finding the proper version of a library.
- Flexibility. An executable program file can work on different platforms or different user interface frameworks when linked with different system libraries.