/tags/rel-1-3-25/SWIG/CHANGES.current
Unknown | 595 lines | 450 code | 145 blank | 0 comment | 0 complexity | 2263865ce65a81e5eba208c5883bc0ab MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- Version 1.3.25 (June 11, 2005)
- ==============================
- 06/11/2006: mkoeppe
- [Guile] Fix handling of anonymous-enum variables.
- 06/10/2005: mkoeppe
- [Guile] Fix for function arguments that are passed by
- copy-of-value. Fix for global "const char *" variables.
- Fix testcases arrays_dimensionless, arrays_global.
- 06/08/2005: wsfulton
- Fix for when a base class defines a symbol as a member variable and a derived class defines
- the same symbol as a member method.
- 06/08/2005: wsfulton
- [C#] More fixes for virtual/new/override modifiers - when a method has protected access
- in base and public access in derived class.
- 06/02/2005: wsfulton
- Fix #1066363 - Follow convention of release tarball name matching directory name.
- 06/02/2005: wsfulton
- [C#, Java] Fix #1211353 - typesafe enums (and Java proper enums) wrappers when enum value
- is negative.
- 05/27/2005: wsfulton
- Modernised and tidied up Windows macros --> SWIGEXPORT, SWIGSTDCALL. They can be overridden
- by users via -D compiler directives if need be.
- 05/26/2005: wsfulton
- %csmethodmodifiers can be applied to variables as well as methods now.
- In addition to the default 'public' modifier that SWIG generates, %csmethodmodifiers will also
- replace the virtual/new/override modifiers that SWIG thinks is appropriate. This feature is
- useful for some obscure cases where SWIG might get the modifiers incorrect, for example
- with multiple inheritance and overriding a method in the base class.
- *** POTENTIAL INCOMPATIBILITY FOR C# MODULE ***
- 05/25/2005: wsfulton
- Added missing constructors to std::pair wrappers (std_pair.i) for all languages.
- 05/25/2005: wsfulton
- [C#] Added std::pair wrappers in std_pair.i
- 05/25/2005: wsfulton
- [C#] The C# 'new' and 'override' modifiers will be generated when a C++ class inherits methods
- via a C++ 'using' declaration.
- 05/25/2005: wsfulton
- Fix for exception specifications previously being ignored in classes that inherited methods
- from 'using' declarations, eg calls to Derived::bar below will convert C++ exceptions into
- a target language exception/error, like it always has done for Base::Bar.
- class Base {
- virtual bar() throw (std::string);
- };
- class Derived : public Base {
- using Base::bar;
- };
- 05/23/2005: wsfulton
- Fixes for detecting virtual methods in %extend for the -fvirtual option and C# override and new
- method modifiers.
- 05/23/2005: wsfulton
- [C#] The 'new' modifier is now generated on the proxy method when a method in a derived
- class is not polymorphic and the same method exists in the derived class (ie it hides
- the base class' non-virtual method).
- 05/23/2005: wsfulton
- [Java, C#] Fixes to detection of covariant return types - when the class hierarchy is more
- than 2 classes deep.
- 05/21/2005: wsfulton
- [Java] std::wstring typemaps moved from std_string.i to std_wstring.i
- 05/21/2005: wsfulton
- Fix for crash in DohStrstr, bug #1190921
- 05/21/2005: wsfulton
- [TCL] Fix for methods with similar names when showing list of names on error - bug #1191828.
- Patch from Jeroen Dobbelaere.
- 05/21/2005: wsfulton
- [TCL] long long overloading fix - bug #1191835, patch from Jeroen Dobbelaere.
- 05/21/2005: wsfulton
- Fix bug #1196755 to remove debug from swigtcl8.swg.
- 05/19/2005: wsfulton
- [C# and -fvirtual option] Fix for the override key not being generated in the derived class when a
- virtual method's return type was a typedef in either the base or derived class. Also ensures the
- method is eliminated when using the -fvirtual option. For example, Derived.method now has the C#
- override keyword generated:
- typedef int* IntegerPtr;
- struct Base {
- virtual IntegerPtr method();
- };
- struct Derived : Base {
- int * method() const;
- };
- [C#] Fix for the override key being incorrectly generated for virtual methods when a base class
- is ignored with %ignore.
- 05/13/2005: wsfulton
- [Java] Fixes to remove "dereferencing type-punned pointer will break strict-aliasing rules"
- warnings in C wrappers when compiling C code with 'gcc -Wall -fstrict-aliasing'. Patch from
- Michael Cahill. This modifies many of the casts slightly, for example
- arg1 = *(DB_ENV **)&jarg1;
- to
- arg1 = *(DB_ENV **)(void *)&jarg1;
- 05/12/2005: wsfulton
- [C#] Support for C# attributes. C# attributes can be generated:
- 1) On a C/C++ type basis by specifying an inattributes and/or outattributes typemap attribute
- in the imtype or cstype typemaps (for C# return type or C# parameter type attributes).
- 2) On a wrapped method or variable by specifying a csattributes feature (%feature).
- 3) On a wrapped proxy class or enum by specifying a csattributes typemap.
- Examples are in the C# documentation (CSharp.html).
- 04/29/2005: wsfulton
- New configure option to turn off the default maximum compiler warning as
- they couldn't be removed even when overriding CFLAGS and CXXFLAGS with configure
- (./configure CFLAGS= CXXFLAGS=). To turn the maximum warnings off, run:
- ./configure --without-maximum-compile-warnings
- 04/28/2005: wsfulton
- Patch from Scott Michel which reworks the Java constructor and finalize/destructor typemaps,
- for directors to reduce the number of overall Java typemaps. Added the director_take and
- director_release typemaps to emulate other modules' __disown__ functionality.
- *** POTENTIAL INCOMPATIBILITY FOR JAVA DIRECTORS ***
- 04/28/2005: wsfulton
- [C#] Fixed problems due to the over eager garbage collector. Occasionally the
- garbage collector would collect a C# proxy class instance while it was being used
- in unmanaged code if the object was passed as a parameter to a wrapped function.
- Needless to say this caused havoc as the C# proxy class calls the C++ destructor
- when it is collected. Proxy classes and type wrapper classes now use a HandleRef,
- which holds an IntPtr, instead of a plain IntPtr to marshal the C++ pointer to unmanaged
- code. There doesn't appear to be any performance degradation as a result of this
- modification.
- The changes are in the proxy and type wrapper classes. The swigCPtr is now of type HandleRef
- instead of IntPtr and consequently the getCPtr method return type has also changed. The net
- effect is that any custom written typemaps might have to be modified to suite. Affected users
- should note that the implementation uses the new 'out' attribute in the imtype typemap as the
- input type is now a HandleRef and the output type is still an IntPtr.
- *** POTENTIAL INCOMPATIBILITY FOR C# MODULE ***
- 04/28/2005: wsfulton
- [C#] Support for asymmetric type marshalling added. Sometimes the output type needs to be
- different to the input type. Support for this comes in the form of a new optional 'out'
- attribute for the ctype, imtype and cstype typemaps. If this typemap attribute is not
- specified, then the type used for both input and output is the type specified in the
- typemap, as has always previously been the case. If this typemap attribute is specified,
- then the type specified in the attribute is used for output types and the type specified
- in the typemap itself is used for the input type. An output type is a return value from
- a wrapped method or wrapped constant and an input type is a parameter in a wrapped method.
- An example shows that char * could be marshalled in different ways,
- %typemap(imtype, out="IntPtr") char * "string"
- char * function(char *);
- The output type is thus IntPtr and the input type is string. The resulting intermediary C# code is:
- public static extern IntPtr function(string jarg1);
- 04/22/2005: mkoeppe (Matthias Koeppe)
- [Guile] Fix generation of "define-method" for methods of
- classes with a constructor. Reported by Luigi Ballabio.
- 04/15/2005: wuzzeb (John Lenz)
- [Chicken]
- For wrapped functions that return multiple values (using argout),
- SWIG CHICKEN now returns them as multiple values instead of as
- a list. They can then be accessed using (call-with-values).
- 04/14/2005: wuzzeb (John Lenz)
- [Chicken]
- + Added a whole bunch of new _runme scripts into the chicken test
- suite. Also fix some bugs these new scripts turned up.
- + Added optimization when returning a wrapped proxy class. Before,
- a minor garbage collection was invoked every time a function returned.
- + All the chicken Examples should now run correctly
- 04/14/2005: wsfulton
- [C#] More fixes for typemap matching when wrapping variables, in particular
- std::string, so that std::string variables can be easily marshalled with
- a C# string property using:
- %include "std_string.i"
- %apply const std::string & { std::string *variable_name };
- std::string variable_name;
- (Recall that all class variables are wrapped using pointers)
- 04/05/2005: wuzzeb (John Lenz)
- [Chicken]
- + Added Examples/chicken/egg, an example on how to build a chicken
- extension library in the form of an egg. Also updated the
- documentation on the different linking options.
- + chicken test-suite now has support to check SWIG with the -proxy
- argument if there exists a _proxy_runme.ss file.
- + More fixes for overloaded functions and -proxy
- 03/31/2005: wsfulton
- Turned on extra template features for all languages which were
- previously only available to Python.
- This enables typemaps defined within a templated class to be used as
- expected. Requires %template on the templated class, %template() will
- also pick up the typemaps. Example:
- template <typename T> struct Foo {
- ...
- %typemap(in) Foo "in typemap for Foo<T> "
- or
- %typemap(in) Foo<T> "in typemap for Foo<T> "
- };
-
- %template(Foo_i) Foo<int>;
- %template() Foo<double>;
-
- will generate the proper 'in' typemaps wherever Foo<int> and Foo<double>
- are used.
- 03/30/2005: mkoeppe (Matthias Koeppe)
- [MzScheme] Patch from Hans Oesterholt for supporting MzScheme 30x.
- 03/29/2005: wuzzeb (John Lenz)
- [Chicken]
- + Reallow older versions of chicken (1.40 to 1.89) by passing -nocollection
- argument to SWIG
- + %import now works correctly with tinyclos. (declare (uses ...)) will be
- exported correctly.
- + TinyCLOS proxy classes now work correctly with overloaded functions
- and constructors.
- 03/29/2005: wsfulton
- [Java] Patch from Scott Michel for directorout typemaps. Java directors
- require the directorout typemaps like the other languages now. The new
- typemaps provide fixes for methods where the return type is returned
- by reference (this cannot automatically be made thread safe though).
- 03/22/2005: wsfulton
- Enum casting fixes. Visual C++ didn't like the C type casting SWIG produced
- when wrapping C++ enum references, as reported by Admire Kandawasvika.
- 03/21/2005: wsfulton
- [Perl] SF #1124490. Fix Perl macro clashes when using Visual Studio's STL string,
- so now projects can #include <string>.
- 03/21/2005: wsfulton
- Fixed %varargs which got broken with the recent default argument changes.
- Also works for Java and C# for the first time now.
- 03/17/2005: wuzzeb (John Lenz)
- [Chicken]
- + Fix a whole bunch of bugs in the chicken module. The entire
- test suite now compiles, with the exception of the tests that require
- std_vector.i, std_deque.i, and so on, which chicken does not have yet.
- + Add support for %exception and %typemap(exceptions). Exceptions are
- thrown with a call to (abort) and can be handled by (handle-exceptions)
- 03/15/2005: wsfulton
- [Java] Patch from Scott Michel for directors. Modifications to the typemaps
- giving users fine control over memory ownership and lifetime of director classes.
- Director classes no longer live forever by default as they are now collectable
- by the GC.
- 03/15/2005: wuzzeb (John Lenz)
- [Chicken] Add support for adding finalizers garbage collected objects.
- Functions that return new objects should be marked with %newobject and
- input arguments which consume (or take ownership) of a pointer should
- be marked with the DISOWN typemap.
- Also add support for correctly checking the number of arguments passed
- to a function, and raising an error if the wrong number are passed.
- 03/14/2005: wuzzeb (John Lenz)
- Add --without-alllang option to configure.in, which is the same as
- passing all the --without-python --without-perl5 etc... that Matthias added.
- 03/09/2005: wsfulton
- [Php] Memory leak fix for functions returning classes/structs by value.
- 03/08/2005: wsfulton
- [Perl] Fix for Perl incorrectly taking memory ownership for return types that
- are typedefs to a struct/class pointer. Reported by Josh Cherry.
- 03/07/2005: wsfulton
- [C#] Various exception changes for the std::vector wrappers. These now more
- accurately mirror the same exceptions that System.Collections.ArrayList throw.
- 03/07/2005: wsfulton
- [C#] Fix undefined behaviour after any of the std::vector methods
- throw an exception.
- 03/07/2005: wsfulton
- [C#] When null is passed for a C++ reference or value parameter, the
- exception thrown has been corrected to an ArgumentNullException instead
- of NullReferenceException as recommended in the .NET Framework documentation.
- The default throws typemaps turn a C++ exception into an ApplicationException,
- not a SystemException now.
- 03/07/2005: wsfulton
- [C#] Numerous changes in C# exception handling have been made over the past
- few weeks. A summary follows:
- The way in which C++ exceptions are mapped to C# exceptions is quite different.
- The change is to fix C# exceptions so that the C++ exception stack is correctly
- unwound as previously C++ exceptions were being thrown across the C PInvoke layer
- into the managed world.
- New typemap attributes (canthrow and excode) have been introduced to control the
- mapping of C++ to C# exceptions. Essentially a callback into the unmanaged world
- is made to set a pending exception. The exception to throw is stored in thread local
- storage (so the approach is thread-safe). The typemaps are expected to return
- from unmanaged code as soon as the pending exception is set. Any pending exceptions
- are checked for and thrown once managed code starts executing. There should
- be minimal impact on execution speed during normal behaviour. Full details will be
- documented in CSharp.html.
- The SWIG_CSharpThrowException() function has been removed and replaced with the
- SWIG_CSharpSetPendingExceptionArgument() and SWIG_CSharpSetPendingException()
- functions. The original name has been deliberately changed to break old code as
- the old approach was somewhat flawed. Any user defined exceptions that follow the
- same pattern as the old approach should also be fixed.
- Numerous new .NET framework exceptions are now available for easy throwing from
- unmanaged code. The complete list is:
- ApplicationException, ArithmeticException, DivideByZeroException,
- IndexOutOfRangeException, InvalidOperationException, IOException,
- NullReferenceException, OutOfMemoryException, OverflowException,
- SystemException, ArgumentException, ArgumentNullException and
- ArgumentOutOfRangeException.
- *** POTENTIAL INCOMPATIBILITY FOR C# MODULE ***
- 05/05/2005: mmatus
-
- Fix several memory leaks around. Even when we survive knowning
- swig is a memory leak factory, it was a little out of
- control. To run std_containers.i in the python test-suite,
- swig was using ~260MB, now it uses 'only' ~40MB, which is
- the same ammount that g++ uses, so, is not that bad.
- In the process, I found a couple of extra Deletes, which
- in some cases could trigger seg. faults and/or
- DOH/asserts.
-
- [python] Better support for directors + exception. More
- verbose errors and added an unexpected exception handler.
- [python] Fix memory leak for the
- std::vector<std::vector<int> >
- case,reported by Bo Peng.
- [python] Fix SwigPyObject compare problem reporte by
- Cameron Patrick.
- [python] Fix several warnings in the generated code
- for gnu-gcc, Intel and VC7.1 compilers.
- 02/25/2005: wuzzeb (John Lenz)
- Update documentation to use CSS and <div> instead of <blockquote>
- I used a script to convert the docs, and it set all the box classes
- to be "code". There are actually 4 different classes,
- "shell", "code", "targetlang", and "diagram". We need to go through
- and convert the divs depending on what they contain.
- 02/23/2005: mmatus
- [Python] Added option -nortti to disable the use of native
- C++ RTTI with directors (dynamic_cast<> is not used).
- Add more code for directors to detect and report errors in
- the python side.
- Extend the use of SWIGINTERN whenever is possible.
- Remove template warnings reported by VC7.1.
- Remove warnings reported by gcc/g++. Finally you can
- compile using
- g++ -W -Wall -c mymodule_wrap.cxx
- and no spurious errors will be generated in the wrapper
- code.
- 02/23/2005: wuzzeb (John Lenz)
- Added -external-runtime argument. This argument is used to dump
- out all the code needed for external access to the runtime system,
- and it replaces including the files directly. This change adds
- two new virtual functions to the Language class, which are used
- to find the language specific runtime code. I also updated
- all languages that use the runtime to implement these two functions.
- 02/22/2005: mmatus
- Fix %template + private error SF#1099976.
- 02/21/2005: mmatus
- Fix swigrun.swg warnings reported when using "gcc -W -Wall"
- (static/inline not used in front of a function
- declaration), and add SWIGUNUSED attribute to avoid
- unused warnings elsewhere.
- Fix unused variable warnings.
- [Python] Use new SWIGUNUSED attribute to avoid warnings in
- SWIGINTERN methods.
- [Python] Fix PyOS_snprintf for python versions < 2.2 (SF #1104919).
- [Python] Fix map/multimap to allow empty maps (reported by
- Philippe Hetroy).
- [Docs] Add some documentation to Python.html and
- SWIGPlus.html, including for example the fact that
- 'friends' are now supported.
- 02/21/2005: wsfulton
- [PHP] Patch from Olly Betts, so that wrappers compile with Zend thread safety enabled.
- 02/17/2005: wsfulton
- Memory leak fix in some of the scripting language modules when using default
- arguments in constructors. The scripting language was not taking ownership of the
- C++ object memory when any of the constructors that use default arguments was called.
- 02/16/2005: wsfulton
- SF #1115055: Failed make install. Patch from Rob Stone.
- 02/16/2005: wsfulton
- [Java] SF #1123416 from Paul Moore. Correct memory allocation for STRINGARRAY
- typemaps in various.i.
- 02/15/2005: wsfulton
- Disabled typemap search changes for now (see entry 19/12/2004). It breaks
- old typemaps, lengthens the execution time by about 25% and introduces
- inconsistencies.
- 02/15/2005: wsfulton
- swig -help follows other software by printing to stdout instead of stderr now.
- swig -version also displays to stdout instead of stderr now.
- Behaviour reported by Torsten Landschoff.
- 02/15/2005: wsfulton
- [Ruby] Fix for the less commonly used ordering of %include and #include, so
- that the generated code compiles. Bug reported by reported by Max Bowsher.
- %include foo.h
- %{
- #include foo.h
- %}
- 02/15/2005: wsfulton
- [C#, Java] SWIG_exception macro will now return from unmanaged code / native code
- as soon as it is called. Fixes possible JVM crashes and other code unexpectedly
- being executed. Note SWIG_exception is only occasionally used by SWIG library
- writers, and is best avoided by SWIG users.
- 02/15/2005: wsfulton
- [C#, Java] Typemaps can now be targeted at global variable names
- and static member variable names. Previously the typemaps for
- the setters were ignored, for example:
- %typemap(in) int globalint "..."
- int globalint;
- 02/13/2005: mkoeppe (Matthias Koeppe)
- [Guile] Add %typecheck for SWIGTYPE, add %typecheck for ptrdiff_t, fix
- typemaps for size_t.
- [Pike] Merge patch from Torsten Landschoff for improved Pike configuration.
- 02/12/2005: mkoeppe (Matthias Koeppe)
- New configure switches --without-tcl, --without-python etc. allow to
- disable the search for installed languages.
- 01/31/2005: wuzzeb (John Lenz)
- - Add DohSortList to DOH
-
- - Improve the runtime type system:
- + Speed. Type loading is now O(n log n) instead of O(N^2), which
- for large modules is a huge improvement.
- + A whole bunch of functions in swigrun.swg no longer need the
- swig_type_list_handle passed to them. The only one left is
- TypeQuery. This also makes runtime.swg a lot smaller.
- + Split up swig_type_info structure into two structures
- (swig_type_info and swig_cast_info)
- + Store a pointer to a swig_type_info rather than just the type
- name string in the linked list of casts. First off, this makes
- the guile module a little faster, and second, the
- SWIG_TypeClientData() function is faster too.
- + Add the idea of a module into the type system. Before, all the
- types were stored in one huge linked list. Now, another level is
- added, and the type system stores a linked list of modules, each
- of which stores an array of types associated with it.
- + For more information of how the runtime type system now works,
- please see Doc/Manual/typemaps.html and Doc/Devel/runtime.txt
-
- - Update all language modules to use the new type system. The changes
- to each language module are minor. All languages are now able to
- use runtime.swg for external access to the type system. Before
- only python and perl did.
- - [guile, mzscheme, ocaml, and php4] These languages opened up the
- init function inside the .cxx code, and any code in the .swg files
- in the init section was inside this function. This was a problem
- for swiginit.swg, which needs to be inserted before the SWIG_init
- function is opened. Thus I changed these languages to be like
- python or perl, where the init function is declared in the .swg
- file.
-
- - [Ruby] Instead of moving the init function to the .swg file, I
- added a new section initbeforefunc, and then added
- %insert(initbeforefunc) "swiginit.swg"
- - [MzScheme] Fix enums and fix Examples/Makefile.in so that if
- multiple -I arguments are specified in the INCLUDES variable, each
- gets a ++ccf.
- - [Guile GH] Update Guile GH to use the new type system. See
- Doc/Manual/Guile.html for how smobs are now used.
- 01/11/2005: wsfulton
- [C#] New typemap called 'csconstruct'. The code in this typemaps was previously hard
- coded and could not be customised by a user. This typemap contains the code that is
- generated into a proxy class's constructor.
- [Java] New typemap called 'javaconstruct'. The code in this typemaps was previously hard
- coded and could not be customised by a user. This typemap contains the code that is
- generated into a proxy class's constructor. Another typemap named 'javaconstruct_director'
- is used instead when the proxy class is a director class.
- [C#, Java] If a C++ class did not have a default constructor, a protected default constructor
- was automatically generated by SWIG. This seems is unnecessary and has been removed
- and thereby giving the user almost complete control over the generated code along with the
- new typemaps above.
- 19/12/2004: mmatus
- [Disabled, see entry 02/15/2004]
- - Fix typemap search, now the "out" typemap search is done as follows
- int *Foo::foo(int bar) -> int *Foo::foo(int bar)
- -> int *Foo::foo
- -> int *foo(int bar)
- -> int *foo
- -> int *
- then, now you can be more specific, and define
- /* apply only for 'Foo::foo' method */
- %typemap(out) int * Foo::foo(int *bar) ...;
- /* apply for all 'foo' functions/methods */
- %typemap(out) int * foo(int *bar) ...;
- %inline {
- struct Foo {
- int *foo(int *bar);
- };
- }
-
- 15/12/2004: mmatus
- - More fixes for templates and template default args.
- See template_default.i for scary cases that now are
- supported, besides the already ugly STL/std cases.
-
- - Cosmetics and more use of 'const' where it was implicit.
- - Other fixes for OSS, which is now working again with 1.3.25.
-
-