The language interoperability problem is a large one,
and though the Babel tools address much of it, there is
still a lot that is beyond the scope of our tool.
Babel is at its heart a code generator and a runtime
library. Consequently, the following features are currently
limitations of the Babel tool kit:
-
- Reverse engineering
- is not supported. That is,
there is no support for inspecting or modifying compiled
code. In addition, scanning existing software to
generate SIDL wrappers is not supported.
There are other groups who are pursuing a C++
to SIDL converter. Since SIDL contains different information
than what is in a C++ header file, however, such a
converter cannot be fully automated without additional help.
- Library compatibility
- is limited.
Since Python and Java dynamically
load libraries into their virtual machines, using these
languages requires the ability to build shared libraries.
In general, building shared libraries (particularly from C++)
is difficult and error prone. This is compounded by the
fact that compiler vendors have no standard way of doing
this, and many tools that help building shared libraries don't
support C++. One can build a legitimate
shared library that still won't work because there are
unresolved symbols, or the library was loaded in the
wrong mode.
- Compiler compatibility
- is limited.
Since the C++ standard does not specify a binary interface and uses a lot of
hashing in their symbol tables, there have been no attempts to get libraries
from dissimilar C++ compilers to work together. Similarly, although we support
FORTRAN 77 and Fortran 90, all libraries of Fortran code must be compiled
with the same compiler...again because of the lack of a
standard binary interface.
Despite the aforementioned limitations, Babel does facilitate the development
of language interoperable software. However, issues of robust packaging,
building, and deployment of language interoperable software still loom
on the horizon.
babel-1.4.0
users_guide Last Modified 2008-10-16
http://www.llnl.gov/CASC/components
components@llnl.gov