After years without updates I'm glad to present probably the most important update so far. In the past, the framework was just a monolith of C++ static libraries that could be enterely or partially included within a project to access various functionalities. On one hand it was good, because it simplified the programming of the framework in its parts, on the other it started to become a problem in terms of modularity and scalability. One of the worst complications was caused by the redundancy of the static library binaries: for example, if I had to create a plugin system, each dynamic library would have to include all the binaries with the functions to manage the various components of the framework.
There were also issues with external dependency linking. For example, if a component of the framework made use of a dynamic library, it was necessary to dynamically link that library and possibly signal for success or fail. In this way, it was not possible to static link the dynamic library, otherwise the library link failure would cause the whole application to fail, so it was necessary to dynamic link all dynamic libraries used as external dependencies. This was a major hadicap, particularly as external dependencies grew. Imagine an application that must support a plethora of graphics libraries, such as cairo, skia, opengl, vulkan, directx12, not only it was necessary to dynamic link all the libraries, but also to include all the binary code to manage the library into all the framework components.
Gianpaolo Ingegneri