Caching on communicators has been a very useful feature. In MPI-2 it is expanded to include caching on windows and datatypes.
In one extreme you can allow caching on all opaque handles. The other
extreme is to only allow it on communicators. Caching has a cost
associated with it and should only be allowed when it is clearly needed and
the increased cost is modest.
This is the reason that windows and datatypes were
added but not other handles.
( End of rationale.)
One difficulty in MPI-1 is the potential for size differences between Fortran integers and C pointers. To overcome this problem with attribute caching on communicators, new functions are also given for this case. The new functions to cache on datatypes and windows also address this issue. For a general discussion of the address size problem, see Section Addresses .
The MPI-1.2 clarification, described in Section Clarification of Error Behavior of Attribute Callback Functions , about the effect of returning other than MPI_SUCCESS from attribute callbacks applies to these new versions as well.