An Extensible Compiler for Creating Scriptable Scientific Software

Scripting languages such as Python and Tcl have become a powerful tool for the construction of flexible scientific software because they provide scientists with an interpreted problem solving environment and they form a modular framework for controlling software components written in C,C++, and Fortran. However, a common problem faced by the developers of a scripted scientific application is that of integrating compiled code with a high-level interpreter. This paper describes SWIG, an extensible compiler that automates the task of integrating compiled code with scripting language interpreters. SWIG requires no modifications to existing code and can create bindings for eight different target languages including Python, Perl, Tcl, Ruby, Guile, and Java. By automating language integration, SWIG enables scientists to use scripting languages at all stages of software development and allows existing software to be more easily integrated into a scripting environment.

[1]  Ken Martin Automated Wrapping of a C++ Class Library into Tcl , 1996, Tcl/Tk Workshop.

[2]  D. Scherer,et al.  VPython: 3D interactive scientific graphics for students , 2000, Comput. Sci. Eng..

[3]  John K. Ousterhout,et al.  Scripting: Higher-Level Programming for the 21st Century , 1998, Computer.

[4]  Paul F. Dubois The future of scientific programming , 1997 .

[5]  J. Michael Owen An open-source project for modeling hydrodynamics in astrophysical systems , 2001, Comput. Sci. Eng..

[6]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

[7]  David M. Beazley,et al.  Lightweight Computational Steering of Very Large Scale Molecular Dynamics Simulations , 1996, Proceedings of the 1996 ACM/IEEE Conference on Supercomputing.

[8]  Konrad Hinsen The Molecular Modeling Toolkit: a case study of a large scientific application in Python , 1997 .

[9]  Konrad Hinsen,et al.  Numerical Python , 1996 .

[10]  David M. Beazley,et al.  SWIG: An Easy to Use Tool for Integrating Scripting Languages with C and C++ , 1996, Tcl/Tk Workshop.

[11]  Matthieu Verstraete,et al.  First-principles computation of material properties: the ABINIT software project , 2002 .

[12]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.

[13]  David M. Beazley,et al.  Message-Passing Multi-Cell Molecular Dynamics on the Connection Machine 5 , 1994, Parallel Comput..

[14]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[15]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..