move 1.3.29 changes from CHANGES.current
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@9073 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
2d24918a97
commit
b902ae0f38
1 changed files with 343 additions and 0 deletions
343
CHANGES
343
CHANGES
|
|
@ -2,6 +2,349 @@ SWIG (Simplified Wrapper and Interface Generator)
|
|||
|
||||
See CHANGES.current for current version.
|
||||
|
||||
Version 1.3.29 (March 21, 2006)
|
||||
===============================
|
||||
|
||||
04/05/2006: mutandiz
|
||||
[allegrocl]
|
||||
Fix output typemap of char so it produces a character instead
|
||||
of an integer. Also adds input/output typemaps for 'char *'.
|
||||
|
||||
add command-line argument -isolate to generate an interface
|
||||
file that won't interfere with other SWIG generated files that
|
||||
may be used in the same application.
|
||||
|
||||
03/20/2005: mutandiz
|
||||
[allegrocl]
|
||||
More tweaks to INPUT/OUTPUT typemaps for bool.
|
||||
|
||||
Fix constantWrapper for char and string literals.
|
||||
|
||||
find-definition keybindings should work in ELI/SLIME.
|
||||
Output (in-package <module-name>) to lisp wrapper
|
||||
instead of (in-package #.*swig-module-name*).
|
||||
|
||||
slight rework of multiple return values.
|
||||
|
||||
doc updates.
|
||||
|
||||
03/17/2005: mutandiz
|
||||
[allegrocl]
|
||||
mangle names of constants generated via constantWrapper.
|
||||
|
||||
When using OUTPUT typemaps and the function has a non-void
|
||||
return value, it should be first in the values-list, followed
|
||||
by the OUTPUT mapped values.
|
||||
|
||||
Fix bug with boolean parameters, which needed to be
|
||||
passed in as int values, rather than T or NIL.
|
||||
|
||||
03/15/2006: mutandiz
|
||||
[allegrocl]
|
||||
Generate wrappers for constants when in C++ or -cwrap mode.
|
||||
Make -cwrap the default, since it is most correct. Users
|
||||
can use the -nocwrap option to avoid the creation of a .cxx
|
||||
file when interfacing to C code.
|
||||
|
||||
When in -nocwrap mode, improve the handling of converting
|
||||
infix literals to prefix notation for lisp. This is very
|
||||
basic and not likely to be improved upon since this only
|
||||
applies to the -nocwrap case. Literals we can't figure out
|
||||
will result in a warning and be included in the generated
|
||||
code.
|
||||
|
||||
validIdentifier now more closely approximates what may be
|
||||
a legal common lisp symbol.
|
||||
|
||||
Fix typemap error in allegrocl.swg
|
||||
|
||||
03/12/2006: mutandiz
|
||||
[allegrocl]
|
||||
fix up INPUT/OUTPUT typemaps for bool.
|
||||
Generate c++ style wrapper functions for struct/union members
|
||||
when -cwrap option specified.
|
||||
|
||||
03/10/2006: mutandiz
|
||||
[allegrocl]
|
||||
Fix bug in C wrapper generation introduced by last allegrocl
|
||||
commit.
|
||||
|
||||
03/10/2006: wsfulton
|
||||
[Java]
|
||||
Commit #1447337 - Delete LocalRefs at the end of director methods to fix potential leak
|
||||
|
||||
03/10/2006: wsfulton
|
||||
Fix #1444949 - configure does not honor --program-prefix.
|
||||
Removed non-standard configure option --with-release-suffix. Fix the autoconf standard
|
||||
options --program-prefix and --program-suffix which were being shown in the help,
|
||||
but were being ignored. Use --program-suffix instead of --with-release-suffix now.
|
||||
|
||||
03/10/2006: wsfulton
|
||||
[Java]
|
||||
Fix #1446319 with patch from andreasth - more than one wstring parameter in director methods
|
||||
|
||||
03/07/2006: mkoeppe
|
||||
[Guile]
|
||||
Fix for module names containing a "-" in non-"shadow" mode.
|
||||
Patch from Aaron VanDevender (#1441474).
|
||||
|
||||
03/04/2006: mmatus
|
||||
- Add -O to the main program, which now enables -fastdispatch
|
||||
|
||||
[Python]
|
||||
|
||||
- Add the -fastinit option to enable faster __init__
|
||||
methods. Setting 'this' as 'self.this.append(this)' in the python
|
||||
code confuses PyLucene. Now the initialization is done in the
|
||||
the C++ side, as reported by Andi and Robin.
|
||||
|
||||
- Add the -fastquery option to enable faster SWIG_TypeQuery via a
|
||||
python dict cache, as proposed by Andi Vajda
|
||||
|
||||
- Avoid to call PyObject_GetAttr inside SWIG_Python_GetSwigThis,
|
||||
since this confuses PyLucene, as reported by Andi Vajda.
|
||||
|
||||
03/02/2006: wsfulton
|
||||
[Java]
|
||||
Removed extra (void *) cast when casting pointers to and from jlong as this
|
||||
was suppressing gcc's "dereferencing type-punned pointer will break strict-aliasing rules"
|
||||
warning. This warning could be ignored in versions of gcc prior to 4.0, but now the
|
||||
warning is useful as gcc -O2 and higher optimisation levels includes -fstrict-aliasing which
|
||||
generates code that doesn't work with these casts. The assignment is simply never made.
|
||||
Please use -fno-strict-aliasing to both suppress the warning and fix the bad assembly
|
||||
code generated. Note that the warning is only generated by the C compiler, but not
|
||||
the C++ compiler, yet the C++ compiler will also generate broken code. Alternatively use
|
||||
-Wno-strict-aliasing to suppress the warning for gcc-3.x. The typemaps affected
|
||||
are the "in" and "out" typemaps in java.swg and arrays_java.swg. Users ought to fix
|
||||
their own typemaps to do the same. Note that removal of the void * cast simply prevents
|
||||
suppression of the warning for the C compiler and nothing else. Typical change:
|
||||
|
||||
From:
|
||||
%typemap(in) SWIGTYPE * %{ $1 = *($&1_ltype)(void *)&$input; %}
|
||||
To:
|
||||
%typemap(in) SWIGTYPE * %{ $1 = *($&1_ltype)&$input; %}
|
||||
|
||||
From:
|
||||
%typemap(out) SWIGTYPE * %{ *($&1_ltype)(void *)&$result = $1; %}
|
||||
To:
|
||||
%typemap(out) SWIGTYPE * %{ *($&1_ltype)&$result = $1; %}
|
||||
|
||||
03/02/2006: mkoeppe
|
||||
[Guile -scm]
|
||||
Add typemaps for "long long"; whether the generated code compiles, however, depends
|
||||
on the version and configuration of Guile.
|
||||
|
||||
03/02/2006: wsfulton
|
||||
[C#]
|
||||
Add support for inner exceptions. If any of the delegates are called which construct
|
||||
a pending exception and there is already a pending exception, it will create the new
|
||||
exception with the pending exception as an inner exception.
|
||||
|
||||
03/02/2006: wsfulton
|
||||
[Php]
|
||||
Added support for Php5 exceptions if compiling against Php5 (patch from Olly Betts).
|
||||
|
||||
03/01/2006: mmatus
|
||||
Use the GCC visibility attribute in SWIGEXPORT.
|
||||
|
||||
Now you can compile (with gcc 3.4 or later) using
|
||||
CFLAGS="-fvisibility=hidden".
|
||||
|
||||
Check the difference for the 'std_containers.i' python
|
||||
test case:
|
||||
|
||||
Sizes:
|
||||
|
||||
3305432 _std_containers.so
|
||||
2383992 _std_containers.so.hidden
|
||||
|
||||
Exported symbols (nm -D <file>.so | wc -l):
|
||||
|
||||
6146 _std_containers.so
|
||||
174 _std_containers.so.hidden
|
||||
|
||||
Excecution times:
|
||||
|
||||
real 0m0.050s user 0m0.039s sys 0m0.005s _std_containers.so
|
||||
real 0m0.039s user 0m0.026s sys 0m0.007s _std_containers.so.hidden
|
||||
|
||||
Read http://gcc.gnu.org/wiki/Visibility for more details.
|
||||
|
||||
|
||||
02/27/2006: mutandiz
|
||||
[allegrocl]
|
||||
Add support for INPUT, OUTPUT, and INOUT typemaps.
|
||||
For OUTPUT variables, the lisp wrapper returns multiple
|
||||
values.
|
||||
|
||||
02/26/2006: mmatus
|
||||
|
||||
[Ruby] add argcargv.i library file.
|
||||
|
||||
Use it as follow:
|
||||
|
||||
%include argcargv.i
|
||||
|
||||
%apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) }
|
||||
|
||||
%inline {
|
||||
int mainApp(size_t argc, const char **argv)
|
||||
{
|
||||
return argc;
|
||||
}
|
||||
}
|
||||
|
||||
then in the ruby side:
|
||||
|
||||
args = ["asdf", "asdf2"]
|
||||
n = mainApp(args);
|
||||
|
||||
|
||||
This is the similar to the python version Lib/python/argcargv.i
|
||||
|
||||
02/24/2006: mgossage
|
||||
|
||||
Small update Lua documents on troubleshooting problems
|
||||
|
||||
02/22/2006: mmatus
|
||||
|
||||
Fix all the errors reported for 1.3.28.
|
||||
- fix bug #1158178
|
||||
- fix bug #1060789
|
||||
- fix bug #1263457
|
||||
- fix 'const char*&' typemap in the UTL, reported by Geoff Hutchison
|
||||
- fixes for python 2.1 and the runtime library
|
||||
- fix copyctor + template bug #1432125
|
||||
- fix [ 1432152 ] %rename friend operators in namespace
|
||||
- fix gcc warning reported by R. Bernstein
|
||||
- avoid assert when finding a recursive scope inheritance,
|
||||
emit a warning in the worst case, reported by Nitro
|
||||
- fix premature object deletion reported by Paul in tcl3d
|
||||
- fix warning reported by Nitro in VC7
|
||||
- more fixes for old Solaris compiler
|
||||
- fix for python 2.3 and gc_refs issue reported by Luigi
|
||||
- fix fastproxy for methods using kwargs
|
||||
- fix overload + protected member issue reported by Colin McDonald
|
||||
- fix seterrormsg as reported by Colin McDonald
|
||||
- fix directors, now the test-suite runs again using -directors
|
||||
- fix for friend operator and Visual studio and bug 1432152
|
||||
- fix bug #1435090
|
||||
- fix using + %extend as reported by William
|
||||
- fix bug #1094964
|
||||
- fix for Py_NotImplemented as reported by Olly and Amaury
|
||||
- fix nested namespace issue reported by Charlie
|
||||
|
||||
and also:
|
||||
|
||||
- allow director protected members by default
|
||||
- delete extra new lines in swigmacros[UTL]
|
||||
- cosmetic for generated python code
|
||||
- add the factory.i library for UTL
|
||||
- add swigregister proxy method and move __repr__ to a
|
||||
single global module [python]
|
||||
|
||||
02/22/2006: mmatus
|
||||
|
||||
When using directors, now swig will emit all the virtual
|
||||
protected methods by default.
|
||||
|
||||
In previous releases, you needed to use the 'dirprot'
|
||||
option to acheive the same.
|
||||
|
||||
If you want, you can disable the new default behaviour,
|
||||
use the 'nodirprot' option:
|
||||
|
||||
swig -nodirprot ...
|
||||
|
||||
and/or the %nodirector feature for specific methods, i.e.:
|
||||
|
||||
%nodirector Foo::bar;
|
||||
|
||||
struct Foo {
|
||||
virtual ~Foo();
|
||||
|
||||
protected:
|
||||
virtual void bar();
|
||||
};
|
||||
|
||||
|
||||
As before, pure abstract protected members are allways
|
||||
emitted, independent of the 'dirprot/nodirprot' options.
|
||||
|
||||
|
||||
02/22/2006: mmatus
|
||||
Add the factory.i library for languages using the UTL (python,tcl,ruby,perl).
|
||||
|
||||
factory.i implements a more natural wrap for factory methods.
|
||||
|
||||
For example, if you have:
|
||||
|
||||
---- geometry.h --------
|
||||
struct Geometry {
|
||||
enum GeomType{
|
||||
POINT,
|
||||
CIRCLE
|
||||
};
|
||||
|
||||
virtual ~Geometry() {}
|
||||
virtual int draw() = 0;
|
||||
|
||||
//
|
||||
// Factory method for all the Geometry objects
|
||||
//
|
||||
static Geometry *create(GeomType i);
|
||||
};
|
||||
|
||||
struct Point : Geometry {
|
||||
int draw() { return 1; }
|
||||
double width() { return 1.0; }
|
||||
};
|
||||
|
||||
struct Circle : Geometry {
|
||||
int draw() { return 2; }
|
||||
double radius() { return 1.5; }
|
||||
};
|
||||
|
||||
//
|
||||
// Factory method for all the Geometry objects
|
||||
//
|
||||
Geometry *Geometry::create(GeomType type) {
|
||||
switch (type) {
|
||||
case POINT: return new Point();
|
||||
case CIRCLE: return new Circle();
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
---- geometry.h --------
|
||||
|
||||
|
||||
You can use the %factory with the Geometry::create method as follows:
|
||||
|
||||
%newobject Geometry::create;
|
||||
%factory(Geometry *Geometry::create, Point, Circle);
|
||||
%include "geometry.h"
|
||||
|
||||
and Geometry::create will return a 'Point' or 'Circle' instance
|
||||
instead of the plain 'Geometry' type. For example, in python:
|
||||
|
||||
circle = Geometry.create(Geometry.CIRCLE)
|
||||
r = circle.radius()
|
||||
|
||||
where 'circle' now is a Circle proxy instance.
|
||||
|
||||
|
||||
02/17/2006: mkoeppe
|
||||
[MzScheme] Typemaps for all integral types now accept the full range of integral
|
||||
values, and they signal an error when a value outside the valid range is passed.
|
||||
[Guile] Typemaps for all integral types now signal an error when a value outside
|
||||
the valid range is passed.
|
||||
|
||||
02/13/2006: mgossage
|
||||
[Documents] updated the extending documents to give a skeleton swigging code
|
||||
with a few typemaps.
|
||||
[Lua] added an extra typemap for void* [in], so a function which requires a void*
|
||||
can take any kind of pointer
|
||||
|
||||
Version 1.3.28 (February 12, 2006)
|
||||
==================================
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue