Inspirel banner

Programming Distributed Systems with YAMI4

1.2.5 Lack Of Dependencies

Some communication products bring with them long lists of dependent components - these range from configuration parsers to logging libraries to multithreading utilities. A library that is itself dependent on one or several other libraries can be difficult to integrate with the rest of the application. The most obvious reason for that might be a version difference of one of the dependencies with regard to the version number of the same component that is used somewhere else in the same program - this problem is also related to the lack of composability explained above. A somewhat less obvious issue, but the one that can be significant in the long term, might be related to the licensing burden or even maintenance or support activities, when the whole family of such libraries does not come from a single source.

YAMI4 has no dependencies.

The lack of dependencies was an important design goal from the very beginning and the YAMI4 library depends on nothing else than the operating system and a small subset of the given language's standard library. The YAMI4 core library, which was intended for mission-critical systems, goes so far with minimizing its dependencies that it even provides its own memory allocator, which can prove to be essential for very limited embedded systems.

The lack of dependencies means also that YAMI4 is relatively easy to port to new platforms.