SWIG image
Home Github Development Mailing Lists Bugs and Patches
Information
What is SWIG?
Compatibility
Features
Tutorial
Documentation
News
The Bleeding Edge
History
Guilty Parties
Projects
Legal Department
Links
Download
SwigWiki
Survey
Donate
Affiliations
Software Freedom Conservancy logo
Our Generous Host
Get SWIG at SourceForge.net. Fast, secure and Free Open Source software downloads
Exits
C# - Mono
C# - MS .NET
D
Go language
Guile
Java
Javascript - Node.js
Javascript - Node-API
Javascript - V8
Javascript - WebKit
Lua
MzScheme/Racket
OCaml
Octave
Perl
PHP
Python
R
Ruby
Scilab
Tcl/Tk

Welcome to SWIG

SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. SWIG is used with different types of target languages including common scripting languages such as Javascript, Perl, PHP, Python, Tcl and Ruby. The list of supported languages also includes non-scripting languages such as C#, D, Go language, Java including Android, Lua, OCaml, Octave, Scilab and R. Also several interpreted and compiled Scheme implementations (Guile, MzScheme/Racket) are supported. SWIG is most commonly used to create high-level interpreted or compiled programming environments, user interfaces, and as a tool for testing and prototyping C/C++ software. SWIG is typically used to parse C/C++ interfaces and generate the 'glue code' required for the above target languages to call into the C/C++ code. SWIG can also export its parse tree in the form of XML. SWIG is free software and the code that SWIG generates is compatible with both commercial and non-commercial projects.

Recent News SWIG RSS Feed

2024/02/24 - SWIG-4.2.1 released

SWIG-4.2.1 is primarily a stability and regression fix release, but also includes:

  • Tcl 9.0 support.
  • Octave 9.0 support.
  • Improvements wrapping friend functions.
  • Variadic templated functions within a template support.
  • Type deduction enhancements.

2023/12/31 - SWIG-4.2.0 released

SWIG-4.2.0 summary:

  • Various template wrapping improvements: template template parameters,
    variadic templates, partially specialized templates, const template
    parameters and improved error checking instantiating templates.
  • Improved decltype() support for expressions.
  • C++14 auto without trailing return type and C++11 auto variables.
  • Numerous C++ using declarations improvements.
  • Numerous fixes for constructors, destructors and assignment operators:
    implicit, default and deleted and related non-assignable variable
    wrappers.
  • STL: std::array and std::map improvements, std::string_view support
    added.
  • Various C preprocessor improvements.
  • Various issues fixed to do with architecture specific long type.
  • Various Doxygen improvements.
  • D1/Tango support removed. D2/Phobos is now the supported D version
    and SWIG now generates code which works with recent D2 releases.
  • New Javascript generator targeting Node.js binary stable ABI Node-API.
  • Octave 8.1 support added.
  • PHP7 support removed, PHP8 is now the supported PHP version.
  • Python STL container wrappers now use the Python Iterator Protocol.
  • Python stable ABI support added.
  • Python 3.12 support added.
  • Ruby 3.2 and 3.3 support.
  • Scilab 2023.* support added.
  • Various minor enhancements for C#, Go, Guile, Javascript, Lua, Ocaml,
    Perl, PHP, R, Racket, Ruby, Scilab and Tcl.
  • A number of deprecated features have been removed.

2022/11/30 - SWIG-4.1.1 released

SWIG-4.1.1 summary:

  • Couple of stability fixes.
  • Stability fix in ccache-swig when calculating hashes of inputs.
  • Some template handling improvements.
  • R - minor fixes plus deprecation for rtypecheck typemaps being optional.

2022/10/24 - SWIG-4.1.0 released

