Path: usenet.cise.ufl.edu!usenet.eel.ufl.edu!arclight.uoregon.edu!news-peer.gsl.net!news.gsl.net!news.sprintlink.net!news-peer.sprintlink.net!europa.clark.net!newsfeeds.sol.net!hammer.uoregon.edu!news.texoma.net!zephyr.texoma.net!uunet!in3.uu.net!192.108.254.29!nntp.teleport.com!news.teleport.com!not-for-mail From: beazley@sol.cs.utah.edu (David Beazley) Newsgroups: comp.lang.perl.announce,comp.lang.perl.modules Subject: Announce : SWIG 1.1b5 Followup-To: comp.lang.perl.modules Date: 13 Mar 1997 21:25:45 GMT Organization: University of Utah Computer Science Department Lines: 180 Sender: news-merlyn@gadget.cscaper.com Approved: merlyn@stonehenge.com (comp.lang.perl.announce) Message-ID: <5g9rcp$90i$1@nadine.teleport.com> NNTP-Posting-Host: gadget.cscaper.com X-Disclaimer: The "Approved" header verifies header information for article transmission and does not imply approval of content. Xref: usenet.cise.ufl.edu comp.lang.perl.announce:119 comp.lang.perl.modules:2063 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 swig@cs.utah.edu. To subscribe, send a message 'subscribe swig' to 'majordomo@cs.utah.edu'. Cheers, Dave ---------------------------------------------------------------- Dave Beazley Department of Computer Science University of Utah Salt Lake City, Utah 84112 beazley@cs.utah.edu http://www.cs.utah.edu/~beazley ---------------------------------------------------------------- .