Babel 2.0.0 README

* Released 6 January 2012 *


Introduction Contact Information Overview for the Impatient Running Tests Supported Platforms Directories Features Outstanding Issues Future Work Further Information Project Team


Babel is a language interoperability tool intended for use by the high-performance scientific computing community. Developed by the Components project ( ) at Lawrence Livermore National Laboratory, Babel supports the Scientific Interface Definition Language (SIDL) for the language- independent declaration of interfaces associated with scientific software packages.

The Babel tool, applied to a SIDL file, results in the automatic generation of the associated skeleton and stub source files. The Babel user then need only add the necessary code to the _Impl source files to complete the provision of a language-independent interface to the package described by the SIDL file. The languages currently supported by Babel are C, C++, FORTRAN 77, Fortran 90/95, Fortran 2003/2008, Java and Python.

The remainder of this document provides basic information about Babel including features, outstanding issues, and future work.

Contact Information

If you have any questions or concerns with the installation process or usage of Babel, feel free to contact the project team at . To report bugs or suggest feature enhancements, please submit a report in the bug database at or send email to .

Overview for the Impatient

Once you have completed the installation process (see the INSTALL file in this directory), you are ready to proceed with using Babel. A complete tutorial that steps you through the process of building the ubiquitious "Hello World!" example for a single client and server is available at ./doc/manuals/usersguide/html/usersguide.html

Briefly, now that you have the Babel compiler available, you'll need to have a sidl file defined before running the compiler. Below is a skeleton of the command line required to build the stubs, skeletons, Makefile fragment, and GNUmakefile.

$ ./<babel>/bin/babel --makefile -s<lang> <name>.sidl

  where <lang> is the desired language,
        <name> is the name of the SIDL file, and
        <babel> is the installation's top directory

Now you'll need to add the appropriate code within the splicer pairs in the _Impl files. Once you've finished filling in the implementation details, you can simply compile and link the appropriate libraries. Again, refer to the tutorial for more information.

Running Tests

If you are interested in running the regression tests that are packaged in this distribution you will need to build them since they are excluded from the basic installation process. As in the example in the INSTALL file, given that the Babel distribution is in $HOME/babel, the process for building and running the regression tests is as follows:

$ cd $HOME/babel
$ make check

Various diagnostics and results (e.g., PASS, XFAIL) will be displayed to indicate the number and status of each set of tests. At this time, there are three sets of tests each with three instances (9 total) that are expected to fail (i.e., XFAIL) These are for arrays in Python, arrays in Java, and exceptions in Java.

Supported Platforms

The Babel compiler has been successfully run on the platform/ compiler pairs listed below.

Linux             / Intel Compiler Suite 12.1 (icc & ifc)
Linux             / GCC 4.6.2
Linux             / PGI 10.9
Linux             / PathScale 3.2.99
Linux             / IBM XL Fortran Advanced Edition for Blue Gene/L, V11.1
Linux             / IBM XL Fortran Advanced Edition for Blue Gene/P, V11.1

Linux             / GCC & Absoft F90
Linux             / GCC & Lahey F90

AIX               / GCC
AIX               / IBM compiler suite

Sparc-Solaris2.9  / gcc 3.1 or higher (use SHELL=/bin/ksh )
Sparc-Solaris2.9  / g77 3.1 or higher (use SHELL=/bin/ksh )
Sparc-Solaris2.9  / f77 (Sun WorkShop 5.0)  (use SHELL=/bin/ksh )
Sparc-Solaris2.9  / f95 (SUNSWspro) (use SHELL=/bin/ksh )

The Fortran 2003/2008 binding requires GCC >= 4.6.1,
IBM XL Fortran >= 11.1, or 
Intel Compiler Suite >= 12.1.032 on any platform.


The following represents the source directory tree associated with this release, relative to the top level of the installation directory, and a brief description of the contents of each:

bin/                    # The Babel compiler
compiler/               # The compiler source
doc/                    # Supplemental documentation
doc/manuals/users_guide # PS, PDF, and HTML documentation
examples/               # Simple examples:
examples/hello/         #   Hello World examples
examples/cca            #   CCA-0.5 framework implementation
lib/                    # Supporting libraries
regression/             # Regression tests:
regression/args/        #   Data Type+Passing Mode
regression/arrays/      #   Arrays
regression/contracts/   #   Contracts (i.e., interface assertions)
regression/enums/       #   Enumerations
regression/exceptions/  #   Exceptions
regression/hooks/       #   Pre- and post-method hooks
regression/inherit/     #   Inheritance
regression/objarg/      #   Passing objects as arguments
regression/ordering/    #   Array ordering test
regression/overload/    #   Function name overloading
regression/sort/        #   Abstract class and interface args
regression/strings/     #   Strings
regression/struct/      #   Structs
runtime/                # Runtime support files
                          (e.g., sidl.sidl)
share/                  # Shared config files


Key features, or capabilities, of the Babel toolkit are described in this section.

Outstanding Issues

There are several aspects of the distribution that still need work. The outstanding issues that need to be addressed include features as well as documentation.

Future Work

The following is a list of key activities that will be explored for incorporation into subsequent releases:

Further Information

The following files are available at the top of the release directory structure provide additional information on the Babel release:

BUGS       Lists known bugs
COPYRIGHT  Lawrence Livermore National Security, LLC notice
INSTALL    Provides installation instructions
README     This file

Additional background information can be found in the ./doc/papers and ./doc/talks subdirectories including the outdated specification (./doc/papers/ More recent papers and talks can be found at our web site at

Additional documentation including a tutorial, command line arguments, SIDL grammar, and crash courses on SIDL arrays and Fortran can be found in ./doc/babel101.

Project Team

The following individuals are current members of the development team on the LLNL Components Project:

  Tammy Dahlgren             Tom Epperly
 Adrian Prantl

Community code contributors:

 Boyana Norris               Ben Allan
 Stefan Muszala

Our alpha testers are:

   Bill Bosl                Jeff Painter
   Andy Cleary             Steve Smith

and our alumni are:

Melvina Blackgoat         Nathan Dykman
  Kevin Durrenberger     Dietmar Ebner
  Sarah Knoop              Scott Kohn
   Gary Kumfert              Jim Leek
  Brent Smolinski