Caching of communicators
YAXT currently creates communicators internally to provide isolation from other parts of the system. This can be potentially costly when it introduces additional synchronization. For this reason it seems sensible to cache previously created communicators instead of destroying them immediately.
An alternative scheme requires managing tags in the library more closely and is potentially less resource intensive (depending on how costly a communicator is).