SWIG-4.1.0 summary:

  • Add Javascript Node v12-v18 support, remove support prior to v6.
  • Octave 6.0 to 6.4 support added.
  • Add PHP 8 support.
  • PHP wrapping is now done entirely via PHP's C API - no more .php wrapper.
  • Perl 5.8.0 is now the oldest version SWIG supports.
  • Python 3.3 is now the oldest Python 3 version SWIG supports.
  • Python 3.9-3.11 support added.
  • Various memory leak fixes in Python generated code.
  • Scilab 5.5-6.1 support improved.
  • Many improvements for each and every target language.
  • Various preprocessor expression handling improvements.
  • Improved C99, C++11, C++14, C++17 support. Start adding C++20 standard.
  • Make SWIG much more move semantics friendly.
  • Add C++ std::unique_ptr support.
  • Few minor C++ template handling improvements.
  • Various C++ using declaration fixes.
  • Few fixes for handling Doxygen comments.
  • GitHub Actions is now used instead of Travis CI for continuous integration.
  • Add building SWIG using CMake as a secondary build system.
  • Update optional SWIG build dependency for regex support from PCRE to PCRE2.

2020/06/08 - SWIG-4.0.2 released

SWIG-4.0.2 summary:

  • A few fixes around doxygen comment handling.
  • Ruby 2.7 support added.
  • Various minor improvements to C#, D, Java, OCaml, Octave, Python, R, Ruby.
  • Considerable performance improvement running SWIG on large interface files.

2019/08/21 - SWIG-4.0.1 released

SWIG-4.0.1 summary:

  • SWIG now cleans up on error by removing all generated files.
  • Add Python 3.8 support.
  • Python Sphinx compatibility added for Doxygen comments.
  • Some minor regressions introduced in 4.0.0 were fixed.
  • Fix some C++17 compatibility problems in Python and Ruby generated code.
  • Minor improvements/fixes for C#, Java, Javascript, Lua, MzScheme, Ocaml, Octave and Python.

2019/04/28 - SWIG-4.0.0 released

SWIG-4.0.0 summary

  • Support for Doxygen documentation comments which are parsed and converted into JavaDoc or PyDoc comments.
  • STL wrappers improved for C#, Java and Ruby.
  • C++11 STL containers added for Java, Python and Ruby.
  • Improved support for parsing C++11 and C++14 code.
  • Various fixes for shared_ptr.
  • Various C preprocessor corner case fixes.
  • Corner case fixes for member function pointers.
  • Python module overhaul by simplifying the generated code and turning most optimizations on by default.
  • %template improvements wrt scoping to align with C++ explicit template instantiations.
  • Added support for a command-line options file (sometimes called a response file).
  • Numerous enhancements and fixes for all supported target languages.
  • SWIG now classifies the status of target languages into either 'Experimental' or 'Supported' to indicate the expected maturity level.
  • Support for CFFI, Allegrocl, Chicken, CLISP, S-EXP, UFFI, Pike, Modula3 has been removed.
  • Octave 4.4-5.1 support added.
  • PHP5 support removed, PHP7 is now the supported PHP version.
  • Minimum Python version required is now 2.7, 3.2-3.7 are the only other versions supported.
  • Added support for Javascript NodeJS versions 2-10.
  • OCaml support is much improved and updated, minimum OCaml version required is now 3.12.0.

2017/01/28 - SWIG-3.0.12 released

SWIG-3.0.12 summary:

  • Add support for Octave-4.2.
  • Enhance %extend to support template functions.
  • Language specific enhancements and fixes for C#, D, Guile, Java, PHP7.

2016/12/29 - SWIG-3.0.11 released

SWIG-3.0.11 summary:
- PHP 7 support added.
- C++11 alias templates and type aliasing support added.
- Minor fixes and enhancements for C# Go Guile Java Javascript Octave PHP Python R Ruby Scilab XML.

2016/06/12 - SWIG-3.0.10 released

This release fixes a couple of important regressions in SWIG-3.0.9 for smart pointers and importing Python modules.

More news


Feedback and questions concerning this site should be posted to the swig-devel mailing list.

Last modified : Sat Feb 24 13:56:01 2024