Clean up to disable target languages that have been neglected/not functional. Target language be fully deleted in SWIG 4.1 unless a new maintainer brings it up to an acceptable status (experimental or supported). Issue #1447
1242 lines
52 KiB
Text
1242 lines
52 KiB
Text
Below are the changes for the current release.
|
|
See the CHANGES file for changes in older releases.
|
|
See the RELEASENOTES file for a summary of changes in each release.
|
|
Issue # numbers mentioned below can be found on Github. For more details, add
|
|
the issue number to the end of the URL: https://github.com/swig/swig/issues/
|
|
|
|
Version 4.0.0 (in progress)
|
|
===========================
|
|
|
|
2019-02-04: wsfulton
|
|
[UFFI] #1447 Common Lisp UFFI has been disabled as a target language in SWIG as part of a
|
|
clean up to remove target languages that have been neglected/not functional.
|
|
|
|
2019-02-04: wsfulton
|
|
[Pike] #1447 Pike has been disabled as a target language in SWIG as part of a
|
|
clean up to remove target languages that have been neglected/not functional.
|
|
|
|
2019-02-04: wsfulton
|
|
[Modula3] #1447 Modula3 has been disabled as a target language in SWIG as part of a
|
|
clean up to remove target languages that have been neglected/not functional.
|
|
|
|
2019-02-02: ahnolds
|
|
[Python] Documentation enhancements for Python:
|
|
|
|
#728 Fixed the handling of autodoc when using -fastproxy.
|
|
|
|
#1367 Added documentation to wrapped member variables using the
|
|
property(... doc="...") construct.
|
|
|
|
Only show a single documentation entry for functions with default arguments when
|
|
using autodoc.
|
|
|
|
Fixed a bug where a cached doxygen docstring could be deleted while still in use,
|
|
causing swig to segfault.
|
|
|
|
2019-01-31: olly
|
|
SWIG now requires a target language to be specified instead of
|
|
defaulting to wrapping for Tcl. Specifying swig --help without
|
|
a target language now just shows the generic help. The -nolang
|
|
option has been removed.
|
|
|
|
2019-01-28: ZackerySpytz
|
|
[OCaml] #1429 Remove support for OCaml versions < 3.12.0.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2019-01-22: vadz
|
|
[Ruby, Octave] #1424 Improve autodoc parameter naming.
|
|
|
|
2019-01-22: vadz
|
|
[Python] #1271 #1423 Always include default parameter values in autodoc strings.
|
|
|
|
2019-01-19: vadz
|
|
#1272, #1421 When a function's parameter is a keyword, the name of the paramater is
|
|
no longer simply changed to argN, where N is the argument number. Instead the
|
|
parameter name is changed to the renaming rules for keywords that normally apply to
|
|
symbols such as classes/functions etc. Note that unlike other symbol renaming,
|
|
parameter renaming does not issue a warning when the parameter is renamed. This
|
|
change only affects languages where the parameter names are actually used, for example,
|
|
Java function parameter lists in the proxy class or Python documentation comments.
|
|
|
|
2019-01-18: wsfulton
|
|
#1420 Fix gdb debugger functions 'swigprint' and 'locswigprint' from swig.gdb to
|
|
work with newer versions of gdb-8. Fixes errors when debugging SWIG source with gdb:
|
|
|
|
(gdb) swigprint n
|
|
Undefined command: "Printf". Try "help".
|
|
|
|
2019-01-16: wsfulton
|
|
Python static method wrapper changes
|
|
|
|
- Static method wrappers were using the 'fastproxy' approach by default.
|
|
This is inconsistent with instance method wrappers. The fastproxy approach
|
|
is now turned off by default to be consistent with instance methods.
|
|
Static method wrappers can now also be controlled using the -fastproxy and
|
|
-olddefs options.
|
|
|
|
Example:
|
|
|
|
struct Klass {
|
|
static int statmethod(int a = 2);
|
|
};
|
|
|
|
generates by default:
|
|
|
|
class Klass(object):
|
|
...
|
|
@staticmethod
|
|
def statmethod(a=2):
|
|
return _example.Klass_statmethod(a)
|
|
|
|
instead of the following (which can be restored by using -fastproxy):
|
|
|
|
class Klass(object):
|
|
...
|
|
statmethod = staticmethod(_example.Klass_statmethod)
|
|
|
|
- Modernise wrappers for static methods to use decorator syntax - @staticmethod.
|
|
|
|
- Add missing runtime test for static class methods and using the actual class method.
|
|
|
|
2019-01-12: ZackerySpytz
|
|
[OCaml] #1403 #1194 Fix compilation problems for OCaml >= 4.03.0 due to OCaml using
|
|
int64_t instead of int64.
|
|
|
|
2019-01-11: ZackerySpytz
|
|
[OCaml] #1400 Fix getters and setters.
|
|
|
|
2019-01-07: wsfulton
|
|
#358 Add VOID to windows.i
|
|
|
|
2019-01-05: wsfulton
|
|
#948 #1019 #1273 Fix for C++11 raw strings where the delimiters were mistakenly left
|
|
in the string contents in situations where the string was copied into generated code.
|
|
For example, %constant, the "docstring" feature and for C#/Java/D constants turned on
|
|
with %javaconst/%csconst/%dmanifestconst.
|
|
|
|
2019-01-05: wsfulton
|
|
[Ruby] #538. Fix Ruby support for %feature("docstring").
|
|
|
|
2019-01-03: wsfulton
|
|
#1202 Fix overloading of non-pointer class types in scripting languages when overloaded
|
|
with a pointer and a NULL scripting language equivalent is used, eg None in Python.
|
|
|
|
The implementation changes the SWIGTYPE, SWIGTYPE& and SWIGTYPE&& typecheck typemaps to
|
|
prevent accepting a conversion to a NULL pointer.
|
|
|
|
2019-01-03: ZackerySpytz
|
|
[OCaml] #1386 Fix OCaml out-of-source test-suite
|
|
|
|
2019-01-01: wsfulton
|
|
[Python] #639 remove duplicate proxy method definitions for global function wrappers.
|
|
|
|
Global functions previously generated two definitions, eg:
|
|
|
|
def foo():
|
|
return _example.foo()
|
|
foo = _example.foo
|
|
|
|
The first definition is replaced by the second definition and so the second definition
|
|
is the one used when the method is actually called. Now just the first definition is
|
|
generated by default and if the -fastproxy command line option is used, just the second
|
|
definition is generated. The second definition is faster as it avoids the proxy Python
|
|
method as it calls the low-level C wrapper directly. Using both -fastproxy and -olddefs
|
|
command line options will restore the previously generated code as it will generate both
|
|
method definitions.
|
|
|
|
With this change, the wrappers for global C/C++ functions and C++ class methods now work
|
|
in the same way wrt to generating just a proxy method by default and control via
|
|
-fastproxy/-olddefs options.
|
|
|
|
2018-12-20: hasinoff,wsfulton
|
|
[Java] #1334 Set Java thread name to native thread name when using directors.
|
|
|
|
Default is to use name "Thread-XXX" and is still works like this by default. However,
|
|
adding the following will turn on the thread name setting (works for more recent
|
|
versions of Linux and MacOS):
|
|
|
|
%begin %{
|
|
#define SWIG_JAVA_USE_THREAD_NAME
|
|
%}
|
|
|
|
2018-12-20: chlandsi
|
|
[Python] #1357. Fix overriding __new__ in Python 3.6.
|
|
|
|
Fixes SystemError: Objects/tupleobject.c:81: bad argument to internal function"
|
|
|
|
2018-12-16: wsfulton
|
|
[Python] #848 #1343 The module import logic has changed to stop obfuscating real ImportError
|
|
problems. Only one import of the low-level C/C++ module from the pure Python module is
|
|
attempted now. Previously a second import of the low-level C/C++ module was attempted
|
|
after an ImportError occurred and was done to support 'split modules'. A 'split module' is
|
|
a configuration where the pure Python module is a module within a Python package and the
|
|
low-level C/C++ module is a global Python module. Now a 'split module' configuration is
|
|
no longer supported by default. This configuration can be supported with a simple
|
|
customization, such as:
|
|
|
|
%module(package="mypackage", moduleimport="import $module") foo
|
|
|
|
or if using -builtin:
|
|
|
|
%module(package="mypackage", moduleimport="from $module import *") foo
|
|
|
|
instead of
|
|
|
|
%module(package="mypackage") foo
|
|
|
|
See the updated Python chapter titled "Location of modules" in the documentation.
|
|
|
|
2018-12-11: tlby
|
|
[Perl] #1374 repair EXTEND() handling in typemaps
|
|
|
|
2018-12-06: vadz
|
|
#1359 #1364 Add missing nested class destructor wrapper when the nested class is
|
|
inside a template. Removes associated bogus 'Illegal destructor name' warning. Only
|
|
occurred when the nested class' destructor is explicitly specified.
|
|
|
|
2018-12-04: adr26
|
|
[Python] #1368 #1369 Access Violation in tp_print caused by mismatched Python/extension
|
|
CRT usage
|
|
|
|
Remove all use of tp_print, as this API uses a FILE*, which can be
|
|
mismatched when modules are built with different C libraries from
|
|
the main python executable.
|
|
|
|
This change also brings consistent output between Python 2 and 3 for the 'cvar' SWIG
|
|
object (that contains the global variables) and SWIG packed objects (such as callback
|
|
constants).
|
|
|
|
2018-12-04: wsfulton
|
|
[Python] #1282 Fix running 'python -m' when using 'swig -builtin'
|
|
|
|
Similar to the earlier PEP 366 conforming fix for non-builtin.
|
|
|
|
2018-11-29: adr26
|
|
[Python] #1360 Leak of SWIG var link object
|
|
|
|
Fix reference counting on _SWIG_globals to allow var link to be freed on module unload.
|
|
|
|
2018-11-28: wsfulton
|
|
[Python] When using -builtin, the two step C-extension module import is now
|
|
one step and the wrapped API is only available once and not in an underlying
|
|
module attribute like it is without -builtin. To understand this, consider a
|
|
module named 'example' (using: %module example). The C-extension is compiled into
|
|
a Python module called '_example' and a pure Python module provides the actual
|
|
API from the module called 'example'. It was previously possible to additionally
|
|
access the API from the module attribute 'example._example'. The latter was an
|
|
implementation detail and is no longer available. It shouldn't have been used, but
|
|
if necessary it can be resurrected using the moduleimport attribute described in the
|
|
Python chapter of the documentation. If both modules are provided in a Python
|
|
package, try:
|
|
|
|
%module(moduleimport="from . import _example\nfrom ._example import *") example
|
|
or more generically:
|
|
%module(moduleimport="from . import $module\nfrom .$module import *") example
|
|
|
|
and if both are provided as global modules, try:
|
|
|
|
%module(moduleimport="import _example\nfrom _example import *") example
|
|
or more generically:
|
|
%module(moduleimport="import $module\nfrom $module import *") example
|
|
|
|
The module import code shown will appear in the example.py file.
|
|
|
|
2018-11-24: vadz
|
|
#1358 Fix handling of abstract base classes nested inside templates
|
|
|
|
Correct detecting of whether a derived class method overrides a pure virtual
|
|
base class method when both classes are nested inside a template class: this
|
|
notably didn't work correctly for methods taking parameters of the base class
|
|
type.
|
|
|
|
2018-11-22: rupertnash
|
|
[Python] #1282 Make generated module runnable via python -m (PEP 366 conforming)
|
|
|
|
Previously any SWIG generated modules in a package would fail with an ImportError
|
|
when using 'python -m' for example 'python -m mypkg.mymodule'.
|
|
|
|
This fix also allows the SWIG generated module to be placed into a directory and
|
|
then renamed __init__.py to convert the module into a package again. This ability
|
|
stopped working in swig-3.0.9. However, only Python 2.7 or 3.3 and later work. If
|
|
Python 3.2 support is needed, use moduleimport in %module to customise the import
|
|
code.
|
|
|
|
2018-11-13: wsfulton
|
|
#1340 Remove -cppcast and -nocppcast command line options (this was an option
|
|
available to the scripting language targets).
|
|
|
|
The -cppcast option is still turned on by default. The -nocppcast option
|
|
to turn off the use of c++ casts (const_cast, static_cast etc) has been
|
|
removed. However, defining SWIG_NO_CPLUSPLUS_CAST will still generate C casts
|
|
instead of C++ casts for C++ wrappers.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-11-13: wsfulton
|
|
[Python] #1340 Remove -outputtuple and -nooutputtuple command line options.
|
|
|
|
Both the command line and %module options of the same name have been
|
|
removed. These were undocumented. The -outputtuple option returned a
|
|
Python tuple instead of a list, mostly typically in the OUTPUT
|
|
typemap implementations.
|
|
|
|
It unclear why a tuple instead of a list return type is needed and
|
|
hence this option has been removed as part of the simplification of
|
|
the SWIG Python command line options for SWIG 4.
|
|
|
|
2018-11-13: wsfulton
|
|
[Python] #1340 Remove -noproxyimport command line option.
|
|
|
|
This option turned off the insertion of Python import statements
|
|
derived from a %import directive. For example given:
|
|
|
|
%module module_b
|
|
%import "module_a.i"
|
|
|
|
then module_b.py will contain:
|
|
|
|
import module_a
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-10-29: AlexanderGabriel
|
|
[PHP] The following PHP7 reserved keywords are now only renamed by
|
|
SWIG when used as function names in the API being wrapper:
|
|
__halt_compiler array die echo empty eval exit include include_once
|
|
isset list print require require_once return unset
|
|
|
|
2018-10-22: olly,wsfulton
|
|
[Python] #1261 #1340 Turn on many optimisation options by default and rationalise the
|
|
number of command line options.
|
|
|
|
There were an unnecessary number of command line options and many of these have now
|
|
been removed in a drive for simplification. Some were needed to support older versions
|
|
of Python (2.6 and earlier).
|
|
|
|
Many of the options could be turned on individually and when using -O. Previously -O
|
|
resulted in turning on a set of options:
|
|
|
|
-modern -fastdispatch -nosafecstrings -fvirtual -noproxydel
|
|
-fastproxy -fastinit -fastunpack -fastquery -modernargs -nobuildnone
|
|
|
|
Now -O results in turning on this reduced set:
|
|
|
|
-fastdispatch -fastproxy -fvirtual
|
|
|
|
The following options are now on by default, a deprecated warning is displayed if they
|
|
are used:
|
|
-fastinit Class initialisation code done in C/C++ rather than in Python code.
|
|
-fastquery Python dictionary used for lookup of types.
|
|
-fastunpack Faster unpacking of function arguments in C/C++ wrappers.
|
|
-modern Use Python 2.3 features such as object and property.
|
|
-modernargs Use Python 2.3 C APIs for unpacking arguments in tuples.
|
|
-noproxydel Stop generating a proxy __del__ method for backwards compatiblity.
|
|
-safecstrings No discernable difference
|
|
|
|
The following options have been removed altogether:
|
|
-aliasobj0
|
|
-buildnone
|
|
-classptr
|
|
-new_repr
|
|
-newrepr
|
|
-noaliasobj0
|
|
-nobuildnone
|
|
-nocastmode
|
|
-nodirvtable
|
|
-noextranative
|
|
-nofastinit
|
|
-nofastproxy
|
|
-nofastquery
|
|
-nomodern
|
|
-nomodernargs
|
|
-nooutputtuple
|
|
-nosafecstrings
|
|
-old_repr
|
|
-oldrepr
|
|
-proxydel
|
|
|
|
-new_vwm is no longer supported. Use the -newvwm alias instead.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-10-22: olly
|
|
[Python] #1261 Remove command line option no longer needed as Python 2.3 and earlier
|
|
are no longer supported:
|
|
|
|
-classic
|
|
|
|
2018-10-09: wsfulton
|
|
[D, Go, Guile, Lua, Mzscheme, Ocaml, Perl5, Php, Scilab, Tcl]
|
|
Allow wrapping of std::map using non-default comparison function.
|
|
|
|
2018-10-09: vadz
|
|
[Java] #1274 Allow wrapping of std::map using non-default comparison function.
|
|
|
|
2018-10-04: wsfulton
|
|
[Python] #1126 Fix C default arguments with -builtin and -fastunpack and -modernargs.
|
|
Problem occurred when there is just one (defaulted) parameter in the parameter list.
|
|
|
|
2018-09-24: wsfulton
|
|
[Python] #1319 C++11 hash tables implementation is finished now (including for -builtin):
|
|
std::unordered_map
|
|
std::unordered_set
|
|
std::unordered_multimap
|
|
std::unordered_multiset
|
|
|
|
2018-09-21: wsfulton
|
|
[Python] Fix when using -builtin and wrapping std::map, std::set, std::unordered_map or
|
|
std::unordered_set to ensure __contains__ is called. This is a wrapper for the STL
|
|
container's find method. Without it, Python will do its own slower sequence search.
|
|
|
|
2018-09-19: wsfulton
|
|
[Python] Fix functors (wrapped as __call__) when using -builtin -modern -fastunpack.
|
|
|
|
2018-09-02: andreas.gaeer,tkrasnukha
|
|
[Python] #1321 Fix assert in PyTuple_GET_SIZE in debug interpreter builds of python-3.7
|
|
when calling tp_new.
|
|
|
|
2018-09-01: ChristopherHogan
|
|
[Guile] #1288 Fix garbage collection for guile >= 2.0.12.
|
|
|
|
2018-08-31: wsfulton
|
|
[Python] #1319 C++11 hash tables support:
|
|
std::unordered_map
|
|
std::unordered_set
|
|
std::unordered_multimap
|
|
std::unordered_multiset
|
|
is now compiling and working (sorting using -builtin not fully functional yet though).
|
|
|
|
2018-08-20: wkalinin
|
|
#1305 Fix nested structure symbol tables in C mode to fix member name conflicts
|
|
in different structs with the same nested struct member name.
|
|
|
|
2018-08-18: wsfulton
|
|
[Python] #688 Fix makefile recursion when running python test-suite.
|
|
|
|
2018-08-18: wsfulton
|
|
[Python] #1310 Re-implement Python -fastproxy option.
|
|
|
|
The previous implementation failed with Python 3 and abstract base clases.
|
|
The new implementation replaces the Python 2 implementation using
|
|
new.instancemethod with the C API PyMethod_New to match the equivalent Python 3
|
|
implementation which uses PyInstanceMethod_New.
|
|
|
|
The new approach runs slightly faster. See #1310.
|
|
|
|
2018-08-12: gmazzamuto
|
|
[Python] #1283 Update pybuffer.i library to use new-style Python buffer C API.
|
|
|
|
2018-08-12: brianhatwood,wsfulton
|
|
[Java] #1303 #1304 Fix crash in directors when using OUTPUT and INOUT typemaps in typemaps.i and
|
|
passing NULL pointers in C++ to director method overloaded and implemented in Java.
|
|
|
|
2018-08-10: wsfulton
|
|
[Python] #1293 Improve TypeError message inconsistencies between default and fastdispatch
|
|
mode when handling overloaded C++ functions. Previously the error message did not always
|
|
display the possible C/C++ prototypes in fastdispatch mode.
|
|
|
|
2018-08-02: furylynx,jacobwgillespie,p2k
|
|
[Javascript] #1290, #968. Add support for NodeJS versions 2-10.
|
|
|
|
2018-07-31: wsfulton
|
|
[Python] #1293 Overloaded C++ function wrappers now raise a TypeError instead
|
|
of NotImplementedError when the types passed are incorrect. This change means
|
|
there is now consistency with non-overloaded function wrappers which have always
|
|
raised TypeError when the incorrect types are passed. The error message remains
|
|
the same and is for example now:
|
|
|
|
TypeError: Wrong number or type of arguments for overloaded function 'f'.
|
|
Possible C/C++ prototypes are:
|
|
f(int)
|
|
f(char const *)
|
|
|
|
instead of:
|
|
|
|
NotImplementedError: Wrong number or type of arguments for overloaded function 'f'.
|
|
Possible C/C++ prototypes are:
|
|
f(int)
|
|
f(char const *)
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-06-23: wsfulton
|
|
[Python] #718 Fix pythonnondynamic feature for modern classes
|
|
|
|
Fixes nondynamic mode when an instance variable is set with the same
|
|
name as a class variable in a class derived from a SWIG proxy class.
|
|
This corner case set an instance variable instead of raising an AttributeError.
|
|
|
|
Also fix %pythonnondynamic in Python 3 with -modern. The metaclass
|
|
containing the implementation was previously not being applied in Python 3.
|
|
|
|
2018-07-17: petrmitrichev,wsfulton
|
|
[Python] #1275 #1279 Initialize function-local statics (singletons) that call Python
|
|
code during Python module initialization in order to avoid deadlocks with subsequent
|
|
multi-threaded usage.
|
|
|
|
2018-06-15: wsfulton
|
|
[Python] Fix seg fault using Python 2 when passing a Python string, containing
|
|
invalid utf-8 content, to a wstring or wchar * parameter. A TypeError is thrown instead, eg:
|
|
|
|
%include <std_wstring.i>
|
|
void instring(const std::wstring& s);
|
|
|
|
instring(b"h\xe9llooo") # Python
|
|
|
|
2018-06-15: wsfulton
|
|
[Python] Python 3.7 support: Replace use of deprecated PyUnicode_GetSize with
|
|
PyUnicode_GetLength to remove deprecated warnings compiling the C/C++ wrappers.
|
|
|
|
2018-06-12: wsfulton
|
|
[Python] Python 3.7 support: The %pythonabc feature in pyabc.i now uses base classes
|
|
collections.abc.MutableSequence
|
|
collections.abc.MutableMapping
|
|
collections.abc.MutableSet
|
|
instead of
|
|
collections.MutableSequence
|
|
collections.MutableMapping
|
|
collections.MutableSet
|
|
as the latter are deprecated in Python 3.7 and are due to be removed in Python 3.8.
|
|
The classes in collections.abc.* are available from Python 3.3 onwards. If you
|
|
require support for Python 3.2, then copy the pyabc.i file and modify by removing
|
|
the few instances of the .abc sub-module.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-06-12: olly,wsfulton
|
|
[Python] #701 Remove support for Python versions < 2.7 and 3.0 and 3.1.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-06-11: olly
|
|
[Python] Fix new GCC8 warnings in generated code by avoiding casts
|
|
between incompatible function types where possible, and by
|
|
suppressing the warning when it's due to the design of Python's C
|
|
API. Fixes #1259.
|
|
|
|
2018-06-08: philippkraft
|
|
[Python] Stop exposing <CLASS>_swigregister to Python. It's not
|
|
useful for user Python code to call this, and it just clutters the
|
|
API unnecessarily. Fixes #1225.
|
|
|
|
2018-06-07: cmfoil, kabbi, Jamie Kirkpatrick, markok314, vadz, wsfulton, Yann Diorcet
|
|
#170 Doxygen documentation support added. This allows translation of Doxygen comments
|
|
into JavaDoc and PyDoc documentation. It is enabled via the -doxygen command line
|
|
option. See the Doxygen.html chapter in the documentation for further information.
|
|
|
|
2018-06-07: olly
|
|
[PHP] We've finally removed support for %pragma(php4) which was
|
|
deprecated back in 2008. Use %pragma(php) instead, which has been
|
|
supported since at least 2005.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-06-07: olly
|
|
[PHP5] Support for PHP5 has been removed. PHP5 is no longer
|
|
actively supported by the PHP developers and security support for
|
|
it ends completely at the end of 2018, so it doesn't make sense
|
|
to include support for it in the upcoming SWIG 4.0.0 release.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-06-06: olly
|
|
[Lua] Improve configure probes for Lua headers and libs used in testsuite.
|
|
|
|
2018-05-15: kwwette
|
|
[Octave] add support for version 4.4
|
|
- Should not introduce any user-visible incompatibilities
|
|
|
|
2018-05-15: wsfulton
|
|
[C#, D, Java] Fix lookup of csconstruct, dconstruct and javaconstruct typemaps.
|
|
The C++ namespace was previously ignored when looking up the typemap.
|
|
|
|
2018-05-15: wsfulton
|
|
[Javascript] Fix generated C++ code when using %nspace on namespaces that are more
|
|
than two levels deep.
|
|
|
|
2018-05-14: wsfulton
|
|
Issue #1251 Add support for C++17 nested namespace definitions,
|
|
for example:
|
|
namespace A::B { ... }
|
|
|
|
2018-05-11: wsfulton
|
|
[C#, D, Java] Add support so that the %csmethodmodifiers, %dmethodmodifiers,
|
|
%javamethodmodifiers can modify the method modifiers for the destructor wrappers
|
|
in the proxy class: dispose, Dispose, delete. With this feature, it is now possible
|
|
to make a C# proxy class sealed, eg when wrapping a class X, the virtual method modifiers
|
|
can be removed using:
|
|
|
|
%typemap(csclassmodifiers) X "public sealed class"
|
|
%csmethodmodifiers X::~X "public /*virtual*/";
|
|
|
|
2018-04-18: olly
|
|
[Python] Suppress new pycodestyle warning:
|
|
E252 missing whitespace around parameter equals
|
|
|
|
2018-04-07: goatshriek
|
|
[Ruby] #1213 Fix ruby %alias directive for global C/C++ functions.
|
|
|
|
2018-04-03: olly
|
|
[Ruby] Fix to pass Qnil instead of NULL to rb_funcall(), which silences GCC
|
|
-Wconversion-null warning (on by default with recent GCC).
|
|
|
|
2018-03-09: fultonwi
|
|
[Java] #1184 Fix swigReleaseOwnership() and swigTakeOwnership() regression
|
|
for non-director classes. Restores a dynamic_cast which was previously removed.
|
|
|
|
2018-03-07: llongi
|
|
Github PR #1166 - Fix preprocessor handling of macros with commas
|
|
in a // comment.
|
|
|
|
2018-02-18: JPEWdev
|
|
Patch #1164 - Add support for a command-line options file, also sometimes
|
|
called a response file. This is useful if the command-line options exceed
|
|
the system command-line length limit. To use, put the command-line options
|
|
into a file, then provide the file name prefixed with @, for example using
|
|
a file called args.txt:
|
|
|
|
swig @args.txt
|
|
|
|
2018-02-11: wsfulton
|
|
[Javascript] #1187 Fix compilation error wrapping std::complex via
|
|
std_complex.i.
|
|
|
|
2018-01-30: smarchetto
|
|
[Scilab] add type name argument in SWIG_ptr() function to cast from pointer address to typed pointers
|
|
|
|
2018-01-16: wsfulton
|
|
Expressions following a preprocessor directive must now be separated by whitespace
|
|
or non-numeric characters. This syntax change makes the SWIG preprocessor work like
|
|
the C preprocessor in this area.
|
|
|
|
For example, the following code used be accepted as valid syntax:
|
|
#if1
|
|
#define ABC 123
|
|
#endif
|
|
|
|
Now you get an error:
|
|
example.h:1: Error: Unknown SWIG preprocessor directive: if1 (if this is a block of
|
|
target language code, delimit it with %{ and %})
|
|
example.h:3: Error: Extraneous #endif.
|
|
|
|
The following is the correct syntax:
|
|
#if 1
|
|
#define ABC 123
|
|
#endif
|
|
|
|
The following of course also works:
|
|
#if(1)
|
|
#define ABC 123
|
|
#endif
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2018-01-15: wsfulton
|
|
Fix issue #1183. Floating point exception evaluating preprocessor expressions
|
|
resulting in division by zero.
|
|
|
|
2018-01-14: wsfulton
|
|
Fix issue #1172. Seg fault parsing invalid exponents in the preprocessor.
|
|
|
|
2018-01-12: Liryna
|
|
[C#] Patch #1128. Add ToArray function to std::vector wrappers.
|
|
|
|
2018-01-12: wsfulton
|
|
[Java] Fix issue #1156. Add missing throws clause for interfaces when using the
|
|
%interface family of macros.
|
|
|
|
2018-01-05: wsfulton
|
|
Fix default arguments using expressions containing -> syntax error. Problem reported on
|
|
swig-user mailing list.
|
|
|
|
2017-12-30: wsfulton
|
|
[Python] Replace pep8 with pycodestyle for checking the Python code style when
|
|
running Python tests.
|
|
|
|
2017-12-30: davedissian
|
|
Fixed a symbol lookup issue when encountering a typedef of a symbol from the tag
|
|
namespace to the global namespace when the names are identical, such as 'typedef
|
|
struct Foo Foo;'.
|
|
|
|
2017-12-13: wsfulton
|
|
[Perl] add missing support for directorfree typemaps.
|
|
|
|
2017-12-13: wsfulton
|
|
Issue #1167 Fix directorout typemaps which were causing undefined behaviour when
|
|
returning pointers by reference.
|
|
|
|
2017-12-08: olly
|
|
[PHP] Use ZEND_MODULE_GLOBALS_ACCESSOR to access globals - this
|
|
should make the generated code work with PHP 7.2.0.
|
|
|
|
2017-12-04: wsfulton
|
|
[Python] Add missing checks for failures in calls to PyUnicode_AsUTF8String. Previously a
|
|
seg fault could occur when passing invalid UTF8 strings (low surrogates), eg passing
|
|
u"\udcff" to the C layer (Python 3).
|
|
|
|
2017-11-24: joequant
|
|
Fix #1124 and return R_NilValue for null pointers
|
|
|
|
2017-11-29: wsfulton
|
|
[Java] director exception handling improvements.
|
|
|
|
When a director method throws an exception and it is caught by DirectorException
|
|
and passed back to Java using Swig::DirectorException::throwException, the Java
|
|
stack trace now contains the original source line that threw the exception.
|
|
|
|
Deprecate Swig::DirectorException::raiseJavaException, please replace usage with
|
|
Swig::DirectorException::throwException.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2017-10-26: wsfulton
|
|
Add support for C++11 ref-qualifiers when using directors.
|
|
|
|
2017-10-26: wsfulton
|
|
Fix generated code when using directors and methods returning const ref pointers.
|
|
|
|
2017-10-26: wsfulton
|
|
[C#, D, Java, Octave, R, Scilab] Port director typemaps to these additional languages.
|
|
Issue #700.
|
|
|
|
2017-10-26: radarsat1
|
|
[Ruby Python] Patch #1029 - Correct handling of null using directors and shared_ptr.
|
|
|
|
2017-10-10: joequant
|
|
[R] pass enum expressions to R. This will generate
|
|
incorrect files when there is an arithmetic expression
|
|
in the enum, but this is better than silently generating
|
|
incorrect code
|
|
|
|
2017-10-09: olly
|
|
[PHP] Fix incorrect wrapper code generated when there's a
|
|
combination of overloading, parameters with a default value
|
|
and %newobject. Fixes https://sourceforge.net/p/swig/bugs/1350/
|
|
|
|
2017-10-09: olly
|
|
Remove GCJ support. It isn't in a good state and doesn't seem to
|
|
be used, and GCC7 dropped GCJ. Closes
|
|
https://sourceforge.net/p/swig/bugs/823/
|
|
|
|
2017-10-07: olly
|
|
Fix preprocessor handling of empty macro arguments to match that of
|
|
C/C++ compilers. Fixes https://github.com/swig/swig/pull/1111 and
|
|
https://sourceforge.net/p/swig/bugs/826/
|
|
|
|
2017-10-06: wsfulton
|
|
[Python] Issue #1108. Fix platform inconsistency in Python default argument handling.
|
|
32 bit and 64 bit compiled versions of SWIG generated different Python files
|
|
when default arguments were outside the range of 32 bit signed integers.
|
|
The default arguments specified in Python are now only those that are in the
|
|
range of a 32 bit signed integer, otherwise the default is obtained from C/C++ code.
|
|
|
|
2017-10-02: wsfulton
|
|
[C#] Fix std::complex types passed by value.
|
|
|
|
2017-10-02: wsfulton
|
|
[Javascript, Python, Ruby] Issue #732 - Missing type information for std::complex
|
|
in std_complex.i meant that previously std::complex always had to be fully qualified
|
|
in order to be wrapped with the appropriate typemaps.
|
|
|
|
2017-10-01: joequant
|
|
allow R package names with docs
|
|
allowing multiple get accessors in R
|
|
fix smrt-pointer and NAMESPACE support
|
|
constructors now returning smart pointers (if class
|
|
declared as such)
|
|
smart-pointer classes deriving from parent smart-pointers
|
|
|
|
2017-09-29: wsfulton
|
|
Issue #1100 - Allow an instantiated template to have the same name in the target
|
|
language as the C++ template name, for example, this is now possible:
|
|
|
|
template<typename T> struct X { ... };
|
|
%template(X) X<int>;
|
|
|
|
2017-09-23: wsfulton
|
|
Issue #1098. Fix overloading of shared_ptr with underlying pointer types, eg:
|
|
|
|
void m(std::shared_ptr<T> p);
|
|
void m(T &p);
|
|
void m(T *p);
|
|
|
|
Only the first method is wrapped and the others are ignored/shadowed.
|
|
The implementation is done via a new attribute in the 'typecheck' typemap called
|
|
'equivalent'. If specified, it must contain the equivalent pointer type for overloading
|
|
and can only be used for the special SWIG_TYPECHECK_POINTER precedence level.
|
|
The shared_ptr 'typecheck' typemaps have been modified accordingly.
|
|
Here is a simplified version:
|
|
|
|
%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="T *")
|
|
T,
|
|
T CONST &,
|
|
T CONST *,
|
|
T *CONST&,
|
|
std::shared_ptr< T >,
|
|
std::shared_ptr< T > &,
|
|
std::shared_ptr< T > *,
|
|
std::shared_ptr< T > *&
|
|
{ ... }
|
|
|
|
Overloading with any of these types will result in SWIG ignoring all but the first
|
|
overloaded method by default. Without the 'equivalent' attribute, wrapping the overloaded
|
|
methods resulted in types being shadowed (scripting languages) or code that did not
|
|
compile (statically typed languages).
|
|
|
|
2017-09-19: futatuki
|
|
[Python] #1003 Add --with-2to3=/path/to/2to3 option to configure.
|
|
|
|
2017-09-18: wsfulton
|
|
Fix type promotion wrapping constant expressions of the form:
|
|
# define EXPR_MIXED1 (0x80 + 11.1) - 1
|
|
This was previously an integral type instead of a floating point type.
|
|
|
|
2017-09-17: wsfulton
|
|
Fix generated code for constant expressions containing wchar_t L literals such as:
|
|
# define __WCHAR_MAX (0x7fffffff + L'\0')
|
|
# define __WCHAR_MIN (-__WCHAR_MAX - 1)
|
|
|
|
2017-09-10: mlamarre
|
|
[Python] Patch #1083. Define_DEBUG to 1 to do exactly like Visual Studio
|
|
/LDd, /MDd or /MTd compiler options.
|
|
|
|
2017-08-25: wsfulton
|
|
Issue #1059. Add support for C++11 ref-qualifiers on non-static member functions.
|
|
Members with lvalue ref-qualifiers such as:
|
|
|
|
struct RQ {
|
|
void m1(int x) &;
|
|
void m2(int x) const &;
|
|
};
|
|
|
|
are wrapped like any other member function. Member functions with rvalue ref-qualifiers
|
|
are ignored by default, such as:
|
|
|
|
struct RQ {
|
|
void m3(int x) &&;
|
|
void m4(int x) const &&;
|
|
};
|
|
|
|
example.i:7: Warning 405: Method with rvalue ref-qualifier m3(int) && ignored.
|
|
example.i:8: Warning 405: Method with rvalue ref-qualifier m4(int) const && ignored.
|
|
|
|
These can be unignored and exposed to the target language, see further documentation in
|
|
CPlusPlus11.html.
|
|
|
|
2017-08-16: wsfulton
|
|
Fix #1063. Add using declarations to templates into typedef table.
|
|
|
|
Using declarations to templates were missing in SWIG's internal typedef tables.
|
|
This led to a few problems, such as, templates that did not instantiate and generated
|
|
C++ code that did not compile as SWIG did not know what scope the template was
|
|
in. This happened mostly when a using declaration was used on a template type in a
|
|
completely unrelated namespace.
|
|
|
|
2017-08-16: wsfulton
|
|
Fix type lookup in the presence of using directives and using declarations.
|
|
|
|
Fix some cases of type lookup failure via a combination of both using directives and
|
|
using declarations resulting in C++ code that did not compile as the generated type was
|
|
not fully qualified for use in the global namespace. Example below:
|
|
|
|
namespace Space5 {
|
|
namespace SubSpace5 {
|
|
namespace SubSubSpace5 {
|
|
struct F {};
|
|
}
|
|
}
|
|
using namespace SubSpace5;
|
|
using SubSubSpace5::F;
|
|
void func(SubSubSpace5::F f);
|
|
}
|
|
|
|
2017-08-16: wsfulton
|
|
Issue #1051. %template scope enforcement and class definition fixes.
|
|
|
|
The scoping rules around %template have been specified and enforced.
|
|
The %template directive for a class template is the equivalent to an
|
|
explicit instantiation of a C++ class template. The scope for a valid
|
|
%template instantiation is now the same as the scope required for a
|
|
valid explicit instantiation of a C++ template. A definition of the
|
|
template for the explicit instantiation must be in scope where the
|
|
instantiation is declared and must not be enclosed within a different
|
|
namespace.
|
|
|
|
For example, a few %template and C++ explicit instantiations of std::vector
|
|
are shown below:
|
|
|
|
// valid
|
|
namespace std {
|
|
%template(vin) vector<int>;
|
|
template class vector<int>;
|
|
}
|
|
|
|
// valid
|
|
using namespace std;
|
|
%template(vin) vector<int>;
|
|
template class vector<int>;
|
|
|
|
// valid
|
|
using std::vector;
|
|
%template(vin) vector<int>;
|
|
template class vector<int>;
|
|
|
|
// ill-formed
|
|
namespace unrelated {
|
|
using std::vector;
|
|
%template(vin) vector<int>;
|
|
template class vector<int>;
|
|
}
|
|
|
|
// ill-formed
|
|
namespace unrelated {
|
|
using namespace std;
|
|
%template(vin) vector<int>;
|
|
template class vector<int>;
|
|
}
|
|
|
|
// ill-formed
|
|
namespace unrelated {
|
|
namespace std {
|
|
%template(vin) vector<int>;
|
|
template class vector<int>;
|
|
}
|
|
}
|
|
|
|
// ill-formed
|
|
namespace unrelated {
|
|
%template(vin) std::vector<int>;
|
|
template class std::vector<int>;
|
|
}
|
|
|
|
When the scope is incorrect, an error now occurs such as:
|
|
|
|
cpp_template_scope.i:34: Error: 'vector' resolves to 'std::vector' and
|
|
was incorrectly instantiated in scope 'unrelated' instead of within scope 'std'.
|
|
|
|
Previously SWIG accepted the ill-formed examples above but this led to
|
|
numerous subtle template scope problems especially in the presence of
|
|
using declarations and using directives as well as with %feature and %typemap.
|
|
|
|
Actually, a valid instantiation is one which conforms to the C++03
|
|
standard as C++11 made a change to disallow using declarations and
|
|
using directives to find a template.
|
|
|
|
// valid C++03, ill-formed C++11
|
|
using std::vector;
|
|
template class vector<int>;
|
|
|
|
Similar fixes for defining classes using forward class references have
|
|
also been put in place. For example:
|
|
|
|
namespace Space1 {
|
|
struct A;
|
|
}
|
|
namespace Space2 {
|
|
struct Space1::A {
|
|
void x();
|
|
}
|
|
}
|
|
|
|
will now error out with:
|
|
|
|
cpp_class_definition.i:5: Error: 'Space1::A' resolves to 'Space1::A' and
|
|
was incorrectly instantiated in scope 'Space2' instead of within scope 'Space1'.
|
|
|
|
Previously some symbols would have been instantiated in the wrong scope and led
|
|
to lots of scope problems involving SWIG typemaps, features, renames etc.
|
|
You will need to correct the scope used in other SWIG directives which do not
|
|
support 'using declarations' and 'using directives'. For example, if you previously had:
|
|
|
|
%rename(Zap) vector<int>::clear;
|
|
using namespace std;
|
|
%template(VectorInt) vector<int>;
|
|
|
|
Prior versions of SWIG incorrectly instantiated vector<int> in the global namespace
|
|
and so the %rename matched. Now the template is instantiated in the correct namespace,
|
|
so is fully qualified as std::vector<int>. The other SWIG directives need correcting as
|
|
they do not follow 'using declarations' and 'using directives'. Change it to:
|
|
|
|
%rename(Zap) std::vector<int>::clear;
|
|
using namespace std;
|
|
%template(vin) vector<int>;
|
|
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2017-08-16: wsfulton
|
|
Fix scope lookup for template parameters containing unary scope operators.
|
|
|
|
Fixes cases like:
|
|
|
|
namespace Alloc {
|
|
template<typename T> struct Rebind {
|
|
typedef int Integer;
|
|
};
|
|
}
|
|
%template(RebindBucket) Alloc::Rebind< Bucket >;
|
|
OR
|
|
%template(RebindBucket) Alloc::Rebind< ::Bucket >;
|
|
|
|
Alloc::Rebind< Bucket >::Integer Bucket1();
|
|
Alloc::Rebind< ::Bucket >::Integer Bucket2();
|
|
Alloc::Rebind<::template TemplateBucket<double>>::Integer Bucket3();
|
|
|
|
2017-08-16: wsfulton
|
|
For templates only, the template parameters are fully resolved when
|
|
handling typemaps. Without this, it is too hard to have decent rules
|
|
to apply typemaps when parameter types are typedef'd and template
|
|
parameters have default values.
|
|
|
|
Fixes %clear for typedefs in templates, eg:
|
|
|
|
%typemap("in") XXX<int>::Long "..."
|
|
template typename<T> struct XXX {
|
|
typedef long Long;
|
|
};
|
|
%clear XXX<int>::Long;
|
|
|
|
as the typemap was previously incorrectly stored as a typemap for long
|
|
instead of XXX<int>::Long.
|
|
|
|
2017-08-05: olly
|
|
[C++11] Allow static_assert at the top level (and disallow it right
|
|
after template<T>). Fixes https://github.com/swig/swig/issues/1031
|
|
reported by Artem V L.
|
|
|
|
2017-08-02: wsfulton
|
|
Fix incorrectly shown warning when an empty template instantiation was used on a
|
|
class used as a base class and that base class was explicitly ignored with %ignore.
|
|
Example of the warning which will no longer appear:
|
|
|
|
Warning 401: Base class 'Functor< int,int >' has no name as it is an empty
|
|
template instantiated with '%template()'. Ignored.
|
|
|
|
2017-07-17: fflexo
|
|
[Java] #674 Add std_list.i to add support for std::list containers. The Java proxy
|
|
extends java.util.AbstractSequentialList and makes the C++ std::list container look
|
|
and feel much like a java.util.LinkedList from Java.
|
|
|
|
2017-07-07: wsfulton
|
|
[Python] Fix display of documented template types when using the autodoc
|
|
feature. For example when wrapping:
|
|
|
|
%feature("autodoc");
|
|
template<typename X> struct T {};
|
|
%template(TInteger) T<int>;
|
|
|
|
the generated documentation contains:
|
|
"""Proxy of C++ T< int > class."""
|
|
instead of:
|
|
"""Proxy of C++ T<(int)> class."""
|
|
and
|
|
"""__init__(TInteger self) -> TInteger"""
|
|
instead of
|
|
"""__init__(T<(int)> self) -> TInteger"""
|
|
|
|
2017-06-27: nihaln
|
|
[PHP] Update the OUTPUT Typemap to add return statement to the
|
|
PHP Wrapper.
|
|
|
|
2017-06-27: nihaln
|
|
[PHP] Update the enum and value examples to use the OO wrappers
|
|
rather than the flat functions produced with -noproxy. There's
|
|
not been a good reason to use -noproxy for since PHP5 OO wrapping
|
|
was fixed back in 2005.
|
|
|
|
2017-06-23: m7thon
|
|
[Python] fix and improve default argument handling:
|
|
|
|
1. Fix negative octals. Currently not handled correctly by `-py3`
|
|
(unusual case, but incorrect).
|
|
2. Fix arguments of type "octal + something" (e.g. `0640 | 04`).
|
|
Currently drops everything after the first octal. Nasty!
|
|
3. Fix bool arguments "0 + something" (e.g. `0 | 1`) are always
|
|
"False" (unusual case, but incorrect).
|
|
4. Remove special handling of "TRUE" and "FALSE" from
|
|
`convertValue` since there's no reason these have to match
|
|
"true" and "false".
|
|
5. Remove the Python 2 vs. Python 3 distinction based on the
|
|
`-py3` flag. Now the same python code is produced for default
|
|
arguments for Python 2 and Python 3. For this, octal default
|
|
arguments, e.g. 0644, are now wrapped as `int('644', 8)`. This
|
|
is required, as Python 2 and Python 3 have incompatible syntax
|
|
for octal literals.
|
|
|
|
Fixes #707
|
|
|
|
2017-06-21: futatuki
|
|
#1004 - Fix ccache-swig executable name to respect configure's --program-prefix and
|
|
--program-suffix values if used.
|
|
|
|
2017-06-21: tamuratak
|
|
[Ruby] #911 - Add std::wstring support.
|
|
|
|
2017-06-19: wsfulton
|
|
[Python] Fix handling of rich comparisons when wrapping overloaded operators:
|
|
|
|
operator< operator<= operator> operator>= operator== operator!=
|
|
|
|
Previously a TypeError was always thrown if the type was not correct. NotImplemented
|
|
is now returned from these wrapped functions if the type being compared with is
|
|
not correct. The subsequent behaviour varies between different versions of Python
|
|
and the comparison function being used, but is now consistent with normal Python
|
|
behaviour. For example, for the first 4 operator overloads above, a TypeError
|
|
'unorderable types' is thrown in Python 3, but Python 2 will return True or False.
|
|
NotImplemented should be returned when the comparison cannot be done, see PEP 207 and
|
|
https://docs.python.org/3/library/constants.html#NotImplemented
|
|
|
|
Note that the bug was only present when overloaded operators did not also have a
|
|
function overload.
|
|
|
|
Fixes SF bug #1208 (3441262) and SF patch #303.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2017-06-17: fabrice102
|
|
[Go] Fix Go callback example. Fixes github #600, #955, #1000.
|
|
|
|
2017-06-16: wsfulton
|
|
Make sure warning and error messages are not split up by other processes writing to
|
|
stdout at the same time.
|
|
|
|
2017-06-16: wsfulton
|
|
[R] Fix wrapping function pointers containing rvalue and lvalue reference parameters.
|
|
|
|
2017-06-13: olly
|
|
[Perl] Fix testsuite to work without . in @INC - it was removed in
|
|
Perl 5.26 for security reasons, and has also been removed from
|
|
older versions in some distros. Fixes
|
|
https://github.com/swig/swig/issues/997 reported by lfam.
|
|
|
|
2017-06-03: wsfulton
|
|
Fix %import on a file containing a file scope %fragment forced inclusion to not
|
|
generate the fragment contents as %import should not result in code being generated.
|
|
The behaviour is now the same as importing code insertion blocks.
|
|
Wrapping FileC.i in the following example will result in no generated code, whereas
|
|
previously "#include <limits.h>" was generated:
|
|
|
|
// FileA.i
|
|
%fragment("<limits.h>", "header") %{
|
|
#include <limits.h>
|
|
%}
|
|
|
|
%{
|
|
#include <stdio.h>
|
|
%}
|
|
%fragment("<limits.h>");
|
|
|
|
// FileC.i
|
|
%import "FileA.i"
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2017-05-26: Volker Diels-Grabsch, vadz
|
|
[Java] #842 Extend from java.util.AbstractList<> and implement java.util.RandomAccess for
|
|
std::vector wrappers. This notably allows to iterate over wrapped vectors in a natural way.
|
|
|
|
2017-05-30: davidcl
|
|
[Scilab] #994 Undefined symbol error when loading in Scilab 6
|
|
|
|
2017-05-25: asibross
|
|
[Java] #370 #417 Missing smart pointer handling in Java director extra methods
|
|
swigReleaseOwnership() and swigTakeOwnership().
|
|
|
|
2017-05-23: wsfulton
|
|
[Java] #230 #759 Fix Java shared_ptr and directors for derived classes java compilation
|
|
error.
|
|
|
|
For shared_ptr proxy proxy classes, add a protected method swigSetCMemOwn for modifying
|
|
the swigCMemOwn and swigCMemOwnDerived member variables which are used by various other
|
|
methods for controlling memory ownership.
|
|
|
|
2017-05-21: Sghirate
|
|
[Java, C#, D] #449 Remove unnecessary use of dynamic_cast in directors to enable
|
|
non-RTTI compilation.
|
|
|
|
2017-05-21: wsfulton
|
|
[Python] #993 Fix handling of default -ve unsigned values, such as:
|
|
void f(unsigned = -1U);
|
|
|
|
2017-05-20: jschueller
|
|
[Python] #991 Fix E731 PEP8 warning: do not assign a lambda expression
|
|
|
|
2017-05-16: nihal95
|
|
[PHP] Add %pragma version directive to allow the version of the
|
|
extension to be set. Patch #970, fixes #360.
|
|
|
|
2017-05-13: yag00
|
|
Patch #975 - Add support for noexcept on director methods.
|
|
|
|
2017-04-27: redbrain
|
|
Issue #974, Patch #976 - Fix preprocessor handling of macros with commas in a comment.
|
|
|
|
2017-04-25: jleveque
|
|
[Lua] #959 - Fix Visual Studio C4244 conversion warnings in Lua wrappers.
|
|
|
|
2017-04-21: tamuratak
|
|
[Ruby] #964 - Add shared_ptr director typemaps.
|
|
|
|
2017-04-20: wsfulton
|
|
[Ruby] #586, #935 Add assert for invalid NULL type parameter when calling SWIG_Ruby_NewPointerObj.
|
|
|
|
2017-04-20: tamuratak
|
|
[Ruby] #930, #937 - Fix containers of std::shared_ptr.
|
|
Upcasting, const types (eg vector<shared_ptr<const T>>) and NULL/nullptr support added.
|
|
|
|
2017-04-12: smarchetto
|
|
[Scilab] New parameter targetversion to specify the Scilab target version (5, 6, ..) for code generation
|
|
With Scilab 6 target specified, identifier names truncation is disabled (no longer necessary)
|
|
|
|
2017-03-24: tamuratak
|
|
[Ruby] Fix #939 - Wrapping std::vector<bool> fix due to incorrect null checks
|
|
on VALUE obj.
|
|
|
|
2017-03-17: vadz
|
|
[C#] #947 Add support for std::complex<T>
|
|
|
|
2017-03-17: wsfulton
|
|
[Go] Fix handling of typedef'd function pointers and typedef'd member function pointers
|
|
such as:
|
|
|
|
typedef int (*FnPtr_td)(int, int);
|
|
int do_op(int x, int y, FnPtr_td op);
|
|
|
|
2017-03-16: wsfulton
|
|
Add support for member const function pointers such as:
|
|
|
|
int fn(short (Funcs::* parm)(bool)) const;
|
|
|
|
Also fix parsing of references/pointers and qualifiers to member
|
|
pointers such as:
|
|
|
|
int fn(short (Funcs::* const parm)(bool));
|
|
int fn(short (Funcs::* & parm)(bool));
|
|
|
|
2017-03-10: wsfulton
|
|
Extend C++11 alternate function syntax parsing to support const and noexcept, such as:
|
|
|
|
auto sum1(int x, int y) const -> int { return x + y; }
|
|
auto sum2(int x, int y) noexcept -> int { return x + y; }
|
|
|
|
2017-02-29: tamuratak
|
|
[Ruby] #917 - Add Enumerable module to all container class wrappers. It was missing
|
|
for std::list, std::multiset, std::unordered_multiset and std::unordered_map.
|
|
|
|
2017-02-27: assambar
|
|
[C++11] Extend parser to support throw specifier in combination
|
|
with override and/or final.
|
|
|
|
2017-02-10: tamuratak
|
|
[Ruby] #883 - Add support for C++11 hash tables:
|
|
std::unordered_map
|
|
std::unordered_set
|
|
std::unordered_multimap
|
|
std::unordered_multiset
|
|
|
|
2017-02-08: jcsharp
|
|
[C#] #887 Improve std::vector<T> wrapper constructors -
|
|
Replace constructor taking ICollection with IEnumerable and also add IEnumerable<T>
|
|
constructor to avoid the boxing and unboxing overhead of the original constructor,
|
|
when the type parameter is a value type.
|