Chasm solves many of the routine problems encountered in language interoperability. The first problem is one of simple maintenance. As interfaces evolve in the implementation language, the wrappers for the alternate language can become out of synch with the implementation. The second problem is one of standardization. There are multiple ways to approach language interoperability and it is likely that more than one style would likely be used unless an interoperability coding standard is strictly enforced. Multiple interoperability coding styles inherently lead to confusion and ultimately to errors. Finally, there is the simple drudgery of manually creating wrappers for many separate software interfaces. In summary, the manual creation and maintenance of bridging code between C++ and Fortran is expensive and error prone.
Chasm reduces the expense of creating and maintaining common interfaces in Fortran and C++ and allows an interoperability coding policy to be set and enforced. The Chasm/ESMF interaction over the past year has been positive for both groups; as an early ``friendly user'' of Chasm the ESMF group was able to install and test Chasm on NCAR machines and offer feedback on its design. This interaction led to an important addition to the Chasm design, namely the ability to customize its interoperability model. The ESMF group anticipates using Chasm's interpretation of dope vectors for well-known compilers and the more generic (and slower) array sharing strategy described in Section 6.2 for unknown compilers.
We will continue to track Chasm progress and hope to start using Chasm to automate language interface generation in spring 2003.