Caching on communicators has been a very useful feature. In MPI-2 it is expanded to include caching on windows and datatypes.
 
 
 
 Rationale.  
 
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.