Subject: Announce : SWIG 1.1b5
From: [email-masked] (David Beazley)
Date: 13 Mar 1997 21:25:45 GMT
Newsgroups: comp.lang.perl.announce,comp.lang.perl.modules

March 13, 1997

I'm pleased to announce the availability of SWIG 1.1b5 which can
be obtained via anonymous FTP at :

     ftp://ftp.cs.utah.edu/pub/beazley/SWIG/swig1.1b5.tar.gz

What is SWIG? (The 30 second overview)
--------------------------------------

SWIG is a compiler that takes ANSI C/C++ declarations and builds
a scripting language interface to a number of different scripting
languages including Perl, Python, Tcl, and Guile.   It supports most
kinds of constructs that would appear in a typical ANSI C program,
and a subset of C++.   The general idea behind SWIG is relatively
simple--you specify an interface that might look something like this:

     // File : example.i        
     %module example

     extern int fact(int n);
     class List {
     public:
           List();
          ~List();
           void insert(char *);
           int lookup(char *);
           void remove(char *);
           void output();
           ... etc ...
     };

This file is then parsed by SWIG into an extension module as follows :

     % swig -tcl example.i           #  Build a Tcl module
     % swig -perl5 example.i         #  Build a Perl5 module
     % swig -python example.i        #  Build a Python module

Well, you get the general idea.   At this point, you can start
accessing your C functions and classes from a scripting 
language interface.

What's new in this release?
---------------------------

The SWIG 1.1b5 release features a substantial number of improvements
over the previous 1.0 release.   Some of these features include :

     -   Better support for C++.  This includes, multiple inheritance,
         default arguments, performance improvements, better
         code generation.

     -   Support for typemaps.   Typemaps allow SWIG's treatment of
         any datatype to be user-definable.  With a little work it
         is possible to change the default behavior and pass lists,
         arrays, tuples, and other kinds of scripting language
         constructs into a C extension.  

     -   A completely revised automatic documentation system. 

     -   A user-definable exception handling mechanism.  With this,
         you can turn C-level exceptions into scripting language
         exceptions.  It also works with C++ exceptions.

     -   A large number of bug fixes and enhancements throughout
         the system and for all language modules.

     -   Revised and reorganized documentation (but still a work
         in progress).

What's new for Perl?
--------------------
     
     -   SWIG can now integrate C++ classes and C structures with
         object oriented features of Perl5.  In other words, a C++
         class gets wrapped into an equivalent Perl5 class.  You
         can even inherit from these classes.   Of course, the
         details of how this works are too hideous to describe
         here (besides, you really don't want to know)

     -   Support for the ActiveWare Perl for Win32 port.  Code
         generated by SWIG will compile under both Unix and Win32
         versions of Perl without modification.

What's new for Tcl?
-------------------

     -   A new object-oriented interface that allows C++ objects and
         C structures to behave alot like widgets when used in Tcl.

     -   Support for Tcl 8.0a2.   SWIG can generate C extensions that
         use Tcl_Objects instead of strings for a big performance
         improvement.   (note : this does not work with Tcl 8.0a1 
         so you should upgrade).

What's new for Python?
----------------------

     -   Many code generation improvements--particularly to C/C++
         handling and shadow classes.

     -   Somewhat better support for working with multiple files
         and modules.

System requirements
-------------------

In order to compile and install SWIG, you will need a working 
C++ compiler such as g++ and at least one of the following scripting
languages

      -  Tcl 7.3/Tk 3.6 or any newer version (including Tcl 8).
      -  Perl4 (Unix only)
      -  Perl5.002 or later. 
      -  Python 1.3 or later.
      -  FSF Guile 1.0. (Unix only)

Earlier versions of these packages may still work, but this is
not guaranteed.  

Supported Platforms
-------------------

SWIG should compile cleanly on most Unix platforms and uses a
GNU autoconf script for configuration.   

Makefiles are also included for compiling SWIG under Windows 95 and NT
using MSVC++ 4.0.  SWIG can currently build extensions to Windows
versions of Perl, Python, and Tcl.

A highly experimental and largely untested Macintosh port of SWIG is
also included in this release. 

Standard Disclaimers
--------------------

This is beta release software. While it has been thoroughly tested,
there may be unforeseen problems--especially on Non-Unix platforms.

Additional Information
----------------------

Additional SWIG information can be found at 

      http://www.cs.utah.edu/~beazley/SWIG

Discussion of SWIG related issues can also be found on the SWIG
mailing list at [email-masked].  To subscribe, send a message
'subscribe swig' to [email-masked]'.

Cheers,

Dave

----------------------------------------------------------------
Dave Beazley
Department of Computer Science
University of Utah
Salt Lake City, Utah  84112
[email-masked]              http://www.cs.utah.edu/~beazley
----------------------------------------------------------------