Announce: swig-1.3.12

[Copied from the SWIG users’ mailing list. Although it’s not specifically
noted in the announcement, a number of bug fixes were made for the Ruby
module. --Lyle]

*** ANNOUNCE: SWIG 1.3.12 ***

June 2, 2002

We’re pleased to announce SWIG 1.3.12, the latest installment in the
SWIG development effort. SWIG 1.3.12 is a milestone in the SWIG
project–it is the first release that features a nearly complete C++
type system including full support for namespaces, templates, and
more. Simply stated, SWIG-1.3.12 is more capable than ever.

What is SWIG?


SWIG is a software development tool that reads C/C++ header files and
generates the wrapper code needed to make C and C++ code accessible
from other languages including Perl, Python, Tcl, Ruby, PHP, Java,
Guile, and Mzscheme. Major applications of SWIG include generation of
scripting language extension modules, rapid prototyping, testing, and
user interface development for large C/C++ systems. SWIG has been
available for more than six years and it is used by thousands of
developers–primarily in industry and research.

Although several tools appear to be similar to SWIG on the surface,
SWIG is much more than a simple wrapper generator based on parsing C++
declarations. In fact, the major advantage of SWIG is that it
implements the full C++ type system and it is highly customizable.
This allows SWIG to work with real applications and it allows SWIG to
better understand the relationship between different program
modules. Furthermore, there are very few restrictions on what can be
wrapped by SWIG–in fact, it can generate bindings for nearly every
C/C++ programming construct.

New Features in 1.3.12

  • C++ namespace support *

SWIG-1.3.12 provides full support for C++ namespaces including all C++
namespace related declarations (using, namespace aliases, nested
namespaces, etc.). Namespace support is fully integrated into the
type system, typemaps, customization features, and all other parts of

  • Enhanced template support *

Minimal C++ template support was available in earlier SWIG releases.
SWIG-1.3.12 builds upon this and provides support for templates,
member templates, template specialization, and template partial
specialization. These features have been used to provide new library
modules for wrapping C++ strings and STL vectors. More C++ library
support will appear in later releases.

  • Variable length arguments *

New directives and support is provided for wrapping C variable length
argument functions.

  • Refined PHP4 Module *

Richard Palmer and Sam Lidicott have continued to improve the PHP4

  • Improved support on Cygwin *

The Perl, Python, Tcl, Ruby and Java examples run out of the box on

  • Warning framework *

Most SWIG warning messages can be controlled and error messages have
been improved.

  • Bug fixes *

Numerous bug fixes in many parts of SWIG. See the CHANGES file for

  • Updated documentation *

Continued updates of the SWIG Users Manual are included in this
release. Almost all of the documentation is now up to date with
SWIG-1.3.12 features. However, a lot of the old documentation is
still incomplete. We’re still working on this.


The release is available for download on Sourceforge at

Within the next day, a Windows version will also be made available at

New Development Process

With SWIG1.3, we are adopting an odd/even version numbering scheme for
SWIG. Odd version numbers (1.3, 1.5, 1.7, etc…) are considered to
be development releases. Even numbers (1.4,1.6,1.8) are stable
releases. The current 1.3 effort is working to produce a stable 2.0
release. A stable 2.0 release will not be made until it can
accompanied by fully updated documentation. In the meantime, we will
continue to make periodic 1.3.x releases.

We need your help!

Even if you are perfectly happy with SWIG1.1, we can still use your
feedback. First, we like to know about compilation problems and other
issues concerning the building of SWIG. Second, if SWIG1.3 is unable
to compile your old interface files, we would like to get information
about the features you are using. This information will help us find
bugs in the SWIG1.3 release, develop techniques for supporting
backwards compatibility, and write documentation that addresses
specific issues related to migrating from SWIG1.1 to SWIG1.3.

We are also looking for volunteers who would like to work on various
aspects of SWIG development. SWIG is an unfunded project that would
not exist without volunteers. We are also looking for the developers
of other SWIG language modules. If you have developed a SWIG module
and would like to see it incorporated into the new release, please
contact us to obtain SWIG-CVS access. We are also more than willing
to help port your module from SWIG1.1 to SWIG1.3. Please send email
to for further information.

Please report problems with this release to

— The SWIG Developers