      -- ** Comparisons.
      ComparisonResult (..),
 
-     -- * Error handling. DONE
+     -- * Error handling.
      Errhandler, errorsAreFatal, errorsReturn, errorsThrowExceptions, commSetErrhandler, commGetErrhandler,
      ErrorClass (..), MPIError(..),
 
-     -- * Ranks. DONE
+     -- * Ranks.
      Rank, rankId, toRank, fromRank, anySource, theRoot, procNull,
 
      -- * Data types.
      Datatype, char, wchar, short, int, long, longLong, unsignedChar, unsignedShort, unsigned, unsignedLong, unsignedLongLong, float, double, longDouble, byte, packed, typeSize,
 
-     -- * Point-to-point operations. DONE
-     -- ** Tags. DONE
+     -- * Point-to-point operations.
+     -- ** Tags.
      Tag, toTag, fromTag, anyTag, unitTag, tagUpperBound,
 
-     -- ** Blocking operations. DONE
+     -- ** Blocking operations.
      BufferPtr, Count, -- XXX: what will break if we don't export those?
      send, ssend, rsend, recv,
-     -- ** Non-blocking operations. DONE
+     -- ** Non-blocking operations.
      isend, issend, irecv,
      isendPtr, issendPtr, irecvPtr,
 
 
-     -- * Collective operations. DONE
-     -- ** One-to-all. DONE
+     -- * Collective operations.
+     -- ** One-to-all.
      bcast, scatter, scatterv,
-     -- ** All-to-one. DONE
+     -- ** All-to-one.
      gather, gatherv, reduce,
-     -- ** All-to-all. DONE
+     -- ** All-to-all.
      allgather, allgatherv,
      alltoall, alltoallv,
      allreduce, 


-- | MPI implementation version
data Version =
   Version { version :: Int -- ^ Major part
           , subversion :: Int -- ^ Minor part
           }
   deriving (Eq, Ord)

instance Show Version where
   show v = show (version v) ++ "." ++ show (subversion v)

getVersion :: IO Version
getVersion = do
   (version, subversion) <- getVersion'


-- | Compares two groups. Returns 'MPI_IDENT' if the order and members of the two groups are the same,
-- 'MPI_SIMILAR' if only the members are the same, and 'MPI_UNEQUAL' otherwise.
groupCompare :: Group -> Group -> ComparisonResult
groupCompare g1 g2 = unsafePerformIO $ groupCompare' g1 g2
  where
    groupCompare' = {# fun unsafe Group_compare as groupCompare_
