Version 1.3.20 (In progress)
============================

11/04/2003: mkoeppe (Matthias Koeppe)
	    [Guile] Only use the SCM_ API when the function
	    `scm_slot_exists_p' exists (needed for GOOPS support).  
	    This function was renamed during the Guile 1.5 series
	    from `scm_slots_exists_p'.
	    Report the right runtime library when invoked with
	    -scm -ldflags.

11/03/2003: mkoeppe (Matthias Koeppe)
	    [Chicken] Fix #782052.  The --with-chickencfg configure
	    option (and others) were not accepted.

11/02/2003: mkoeppe (Matthias Koeppe)
	    [Guile] Merge new set of GOOPS changes by John Lenz.
	    GOOPS objects are now manipulated directly by the C code.
	    Some fixes to typemap-GOOPS interaction.

11/02/2003: mkoeppe (Matthias Koeppe)
	    [Guile] Remove the file argument to -scmstub and -goops.
	    The Scheme files are now always called MODULE.scm or
	    MODULE-primitive.scm, where MODULE is the module name and 
	    "primitive" can be changed by the -primsuffix option.
	    The Scheme files are now placed in the directory given by
	    the -outdir option, or the current directory.
	    (Patch by John Lenz, slightly modified.)

	    *** INCOMPATIBILITY [Guile] ***

11/02/2003: mkoeppe (Matthias Koeppe)
	    Unify the pointer-conversion runtime API.  The standard
	    functions are:
	     * SWIG_NewPointerObj (POINTER, TYPE, FLAGS)
	        -- Create an scripting object that represents a typed
		   pointer. FLAGS are language specific.
	     * SWIG_ConvertPtr (INPUT, RESULT, TYPE, FLAGS)
	        -- Get a pointer from the scripting object INPUT and
		   store it in the place RESULT.  When a type mismatch 
		   occurs, return nonzero.
	     * SWIG_MustGetPtr (INPUT, TYPE, ARGNUM, FLAGS)
	        -- Get a pointer from the scripting object INPUT and
		   return it.  When a type mismatch occurs, throw an
		   exception.  If ARGNUM > 0, report it as the 
		   argument number that has the type mismatch.
            [Guile]:    No changes.
	    [MzScheme]: No changes.
	    [Perl]:     Add the function SWIG_NewPointerObj.
		        The function SWIG_MakePtr is kept.
			The function SWIG_MustGetPtr is currently not
			supported.
	    [Python]:   Add the function SWIG_MustGetPtr.
	    [Ruby]:     Add the function SWIG_MustGetPtr.
	    [Tcl]:      Remove the "interp" argument of
		        SWIG_NewInstanceObj, SWIG_ConvertPtr,
		        SWIG_ConvertPacked, and SWIG_ConvertPtrFromString.
			The function SWIG_MustGetPtr is currently 
			not supported.
	    No changes to Pike because its pointer conversion code did
	    not look complete.  No changes to PHP4, because I did not
	    understand its runtime code.  No changes to Chicken
	    because major changes are expected soon anyway.  No
	    changes to Java, OCaml, C# because they do not seem to
	    have a pointer-conversion runtime API.

            *** INCOMPATIBILITY [Tcl] ***

11/02/2003: mkoeppe (Matthias Koeppe)
	    [Perl5, PHP4, Pike, Python, Ruby, Tcl]: Use the
	    preprocessor to rename external functions of the SWIG
	    runtime API to follow the naming convention
	    SWIG_<language>_<function>.  This should allow linking
	    more than one interpreter into a program.

