The Simplified Wrapper and Interface Generator (SWIG) is an open-source software tool used to connect computer programs or libraries written in C or C++ with scripting languages such as Lua, Perl, PHP, Python, R, Ruby, Tcl, and other language implementations like C#, Java, JavaScript, Go, D, OCaml, Octave, Scilab and Scheme.
The programmer writes an interface file containing a list of C/C++ functions to be made visible to an interpreter.
SWIG will compile the interface file and generate code in regular C/C++ and the target programming language.
Depending on the language, this glue comes in two forms: SWIG is not used for calling interpreted functions by native code; this must be done by the programmer manually.
When SWIG creates an extension module, these declarations are accessible as scripting language functions, variables, and constants respectively.
Haoyu Bai spent his summers on SWIG's Python 3.0 Backend, Jan Jezabek worked on Support for generating COM wrappers, Cheryl Foil spent her time on Comment 'Translator' for SWIG, and Maciej Drwal worked on a C backend.