Babel: High-Performance Language Interoperability
Babel is a high-performance language interoperability tool. The project is mainly developed at the Center for Applied Scientific Computing (CASC) at Lawrence Livermore National Laboratory (LLNL). Babel started as an internal Lab Directed Research and Development (LDRD) project in 2000 and has been under constant development since then. It is now funded mainly under the U.S. Department of Energy (DOE) Office of Science’s SciDAC program.
Babel currently fully supports C, C++, FORTRAN 77, Fortran 90/95, Fortran 2003/2008, Python, and Java. It won a prestigious R&D 100 award in 2006 for “The world’s most rapid communication among many programming languages in a single application.”.
Our tool is based on the Scientific Interface Description Language (SIDL). SIDL is tailored to the needs of the scientific community and features support for complex numbers, structs, and dynamic multidimensional arrays. Babel is a compiler that generates glue code from SIDL interface descriptions. SIDL provides a modern object oriented programming model, even on top of traditional procedural languages. This includes automatic reference counting and resource (de)allocation. Code written in one language can be called from any of the supported languages.
Babel focuses on high-performance language interoperability within a single address space. Full support for Remote Method Invocation (RMI) allows for the development of parallel distributed applications.
We also provide tools to automatically generate documentation from SIDL descriptions. An equivalent XML representation eases development of third-party tools.