10/31/2003: cheetah (William Fulton)
            [C#] Fix since introducing the exception and std::string delegates.
            The fix overcomes linker errors when using more than one SWIG module.
            Problem reported by Andreas Schörk.

10/31/2003: beazley
            Incorporated patch: [ 823302 ] Incr Tcl support.
            Contributed by Alexey Dyachenko.
            Note: needs documentation.

10/31/2003: beazley
            Incorporated patch: [ 829325 ] new Python Module options and features.
            Robin Dunn writes:

            This patch makes a number of changes to the SWIG python module.

            1. Add -apply option, and change the default code
            output to use the foo(*args, **kw) calling syntax
            instead of using apply(). If the -apply option is
            given then code is generated as before. This is very
            similar to Patch #737281 but the new -modern option
            makes the second half of that patch unnecessary so it
            is not included here.
	    
            2. Add -new_repr option. This is the same as my Patch
            #797002 which I will mark as closed since it is no
            longer needed. When this new option is used then the
            __repr__ methods that are generated for proxy classes
            will be more informative and give details about the
            python class and the C++ class.
	    
            3. Add %feature("addtofunc"). It allows you to insert
            one or more lines of code inside the shadow method or
            function that is already generated, instead of
            replacing the whole thing like %feature("shadow") does.
            For __init__ it goes at the end, for __del__ it goes
            at the begining and for all others the code generated
            is expanded out to be like
	    
            def Bar(*args, **kwargs):
            val = _module.Foo_Bar(*args, **kwargs)
            return val
	    
            and the "addtofunc" code is inserted just before the
            return statement. If the feature is not used for a
            particular method or function then the shorter code is
            generated just like before.
	    
            4. A little bit of refactoring to make implementing
            addtofunc a little easier.
	    
            5. Added a -modern command-line flag that will cause
            SWIG to omit the cruft in the proxy modules that allows
            it to work with versions of Python prior to 2.2. The
            result is a simpler, cleaner and faster python proxy
            module, but one that requires Python 2.2 or greater. 

10/31/2003: beazley 
            Incorporated patch: [ 829319 ] XML module tweaks.
            This adds a new command line option -xmllite that 
            greatly reduces the amount of emitted XML code by
            eliminating some fields mostly used in SWIG's
            internal processing.  Contributed by Robin Dunn.

10/31/2003: beazley
            Incorporated patch: [ 829317 ] Adds DohSplitLines function.
            Contributed by Robin Dunn.

10/29/2003: beazley
            Fixed [ 827907 ] argout objects not being wrapped properly (PATH).
            Patch contributed by Salvador Fandiño García.
	     
10/29/2003: beazley
            Fixed [ 826996 ] perl type checking ignores perl subclasses.
            This enhancement makes it so wrapped classes and structs can
            be subclassed in Perl and used normally. 
            Patch contributed by Salvador Fandiño García.

10/16/2003: cheetah (William Fulton)
            [C#] IntPtr marshalled with a void* instead of int in C function 
            declarations. The casts thus look more conventional, for example:

                // old
                DllExport double SWIGSTDCALL CSharp_get_Shape_x(int jarg1) {
                    ...
                    Shape *arg1 = (Shape *) 0 ;
                    arg1 = *(Shape **)&jarg1; 
                    ...
                }
                // new
                DllExport double SWIGSTDCALL CSharp_get_Shape_x(void * jarg1) {
                    ...
                    Shape *arg1 = (Shape *) 0 ;
                    arg1 = (Shape *)jarg1; 
                    ...
                }


10/14/2003: beazley
            Fixed a subtle problem with overloaded methods and smart pointers.
            If a class has overloaded methods like this:

                 class Foo {
                 public:
                     int bar(int x);
                     static int bar(int x, int y);
                 };

            and the class is used as a smart pointer:

                class FooPtr {
                public:
                     Foo *operator->();
                };

            The SWIG would try to expose the static member Foo::bar
            through FooPtr---resulting bogus wrapper code and a compiler
            error.

            Due to the way in which overloading is handled, it is
            extremely difficult to eliminate the static method in
            this case.  Therefore, it is still exposed.  However,
            the generated code now compiles and works.

10/05/2003: mkoeppe (Matthias Koeppe)
	    [Guile, MzScheme, Chicken]: Remove symbol clashes between
	    the runtime libraries by renaming all extern common.swg
	    functions with the preprocessor.

10/05/2003: mkoeppe (Matthias Koeppe)
	    [Guile] Added basic GOOPS support, contributed by John Lenz.
	    See the documentation for details.
	    
            *** NEW FEATURE ***

10/04/2003: mkoeppe (Matthias Koeppe)
	    [Guile] New option, -only-setters, which disables
	    traditional getter and setter procedures for structure slots.

10/03/2003: mkoeppe (Matthias Koeppe)
	    [Guile] Added run test for reference_global_vars by John Lenz.

09/30/2003: beazley
            Partial solution to [ 792180 ] C++ smart-pointer/namespace mixup revisited.
            The problem is not easy to fix (at least it doesn't seem so), but is
            related to the instantiation of qualified templates inside of other
            namespaces.   SWIG now generates an error message in this case rather
            than generating broken wrappers.

09/30/2003: beazley
            Fixed [ 800012 ] ENTER macro from CORE/scope.h clashes with libc search.h.
            Reported by Britton Leo Kerin.

09/30/2003: beazley
            Fixed [ 811518 ] Casting ints to doubles (w/ solution?)
            Addresses a problem with overloading in the Perl module.
            Reported by Gerald Dalley.

09/28/2003: mkoeppe
	    [Guile with -scm option] Fix typo in generated code for
	    procedures-with-setters.  Reported by John Lenz.

09/26/2003: beazley
            Fixed [ 812528 ] externs not correct when throw is in signature.
            Reported by Joseph Winston.
            
09/23/2003: cheetah (William Fulton)
            SWIG was generating a number of symbols that didn't comply with 
            the ISO C/C++ standard, in particular ISO/IEC 14882:1998(E) 17.4.3.1.2
            where double underscores are forbidden as well as symbols starting with
            an underscore followed by an upper case letter. Most of these have
            been rooted out. See new section added to internals.html development
            manual 'Symbol Naming Guidelines for Generated C/C++ Code'.

09/23/2003: cheetah (William Fulton)
            Director typemap name changes:
            inv     => directorin
            outv    => directorout
            argoutv => directorargout

            *** POTENTIAL INCOMPATIBILITY ***

09/19/2003: mrose (Mark Rose)
            [Python] Director constructors now default to __disown = 0, 
	    which is the intended behavior and fixes the director_finalizer 
	    test case under python.

09/12/2003: cheetah (William Fulton)
            [C#] - Typemaps added for std::string and const std::string &.
                 - New delegate for creating a C# string given a char *. It
                   can be used by calling SWIG_csharp_string_callback as shown
                   in the std::string 'out' typemap. Useful if the return type is
                   mapped to a C# string and the calling function is responsible 
                   for cleaning up memory as the C# garbage collector doesn't
                   free the memory created in C/C++ and then returned as a C# string.
                 - The exception delegates have moved into an inner class in the
                   intermediate class, thereby freeing up the static constructor.

09/11/2003: beazley
            (Internals)
            Major refactoring of iteration over lists and hashes.  The
            DOH library now uses iterators.  They work like this:

                List *l = (some list);

                Iterator i;
                for (i = First(l); i.item; i = Next(i)) {
                    // i.item contains the actual list item.
                    // i.item is NULL at end of list
                    ...
                }

                Hash *h = (some hash);
                Iterator j;
                for (j = First(h); j.item; j = Next(j)) {
                    // j.item contains hash table item
                    // j.key  contains hash table key
                    // Both j.item and j.key are NULL at end
                    ...
                }
 
            The old iteration functions Firstitem(), Nextitem(), Firstkey(),
            and Nextkey() are gone.  

            The new iterators are simpler, result in better memory use,
            and may be faster.  Also, there are no longer any problems
            iterating over the same list/hash in multiple places at
            the same time.  For example, this is fine:

                 Iterator i,j;
                 for (i = First(l); i.item; i = Next(i)) {
                    for (j = First(l); j.item; j = Next(j)) {
                         ...
                    }
                 }

            (This never worked in previous versions).
            *** POTENTIAL INCOMPATIBILITY ***.  This will probably break 
            third party extensions to SWIG (or give them further encouragement
            to join the SWIG CVS-tree :-).

09/10/2003: mkoeppe (Matthias Koeppe)
	    [Guile] Fix memory leaks in the "list-vector.i" typemaps.

09/09/2003: mkoeppe (Matthias Koeppe)
	    [Chicken] Use C_mk_bool rather than C_mkbool.  This fixes
	    the wrapping of boolean values for Chicken 1.10 and newer.
	    Reported by Dave <hundo@yahoo.com> / Felix Winkelmann
	    <felix@proxima-mt.de>.

09/05/2003: cheetah (William Fulton)
            [Java] Directors implemented for Java. In summary this is a big new feature 
            which supports upcalls from C++ to Java. Code is generated to support C++ 
            callbacks to call into Java and true polymorphic behaviour for Java classes 
            derived from C++ classes. See java.html for details. Contributed by 
            Scott Michel.

09/05/2003: Tiger
            Created contract example directory at /SWIG/Examples/contract
            Added simple contract examples (simple_c & simple_cxx)
            Modified contract module's output format

            *** NEW FEATURE ***

09/01/2003: cheetah (William Fulton)
            Test-suite build improvements:
            - Multiple build directories working for the test suite, so it is now
              possible to run configure in multiple subdirectories and run the test
              suite in each of these sub directories.
            - 'make distclean' fixed so it doesn't bomb out on the Examples directory
              when using multiple subdiretory builds. Required the following directories
              to be moved:
                Examples/GIFPlot/Perl -> Examples/GIFPlot/Perl5
                Examples/GIFPlot/Php  -> Examples/GIFPlot/Php4
              These new directories used to be symbolic links to the old directory.
              Also the Examples/test-suite/Perl symbolic link has been removed.
            - Running the test-suite, other than from the root directory, say
              in Examples/test-suite/python will now display all the code being
              executed.
            - The following 3 C# compilers are detected during configure and work with 
              the test-suite: Mono, Portable.NET and Microsoft.

09/01/2003: Tiger
            Added inheritance support for design by contract feature.

09/01/2003: beazley
            Fixed [ 794914 ] Wrong types in template specialization.
            SWIG was not handling arguments correctly in template 
            partial specialization.  For example,

                template<class T> class Foo<T *> {
                public:
                    T *blah();
                };

                %template(FooInt) Foo<int *>;

            in this class, the return type of blah was set to
            'int **', but it should really be 'int *'.  This has been
            fixed, but it will affect all prior uses of partial
            specialization.
 
09/01/2003: beazley
            Fixed [ 786394 ] Patch for generated perl code does not compile under RedHat9.
            Reported by Scott Finneran.

09/01/2003: beazley
            Fixed [ 791579 ] (unsigned) long long handled incorrectly (Tcl).
            This was an error in the Tcl typemaps.i file. 
            Reported by Kjell Wooding.
        
09/01/2003: beazley
            Fixed [ 797573 ] no way to rename classes coming from C structures.
            This problem relates to renaming of anonymous structures with a
            typedef.  For example: 

                  %rename(Bar) Foo;
                  typedef struct {
                     ...
                  } Foo;

            Reported by Britton Leo Kerin.
            
09/01/2003: beazley
            Fixed [ 797576 ] -help seems to imply that only tcl-specific options exist.
            Added a comment to alert user to other options.
            Reported by Britton Leo Kerin.

09/01/2003: beazley
            Fixed [ 798205 ] Segfault in SWIG_ConvertPtr.
            Reported by Prabhu Ramachandran.

08/30/2003: mrose (Mark Rose)
            Modified the director typemaps in python/std_complex.i to use the 
	    new-style macro and conversion functions, which eliminated some
	    redundant code.  Fixed a few bugs in these typemaps as well, although
	    more testing is needed.

08/29/2003: mrose (Mark Rose)
            Completed initial support for wrapping abstract classes with directors.
	    Constructor wrappers will be generated for abstract classes that have
	    directors, and instances of the director classes will be created regardless
	    of whether the proxy class has been subclassed in the target language.
	    No checks are made during construction to ensure that all pure virtual
	    methods are implemented in the target language.  Instead, calls to
	    unimplemented methods will throw SWIG_DIRECTOR_PURE_VIRTUAL_EXCEPTION
	    exceptions in C++.

	    Integrated Prabhu Ramachandran's typemap patches, which provide director
	    typemap support for enums and std::size_t, and fix a couple bugs in the 
	    director std::vector<> typemaps.

08/29/2003: cheetah (William Fulton)
            [C#] Implemented exception handling for throwing C# exceptions from C/C++ code.
            A few delegate functions are available for calling which then throw the C#
            exception. Use the SWIG_CSharpThrowException function from C/C++ typemaps.
            See the generated wrapper code or csharphead.swg for all available exceptions.
            Example:

              SWIG_CSharpThrowException(SWIG_CSharpException, "exception description");

            The 'throws' typemaps are also now implemented, so code is automatically 
            generated to convert any C++ exception into a C# System.Exception when the C++ 
            method declares an exception specification such as:

               int foo() throw(Bar);

            Also any parameters that are references to a C++ class or a class passed by value
            and are passed as a C# null will now throw a C# NullReferenceException.

08/29/2003: cheetah (William Fulton)
            [C#] Fix to match the calling convention of all pinvoke methods so that they
            match the calling convention used by default in the C# 'static extern' declarations 
            (__stdcall is used on Windows).

08/19/2003: cheetah (William Fulton)
            [Java] Reworked std::string typemaps. Fixes a number of string in std namespace 
            problems. For example %template vector<string>. The templated class' get method 
            wasn't returning a Java String, but a SWIGTYPE_p_string. Reported
            by Zach Baum.

08/15/2003: beazley
            Fixed [ 763522 ] 1.3.19 segfault in SwigType_add_pointer/DohInsertitem.
            Related to problem with unnamed class handling in Perl module.

08/15/2003: beazley
            Fixed [ 763563 ] Missing indication of optional arguments.
            Tcl module.  Reported by Krzysztof Kozminski.

08/15/2003: beazley
            Fixed [ 787432 ] long param handled as int.  Tcl module
            now uses Tcl_GetLongFromObj to convert integer values.

08/11/2003: beazley
            Fixed [ 775989 ] numeric template parameters.   There were
            some errors in template expansion related to the use of
            arrays where the array dimension was a template parameter.
            It should work now.  Reported by Bryan Green.

08/10/2003: mrose (Mark Rose)
            Added a director typemap (outv) for return by value and cleaned up up a few 
	    of the commented director typemaps.

08/10/2003: mrose (Mark Rose)
            Fixed constructor generation for director classes to ignore private
	    constructors.  Protected constructors are also ignored for now, pending
	    a solution to the problem of wrapping classes that only define protected
	    constructors.

08/07/2003: cheetah (William Fulton)
            New commandline option -outdir <dir> to specify where the language specific
            files are to be generated. This is useful for target languages like Python,
            Java etc which generate proxy files in the appropriate language.
            This option does not apply to the C/C++ wrapper file.

08/07/2003: cheetah (William Fulton)
            On Windows the generated files (other than the _wrap.c or _wrap.cxx files)
            were sometimes incorrectly being generated into the current directory unless
            the input file used the Unix path separator. The Windows path separator 
            should now be used. Bug reported by Robert Davies.

08/07/2003: beazley
            Added array variable set typemap to Perl module.

08/07/2003: beazley
            Fixed [ 775677 ] Array init causes codegen bug..

08/07/2003: beazley
            Fixed [ 779062 ] Class"\n"::foo not supported.  SWIG
            should now correctly handle whitespace in between 
            namespace qualifiers.  For example "A :: Foo :: Bar".
            
07/31/2003: cheetah (William Fulton)
            Fixes for parameters which are classes that are passed by value and have 
            a default value. A copy constructor for SwigValueWrapper is required 
            (SF #780056). Also fixed memory leak in these circumstances. These mods
            also fix SF #780054.

07/28/2003: beazley
            Improved run-time error message for pointers in Python module.
            Contributed by Zooko.

07/10/2003: ballabio (Luigi Ballabio)
            [Almost all languages] Wrappers for std::pair added.
	    Typemaps for Python, Ruby, Guile and MzScheme.

07/01/2003: mkoeppe (Matthias Koeppe)
	    [Chicken] Handle the case of more than one argout typemap
	    per function.

06/29/2003: cheetah (William Fulton)
            [Java, C#] SF #670949 request. The destructor wrapper function name is now 
            configurable.  A new attribute called methodname in the 
            javadestruct/javadestruct_derived (Java) or csdestruct/csdestruct_derived (C#)
            typemaps specifies the method name. For example in Java the destructor is 
            wrapped by default with the delete method:

                %typemap(javadestruct, methodname="delete") SWIGTYPE {...}

06/27/2003: cheetah (William Fulton)
            [Java, C#] The throws attribute for adding exception classes to the throws
            clause also now works with the following typemaps: 
            newfree
            javain, javaout (Java)
            csin, csout (C#)

            For example, the 'AnException' will be added to the throws clause in the
            proxy function:

            %typemap(javaout, throws="AnException") int {
                int returnValue=$jnicall;
                if (returnValue==0) throw new AnException("Value must not be zero");
                return returnValue;
            }

06/25/2003: mrose (Mark Rose)
            [Python] Director typemap marshalling checks for null pointers when
	    walking the parameter list instead of relying soley on the parameter
	    count.  Cures a segfault that occured for multiple argument inv typemaps.
	    Someone with more Swig experience should probably review this code.

06/24/2003: mkoeppe (Matthias Koeppe)
	    [Chicken] Don't emit calls to "C_check_for_interrupt",
	    which may result in an endless loop.  Patch by felix@proxima-mt.de.

06/20/2003: cheetah (William Fulton)
            [C#] Finalizers now use destructor syntax as the override which was used in 
            the Finalize method is not in the ECMA standards, spotted by the MS compiler.

06/10/2003: cheetah (William Fulton)
            [C#] A number of changes have been made to remove the Java naming 
            that was used in the C# module.
            
            Typemap name changes:
            jni                         -> ctype
            jtype                       -> imtype
            jstype                      -> cstype
            javain                      -> csin
            javaout                     -> csout
            javainterfaces              -> csinterfaces
            javabase                    -> csbase
            javaclassmodifiers          -> csclassmodifiers
            javacode                    -> cscode
            javaimports                 -> csimports
            javaptrconstructormodifiers -> csptrconstructormodifiers
            javagetcptr                 -> csgetcptr
            javafinalize                -> csfinalize

            Feature name changes:
            javaconst                   -> csconst
            javamethodmodifiers         -> csmethodmodifiers

            Pragma changes:
            pragma(java)                -> pragma(csharp)
            jniclassbase                -> imclassbase
            jniclassclassmodifiers      -> imclassclassmodifiers
            jniclasscode                -> imclasscode
            jniclassimports             -> imclassimports
            jniclassinterfaces          -> imclassinterfaces

            Special variable name changes:
            $javaclassname              -> $csclassname
            $javainput                  -> $csinput
            $jnicall                    -> $imcall

            This will break SWIG interface files that use these typemaps, features
            and pragmas. Please update your code or use macros for backwards
            compatibility.

            *** POTENTIAL INCOMPATIBILITY FOR C# MODULE ***

06/10/2003: mkoeppe (Matthias Koeppe)
	    [MzScheme] Applied MzScheme module updates contributed by
	    John Lenz <jelenz@students.wisc.edu>.

            - Updated mzscheme to use SWIG's common runtime type
              system from common.swg. 

	    - The Lib/mzscheme directory has been reorganized to
              standardize names across the language modules:
              mzscheme.i was moved to mzscheme.swg, mzscheme.swg and
              mzschemedec.swg have been removed, mzrun.swg (which
              contains the runtime code) has been added.

            - The swig_proxy structure was renamed to swig_mz_proxy.
              swig_mz_proxy now contains a pointer to a swig_type_info
              structure.  

	    - Added varin and varout typemaps for SWIGTYPE [] and
              SWIGTYPE &.

	    - Garbage collection by calling scheme_add_finalizer() has
              been added.

	    *** NEW FEATURE [MzScheme] ***

06/10/2003: cheetah (William Fulton)
            [Java] New typemaps: javadestruct and javadestruct_derived
            for the C++ destructor wrapper. The javadestruct version gets used by
            classes at the top of an inheritance chain and the javadestruct_derived 
            version gets used by other classes.

            [C#] cildispose and cildisposeoverride typemaps replaced by
            csdestruct and csdestruct_derived typemaps. The delete()
            method has been removed and its functionality put into these
            typemaps designed for the Dispose() method.

            - New typemaps csinterfaces and csinterfaces_derived replace
            the javainterfaces typemap. Also fixes the peculiarity of all classes
            in an inheritance chain individually deriving from the IDisposable 
            interface.

            - New typemap csfinalize for finalizers. C++ destructors are now called
            by garbage collector during finalization. Problem reported by 
            Andreas Schörk.

06/10/2003: Tiger
	    Modified contract code for error message output.
            Contract code can now print out simple error message.
            Modified contract code to prepare for inheritance
            
06/03/2003: mkoeppe
	    [Guile] Applied Guile module updates contributed by 
	    John Lenz <jelenz@students.wisc.edu>. 

	    - SWIG currently uses Guile's gh_ API, which is marked as
	      deprecated in Guile 1.6 and will be removed in Guile
	      1.9.  This change introduces a command-line flag "-scm"
	      which causes SWIG to generate wrappers that use Guile's
	      SCM API instead; this requires Guile >= 1.6.
	    
	    - The Lib/guile directory has been reorganized to
              standardize names across language modules: guiledec.swg
              and guile.swg have been moved into guile_gh_run.swg,
              guile.i has been moved to guile_gh.swg, guile_scm.swg
              and guile_scm_run.swg which contain the SCM API stuff
              have been added

	    - ghinterface.i, which contains the defines from the gh_
              functions to the scm_functions has been added

	    - The API for dealing with pointer objects is now
	      SWIG_ConvertPtr, SWIG_MustGetPtr, SWIG_NewPointerObj.

            - Added varin and varout typemaps for SWIGTYPE [] and SWIGTYPE &

            - Garbage collection has been added.

            *** NEW FEATURE [Guile] ***
	    	
06/01/2003: cheetah (William Fulton)
            Dimensionless arrays such as 

                int foo[] = {1, 2};
                extern int bar[];

            produce a warning that the variable is read-only. Depending on the target
            language, this used to cause compile errors or generate a setter that
            generated a runtime error. A setter cannot be automatically generated
            because the array size cannot be determined by SWIG. A varin, globalin 
            or memberin typemap (depending on the target language) must be written 
            by the user.

05/29/2003: beazley
            Refinement to default typemap matching and arrays.  When an
            array is declared like this:

                       int foo[4];

            The default typemap now resolves to 

                       SWIGTYPE [ANY]

            If no match is found for that, it then resolves to

                       SWIGTYPE []

            If no array dimension is specified in the original declaration,
            the SWIGTYPE [] is used right away. 

            Note: This change has been made to resolve problems related to
            arrays with and without dimensions.  For example, sometimes SWIG
            was generating setter functions for array variables with no dimensions
            (an error). Likewise, SWIG sometimes made arrays with dimensions
            read-only (also an error).  This fixes the arrays_global test
            problem.
                        
05/28/2003: beazley
            Fixed subtle type handling bug with references and pointers.
            If you had functions like this:

                  typedef Foo Bar;

                  Foo *func1();
                  void func2(Bar &x);

            Then func2() wouldn't accept objects returned by func1()
            because of a type error.   It should work now.
            Reported by Brian Yang.

05/21/2003: cheetah (William Fulton)
            Fixes to some of the Visual C++ example project files which would not 
            work with spaces in the paths held in the environment variables used to 
            point to the target language's library / include directory.
            SF bug #740769

05/21/2003:  songyanf (Tiger)
            Added -contracts option.
            First try of the idea of "Wrap by Contract": 
            build up realiable cross-language module by wrapping with SWIG.
            Implemented basic assertion
            (preassertion & postassertion & invariant)
            for simple C/C++ functions.
            
            Current format of contracts are:
            %contract class_name :: func_name (paras...) {
            require:
                   boolean exprs;
                   exprs;
            ensure:
                   boolean expr;
                   exprs;
            invariant:
                   boolean expr;
                   exprs;
            }

            *** NEW FEATURE ***
	    	
05/19/2003: cheetah (William Fulton)
            Build tweaks. There were a few preprocessor definitions which were
            specified in the Makefile for passing on the commandline when compiling.
            These are now all defined in swigconfig.h. Autoconf doesn't normally 
            allow installation directories to be defined in this config header file, 
            but an autoconf archive macro enables this. This macro along with future 
            autoconf macros are going to be put in the Tools/config directory.

            'swig -version' now reports the target build platform.

05/11/2003: cheetah (William Fulton)
            [C# and Java] Fix to the following typemaps:

            javabase, javainterfaces, javaimports, javaclassmodifiers,
            javaptrconstructormodifiers, javafinalize, javagetcptr & javacode.

            These are the typemaps for modifying/generating proxy classes.
            Previously the typemaps would use the proxy class name and not the 
            C++ type, which was inconsistent with all other typemaps. 

            In most circumstances the proxy class name and the C++ class name/type 
            is the same except for classes in namespace, templated classes etc. so
            this shouldn't affect most cases.

            *** POTENTIAL INCOMPATIBILITY FOR JAVA and C# MODULES ***

05/01/2003: beazley
            Fixed problem with return by value, const, and private constructors.
            For example:

                class B {
                private:
                   B();
                public:
                   B(const B&);
                };

                class A {
                   ...
                   const B returnB() const;
                   ...
                };

            Problem and patch suggestion reported by Bill Hoffman.

04/29/2003: cheetah (William Fulton)
            Build changes:
            - Single autoconf invocation - autoconf in the Tools directory has gone.

            - Libtool bootstrapped when running autogen.sh. This requires anyone
              using the cvs version of SWIG to have libtool installed on their
              machine. Suggest version 1.4.2 or higher, preferably the latest - 1.5.

            - Automake is now used to build the runtime libraries in conjunction 
              with libtool.

            - Runtime libraries are now successfully built as DLLs on Cygwin.

            - Skipping languages is no longer just determined in the top level 
              makefile but in configure.in. This info is used for building
              the runtime libraries and for running the examples and test-suite.

            - These changes have fixed multiple build directory builds, that is
              building from directories other than the top level directory. 
              Installation from multiple build directories also working. An initial
              configure in the top level directory is no longer needed as described
              in 04/02/2003 entry. A 'make distclean' will be needed before building
              in a directory other than the top level directory if the autotools 
              have been run from this top level directory at some point, but 
              autoconf will tell you this. Note that 'make check' only works from 
              the top level directory at the moment.

04/28/2003: beazley
            Fixed [ 723471 ] Wrapper_print() fails with preprocessor directives.

04/28/2003: beazley
            Minor refinement of const static member variable handling 
            described in CHANGES 08/11/2002.   Previously, SWIG merely
            checked to see if there was an initializer in the declaration.
            Now, SWIG additionally checks to make sure the static member
            is const.

04/25/2003: ljohnson (Lyle Johnson)
            [Ruby] Added a kind of limited support for multiple inheritance,
            activated using the -minherit command-line option. I've also updated
            the "C++ Inheritance" section of the Ruby documentation to discuss
            how this works, and its limitations. Also also modified the minherit.i
            test case to run against this.

04/25/2003: ljohnson (Lyle Johnson)
            [Ruby] Added the -globalmodule command-line option for the Ruby
            module, for wrapping stuff into the global module (Kernel) instead
            of a nested module. Updated documentation accordingly.

04/23/2003: mrose (Mark Rose)
            Fixed symname error in director calls to Python methods
	    that extend C++ operators.

	    Stopped director destructor wrappers from calling __set_up,
	    which was leaving the director flag in an inconsistent state.

04/23/2003: beazley
            Fixed problem with namespace resolution and nested namespaces.
            Reported by Alfred Lorber (and Marcelo Matus).

04/16/2003: cheetah (William Fulton)
            Patch for Java examples and test-suite to run on Mac OS X.

04/15/2003: ljohnson (Lyle Johnson)
            [Ruby] Incorporated Nobu Nakada's patches for supporting the Ruby
            1.8 allocation framework.

04/15/2003: ljohnson (Lyle Johnson)
            [Ruby] Replaced all uses of the deprecated STR2CSTR() macro with the
            safer StringValuePtr() macro. For more information, see ruby-talk:67059
            and follow-ups to that post.

04/11/2003: beazley
            Fixed problem with preprocessor macro expansion.  For example:
 
                #define min(x,y) ((x) < (y)) ? (x) : (y) 
                int f(int min);

            Reported by Sebastien Recio.

04/10/2003: cheetah (William Fulton)
            [Java] Added a runtime check to typemaps in arrays_java.i library to check 
            that the Java array passed in is the same size as the C array and throw an 
            exception if not.

            Also fix to use delete instead of free for arrays created using new.

04/07/2003: cheetah (William Fulton)
            Remove GCC3 warning when compiling the examples and test-suite:

              cc1plus: warning: changing search order for system directory "/usr/include"
              cc1plus: warning: as it has already been specified as a non-system directory 

            See SF patch #715531 submitted by Gerald Williams

04/03/2003: cheetah (William Fulton)
            [C#] Improved wrapping of enums and constants. These were previously
            wrapped as C# variables rather than constants. Either these are wrapped
            as readonly (runtime) constants or compile time constants, depending on
            the %javaconst directive (The directive is likely to change name soon).
            For example wrapping:
              %javaconst(0);
              #define ABC 22
              %javaconst(1) XYZ;
              #define XYZ 33
            is now:
              public static readonly int ABC = examplePINVOKE.get_ABC();
              public const int XYZ = 33;

04/03/2003: cheetah (William Fulton)
            [Java] Global constants and enums are put in their own interface called
            xxxConstants, where xxx is the module name. This is an improvement as 
            it is possible to derive (implement) a Java class from the xxxConstants
            interface to improve the syntax; namely when wrapping:
              enum {ONE=1, TWO, THREE};
            accessing these from a Java class implementing xxxConstants is neater:
              int number = ONE;
            than the previous:
              int number = xxx.ONE;

            Patch submitted by Dave Dribin.

04/02/2003: cheetah (William Fulton)
            Build improvements for multiple builds. This allows one to build
            the SWIG executable and runtime libraries for different platforms/compilers 
            etc by running configure in different directories. This isn't 100% just 
            yet and won't be until libtool is better configured... a 'configure' and 
            'make distclean' needs to be run in the root directory before it all works.
            For example:
              $ ./configure
              $ make distclean
              $ mkdir config1; cd config1; ../configure CC=gcc CXX=g++; make; cd ..
              $ mkdir config2; cd config2; ../configure CC=cc CXX=c++; make; cd ..
            
            To be improved. A 'make check' does not work yet either. 

04/01/2003: beazley
            Fixed template partial specialization argument expansion bug.
            This showed up when trying to use std_vector.i with vectors
            of pointers.

03/31/2003: cheetah (William Fulton)
            Fix for parallel make builds of SWIG, for example
              make -j 4
            Build failure reported by Bill Clarke.

03/28/2003: beazley
            Released 1.3.19.


