next up previous contents
Next: Babel Up: Tools Previous: Tools   Contents


Chasm

Chasm is a relatively new software project at Los Alamos National Laboratory that bridges the interoperability divide between Fortran and C++. Chasm tools parse Fortran (or C++) source files using commercial quality, standards-compliant compiler front-ends (these compiler tools are provided free of charge by the compiler vendors) and automatically generate bridging code for language interoperability. Chasm is designed to be extensible so that the actual contents of the bridging code can be chosen by the users of Chasm. This allows the style of language interoperability to be chosen and fixed on a project-wide basis. Finally, Chasm generates code to be incorporated into a project, so there need not be a long-term dependency on Chasm.

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.


next up previous contents
Next: Babel Up: Tools Previous: Tools   Contents
Cecelia Deluca 2007-05-04