| SWIG (Simplified Wrapper and Interface Generator) |
| |
| See the CHANGES.current file for changes in the current version. |
| 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.1 (21 Aug 2019) |
| =========================== |
| |
| 2019-08-20: TekuConcept |
| [Javascript] #1535 Add %native support to Javascript. |
| |
| 2019-08-20: bkotzz |
| [Java] #1616 Add SWIG_JavaIllegalStateException to support throwing |
| java.lang.IllegalStateException from JNI code. |
| |
| 2019-08-19: sjml |
| [Lua] #1596 tostring output changes to show the underlying C/C++ pointer. |
| |
| 2019-08-08: rokups |
| [C#, Java] #1601 Fix invalid code generated for "%constant enum EnumType. |
| |
| 2019-08-07: wsfulton |
| [Python] Fix method overloading of methods that take STL containers of different |
| types. The following usage (using std::vector) would fail when using -builtin: |
| |
| %include <std_string.i> |
| %include <std_vector.i> |
| |
| %inline %{ |
| struct X {}; |
| %} |
| |
| %template(VectorX) std::vector<X>; |
| %template(VectorInt) std::vector<int>; |
| |
| %inline %{ |
| using namespace std; |
| string VectorOverload(vector<X> v); |
| string VectorOverload(vector<int> v); |
| %} |
| |
| The following would incorrectly fail: |
| |
| s = VectorOverload([1, 2, 3]) |
| |
| With: |
| |
| Traceback (most recent call last): |
| File "runme3.py", line 20, in <module> |
| ret = VectorOverload([1, 2, 3]) |
| TypeError: Wrong number or type of arguments for overloaded function 'VectorOverload'. |
| Possible C/C++ prototypes are: |
| VectorOverload(std::vector< Number,std::allocator< Number > >) |
| VectorOverload(std::vector< int,std::allocator< int > >) |
| |
| The problem was due to some error handling that was not cleared during typehecking. |
| In this case an error was not cleared when the elements in the list failed the |
| typecheck for converting to X. Only occurs in Python 3+. |
| |
| In some combinations of overloaded methods, the following type of error message would |
| occur: |
| |
| RuntimeError: in sequence element 0 |
| |
| The above exception was the direct cause of the following exception: |
| |
| Traceback (most recent call last): |
| File "runme3.py", line 23, in <module> |
| check(VectorOverload(v), "vector<X>") |
| SystemError: <built-in function VectorOverload> returned a result with an error set |
| |
| 2019-08-01: wsfulton |
| #1602 Fix regression in 4.0.0 where a template function containing a parameter |
| with the same name as the function name led to the parameter name used in the |
| target language being incorrectly modified. |
| |
| 2019-07-29: wsfulton |
| Remove all generated files on error. Previously generated files were not removed, |
| potentially breaking Makefiles using file dependencies, especially when -Werror |
| (warnings as errors) was used. |
| |
| 2019-07-23: smithx |
| [C#] #1530 #1532 Fix marshalling of std::wstring to C#. |
| |
| 2019-07-18: gicmo |
| [Python] #1587 Python 3.8 support - remove use of deprecated PyObject_GC_UnTrack. |
| |
| 2019-07-18: cher-nov |
| [Python] #1573 Generated Python code uses consistent string quoting style - double |
| quotes. |
| |
| 2019-07-16: geefr |
| [C#] #616 #1576 Fix C# bool INPUT[], bool OUTPUT[], bool INOUT[] typemaps to marshall |
| as 1-byte. |
| |
| 2019-07-12: vadz |
| [C#, Java] #1568 #1583 Fix std::set<> typemaps for primitive types. |
| |
| 2019-07-12: vadz |
| #1566 #1584 Regression in 4.0.0 - fix missing value for first item of enums with |
| trailing comma. |
| |
| 2019-07-11: mcfarljm |
| #1548 #1578 Fix segfault in Doxygen parser parsing empty lines in some commands like |
| \code. |
| |
| 2019-07-09: IsaacPascual |
| [C#, Java] #1570 Fix name of generated C#/Java classes for %interface macros |
| in swiginterface.i when wrapping nested C++ classes. |
| |
| 2019-07-05: wsfulton |
| [Python] #1547 Whitespace fixes in Doxygen translated comments into pydoc comments |
| for Sphinx compatibility. |
| |
| 2019-06-28: wsfulton |
| [MzScheme, OCaml] #1559 $arg and $input were incorrectly substituted in the |
| argout typemap when two or more arguments were present. |
| |
| 2019-06-24: wsfulton |
| [Python, Ruby] #1538 Remove the UnknownExceptionHandler class in order to be |
| C++17 compliant as it uses std::unexpected_handler which was removed in C++17. |
| This class was intended for director exception handling but was never used by |
| SWIG and was never documented. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2019-06-06: bkotzz |
| [Java] #1552 Improve performance in Java std::vector constructor wrapper that takes |
| a native Java array as input. |
| |
| 2019-06-03: olly |
| [Python] Fix regression in implicit_conv handling of tuples, |
| introduced in SWIG 4.0.0. Fixes #1553, reported by Alexandre |
| Duret-Lutz. |
| |
| 2019-05-24: wsfulton |
| [Octave] Fix detection of Octave on MacOS. |
| |
| 2019-05-24: opoplawski |
| [Octave] #1522 Adapt OCTAVE_LDFLAGS for Octave 5.1. |
| |
| 2019-05-22: ferdynator |
| [PHP] #1528 Don't add a closing '?>' PHP tag to generated files. |
| PSR-2 says it MUST be omitted for files containing only PHP. |
| Version 4.0.0 (27 Apr 2019) |
| =========================== |
| |
| 2019-04-24: vadz |
| #1517 Fix crash if "@return" Doxygen tag was used on a node without any return type. |
| |
| 2019-04-24: vadz |
| #1515 Fix parsing of enums with trailing comma when using -doxygen. |
| |
| 2019-04-19: ianlancetaylor |
| [Go] #1055 When generating Go code, make -cgo the default. Add new -no-cgo option |
| to disable the default. |
| |
| 2019-04-19: pbecherer |
| [Tcl] #1508 Fix Visual Studio 2015 and later compilation errors due to snprintf macro |
| definition. |
| |
| 2019-04-09: wsfulton |
| [C#] Fix FxCop warning CA2002 in SWIGPendingException - a lock on a reference of |
| type 'Type'. |
| |
| 2019-03-30: wsfulton |
| [Java, D] Add the parameters typemap attribute to the javadestruct, |
| javadestruct_derived, ddispose, ddispose_derived typemaps to mirror enhanced |
| flexibility in the csdisposing and csdisposing_derived (C#) typemaps. If provided |
| the contents are generated as the delete/dispose method's parameters declaration. |
| |
| 2019-03-30: wsfulton |
| [C#] #421 Fix FxCop warning CA1063 by implementing the recommended Dispose methods for |
| the IDisposable interface. Previously just the Dispose() method was generated. |
| Now the Dispose() and Dispose(bool disposing) methods are generated. |
| Changes are required if custom "csfinalize", "csdestruct" or "csdestruct_derived" |
| typemaps are being used. Details in #421 on Github. SWIG will error out if one of |
| the "csfinalize, "csdestruct" or "csdestruct_derived" typemaps are found. Example |
| error message: |
| |
| foo.h:60: Error: A deprecated csfinalize typemap was found for Foo, please remove |
| it and replace all csdestruct, csdestruct_derived and csfinalize typemaps by the |
| csdispose, csdispose_derived, csdisposing and csdisposing_derived typemaps. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2019-03-25: Liryna |
| [C#] #1143 Add std_list.i for std::list support. |
| The C# std::list<T> wrappers are made to look and feel like a C# |
| System.Collections.Generic.LinkedList<> collection. |
| The IEnumerable<> interface is implemented in the proxy class. |
| The ICollection<> interface can also be implemented to provide enhanced functionality |
| whenever a C++ operator== is available. This is the case for when T is a |
| primitive type or a pointer. If T does define an operator==, then use the |
| SWIG_STD_LIST_ENHANCED macro to obtain this enhanced functionality, for example: |
| |
| SWIG_STD_LIST_ENHANCED(SomeNamespace::Klass) |
| %template(ListKlass) std::list<SomeNamespace::Klass>; |
| |
| 2019-03-18: richardbeare |
| [R] #1328 Non-trivial enums are working now. The enum values are now obtained from |
| the C/C++ layer. const reference enums and C++11 enum classes are also now working. |
| |
| 2019-03-14: mochizk |
| [Javascript] #1500 Fix compilation errors due to deprecating V8 API in Node.js. |
| New V8 API is used if node.js >= v10.12, or if V8 >= v7.0. |
| |
| 2019-03-12: vadz |
| [C#] #1495 Add std_set.i for std::set support. |
| |
| 2019-03-11: dirteat,opoplawski |
| [Octave] Fix compilation errors in Octave 5.1. |
| |
| error: format not a string literal and no format arguments [-Werror=format-security] |
| |
| 2019-02-28: wsfulton |
| [Java] std::vector improvements for types that do not have a default constructor. |
| |
| The std::vector wrappers have been changed to work by default for elements that are |
| not default insertable, i.e. have no default constructor. This has been achieved by |
| not wrapping: |
| |
| vector(size_type n); |
| |
| Previously the above had to be ignored via %ignore. |
| |
| If the above constructor is still required it can be added back in again via %extend: |
| |
| %extend std::vector { |
| vector(size_type count) { return new std::vector< T >(count); } |
| } |
| |
| Alternatively, the following wrapped constructor could be used as it provides near-enough |
| equivalent functionality: |
| |
| vector(jint count, const value_type& value); |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2019-02-25: wsfulton |
| [Python] Fix compile errors wrapping overloaded functions/constructors where a vararg |
| function is declared after a non-vararg function. |
| |
| 2019-02-23: zphensley42 |
| Use fully qualified name 'java.lang.Object' instead of 'Object' in generated code to |
| avoid clashes with wrapped C++ classes called 'Object'. |
| |
| 2019-02-23: gtbX |
| [Java] #1035 Add (const char *STRING, size_t LENGTH) typemaps in addition to the non-const |
| typemaps (char *STRING, size_t LENGTH) which does not attempt to write back to the const |
| string. |
| |
| 2019-02-22: tamuratak |
| [Ruby] #984 Add support for RTypedData introduced in Ruby 1.9.3. |
| |
| 2019-02-22: ZackerySpytz |
| #1483 Fix compilation failures when a director class has final methods. |
| |
| 2019-02-21: wsfulton |
| [Java] #1240 Suppress Java 9 deprecation warnings on finalize method. |
| |
| 2019-02-21: ZackerySpytz |
| #1480 Fix some rejections of valid floating-point literals. |
| |
| 2019-02-19: wsfulton |
| #1475 Fix regression parsing gcc preprocessor linemarkers in the form: |
| |
| # linenum filename flags |
| |
| 2019-02-18: jakecobb |
| [Python] #945 #1234 Elements in std::vector memory access fix. |
| |
| Accessing an element in a std::vector obtains a reference to the element via an |
| iterator pointing to the element in the container. If the vector is garbage collected, |
| the SWIG wrapper containing the pointer to the element becomes invalid. The fix is |
| to obtain a back-reference to the container by the wrapper to the element in the Python |
| layer to prevent the garbage collector from destroying the underlying container. |
| |
| 2019-02-17: wsfulton |
| Fix typemap matching to expand template parameters when the name contains |
| template parameters. In the %typemap below the type is T and the name is X<T>::make |
| and the name now expands correctly to X< int >::make |
| |
| template<typename T> struct X { |
| %typemap(out) T X<T>::make "..." |
| T make(); |
| }; |
| |
| %template(Xint) X<int>; |
| |
| 2019-02-16: wsfulton |
| Fix parser error containing multiple #define statements inside an enum. |
| |
| The second #define fails to parse: |
| |
| enum FooEnum { |
| ENUM1 = 0, |
| ENUM2 = 1, |
| |
| #define MACRO_DEF1 "Hello" |
| #define MACRO_DEF2 "World!" |
| |
| ENUM3 = 2, |
| ENUM4 = 3, |
| }; |
| |
| Bug mentioned at https://sourceforge.net/p/swig/patches/333/ |
| |
| 2019-02-14: wsfulton |
| Add some missing copy constructors into STL containers. |
| |
| 2019-02-14: bkotzz |
| [Java] #1356 Add STL containers: |
| std::unordered_map |
| std::unordered_set |
| std::set |
| |
| 2019-02-14: bkotzz |
| [Java] #1356 std::map wrappers have been modified. Now the Java proxy class |
| extends java.util.AbstractMap. The std::map container looks and feels much like |
| a java.util.HashMap from Java. |
| |
| A few members have changed their names. If the old method signatures are needed, |
| then copy std_map.i from swig-3.0.12 and use that instead. Alternatively, |
| add the old missing methods to the new methods by using the following %proxycode: |
| |
| %extend std::map { |
| %proxycode %{ |
| // Old API |
| public boolean empty() { |
| return isEmpty(); |
| } |
| public void set($typemap(jboxtype, K) key, $typemap(jboxtype, T) x) { |
| put(key, x); |
| } |
| public void del($typemap(jboxtype, K) key) { |
| remove(key); |
| } |
| public boolean has_key($typemap(jboxtype, K) key) { |
| return containsKey(key); |
| } |
| %} |
| } |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2019-02-13: ZackerySpytz |
| #1469 Add support for C++17 hexadecimal floating literals. |
| |
| 2019-02-11: wsfulton |
| [OCaml] #1437 OCaml has been give the 'Experimental' language status. The examples work |
| and most of the test-suite is also working, so it is quite close to being a 'Supported' language. |
| |
| 2019-02-10: ZackerySpytz |
| #1464 Add support for C++14 binary integer literals. |
| |
| 2019-02-10: ZackerySpytz |
| #1450 Add support for C++11 UCS-2 and UCS-4 character literals. Also, add support for |
| C++17 UTF-8 character literals. |
| |
| 2019-02-10: wsfulton |
| [MzScheme] #1437 MzScheme/Racket is now an 'Experimental' language. The examples work |
| and a large portion of the test-suite is also working. |
| |
| 2019-02-10: wsfulton |
| [MzScheme] Destructor wrappers were not being generated. |
| |
| 2019-02-10: wsfulton |
| [MzScheme] Static variable wrappers fixed - $argnum was not expanded. |
| |
| 2019-02-10: sethrj |
| #1452 Fix %apply for anonymous template instantiations |
| |
| 2019-02-09: olly |
| [PHP] Fix access to already released memory during PHP module |
| shutdown, which often didn't cause visible problems, but could |
| result in segmentation faults, bus errors, etc. Fixes #1170, |
| reported by Jitka PlesnÃková. |
| |
| 2019-02-09: olly |
| [PHP] A renamed constructor is now wrapped as a static method in |
| PHP. |
| |
| 2019-02-08: olly |
| [PHP] Don't generate code which references $r when $r hasn't been |
| defined. This could happen in overloaded methods which returned |
| void and took at least one const std::string& parameter. |
| |
| 2019-02-08: olly |
| [PHP] The generated code is now compatible with PHP 7.3, and the |
| testsuite now runs cleanly with this version too. |
| |
| 2019-02-05: wsfulton |
| #1437 SWIG now classifies the status of target languages into either 'Experimental' or |
| 'Supported'. This status is provided to indicate the level of maturity to expect when using |
| a particular target language as not all target languages are fully developed. Details are |
| in the Introduction.html chapter of the documentation. |
| |
| 2019-02-04: wsfulton |
| [CFFI] #1447 Common Lisp CFFI 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 |
| [Allegrocl] #1447 Allegro Common Lisp 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 |
| [Chicken] #1447 CHICKEN 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 |
| [CLISP] #1447 GNU Common Lisp 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 |
| [S-EXP] #1447 Common Lisp S-Exp 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 |
| [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 the getters and setters of non-static member variables. |
| |
| 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 the OCaml examples and test suite for out-of-source builds. |
| |
| 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: wsfulton |
| [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 so the |
| generated code builds when PHP was built with ZTS enabled. |
| |
| 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 |
| [R] 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 issue #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 smart-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 issue 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 #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. |
| Note that boxed types are now used in the Java layer when wrapping vector of C primitive |
| types, for example. This may introduce some subtle incompatibilities due to some |
| differences in how Java converts boxed types and unboxed types. For example, |
| |
| int i=0; |
| double d1 = i; // ok |
| Double d2 = i; // error: incompatible types: int cannot be converted to Double |
| |
| This can be a problem when calling the add and set functions. A suggested backwards |
| compatible workaround is to use something like (shown for std::vector<double>: |
| |
| #if defined(SWIGJAVA) |
| // Add in old api that uses non-boxed types |
| %extend std::vector<double> { |
| %proxycode %{ |
| public void add(double x) { |
| add(Double.valueOf(x)); |
| } |
| public void set(int i, double val) { |
| set(i, Double.valueOf(val)); |
| } |
| %} |
| } |
| #endif |
| |
| %include "std_vector.i" |
| %template(VectorDouble) std::vector<double>; |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 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. |
| |
| Version 3.0.12 (27 Jan 2017) |
| ============================ |
| |
| 2017-01-27: wsfulton |
| [C#] #882 Fix missing filename in error messages when there is a problem |
| writing out C# files. |
| |
| 2017-01-27: briancaine |
| [Guile] #744 Fix compilation errors in Guile wrappers - regression |
| introduced in swig-3.0.11. |
| |
| 2017-01-24: andrey-starodubtsev |
| [Java] Apply #704 - director typemap improvements. |
| Memory leak fixes, add support for "directorargout" typemap and |
| add director support to typemaps.i. |
| |
| 2017-01-24: wsfulton |
| Enhance %extend to extend a class with template constructors, eg: |
| |
| struct Foo { |
| %extend { |
| template<typename T> |
| Foo(int a, T b) { |
| ... |
| } |
| } |
| }; |
| %template(Foo) Foo::Foo<double>; |
| |
| 2017-01-22: wsfulton |
| Issue #876 Enhance %extend to extend a class with template methods, eg: |
| |
| struct Foo { |
| %extend { |
| template<typename T> |
| void do_stuff(int a, T b) { |
| ... |
| } |
| } |
| }; |
| %template(do_stuff_inst) Foo::do_stuff<double>; |
| |
| Similarly for static template methods. |
| |
| 2017-01-22: kwwette |
| [Octave] add support for version 4.2 |
| - The Octave API now uses some C++11 features. It is recommended to use |
| the mkoctfile program supplied by Octave to compile the SWIG-generated |
| wrapper code, as mkoctfile will ensure the correct C++ compiler/options |
| are used. Otherwise, the value of `mkoctfile -p CXX` should be parsed |
| for any -std=* flags which might be present. |
| - Octave has dropped support for << and >> operators, so SWIG now |
| ignores them. |
| - The Octave error() function now raises C++ exceptions to propagate |
| Octave errors, so %exception directives may need to be modified. |
| For convenience the SWIG_RETHROW_OCTAVE_EXCEPTIONS macro can be used |
| to rethrow any Octave exceptions for Octave itself to handle, e.g.: |
| |
| try { |
| $action // may call error() |
| } |
| SWIG_RETHROW_OCTAVE_EXCEPTIONS // error() exceptions are rethrown |
| catch(...) { |
| ... // all other exceptions |
| } |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2017-01-16: wkalinin |
| [C#] Fix #733 regression introduced in swig-3.0.9. |
| Missing virtual function override in C# layer when using %import. |
| |
| 2017-01-16: fschlimb |
| Fix #813 template symbol name lookup bug when typedef names are the same but in different |
| namespaces. |
| |
| 2017-01-15: wsfulton |
| [C# D Java] |
| The SWIG library no longer uses the javatype, dtype or cstype typemaps, thereby |
| completely freeing them up for users to use without having to replicate the library |
| code that they previously added. The code previously generated by these typemaps |
| has been replaced by the new %proxycode directive. Their use in the library code |
| was fairly minimal: |
| |
| C# cstype: std_array.i std_map.i std_vector.i |
| D dtype: std_vector.i |
| Java javatype: arrays_java.i |
| |
| 2017-01-14: wsfulton |
| The %extend directive can now optionally support one of the 'class', 'struct' or 'union' |
| keywords before the identifier name, for example: |
| |
| struct X { ... }; |
| %extend struct X { ... } |
| |
| Previously this had to specified as: |
| |
| struct X { ... }; |
| %extend X { ... } |
| |
| 2017-01-13: wsfulton |
| [C# D Java] Add new %proxycode directive which is a macro for %insert("proxycode"). |
| This is a way of adding pure C#/D/Java code into the appropriate proxy class, eg: |
| |
| %extend Proxy2 { |
| %proxycode %{ |
| public int proxycode2(int i) { |
| return i+2; |
| } |
| %} |
| } |
| |
| %inline %{ |
| struct Proxy2 {}; |
| %} |
| |
| There will then be a pure Java/C#/D method called proxycode2 in the Proxy2 class. |
| |
| 2016-12-31: ajrheading1 |
| Issue #860 - Remove use of std::unary_function and std::binary_function |
| which is deprecated in C++11. |
| |
| 2016-12-30: olly |
| [PHP7] Register internal 'swig_runtime_data_type_pointer' constant |
| as "CONST_PERSISTENT" to avoid segmentation fault on module unload. |
| Fixes #859 reported by Timotheus Pokorra. Thanks also to Javier Torres |
| for a minimal reproducer. |
| |
| Version 3.0.11 (29 Dec 2016) |
| ============================ |
| |
| 2016-12-24: wsfulton |
| [C#] Add %feature("csdirectordelegatemodifiers") to enable customization |
| of the delegate access modifiers generated in director classes. |
| Fixes issue #748. |
| |
| 2016-12-23: wsfulton |
| [Python] Fix builtin "python:slot" feature failing for tp_hash when using |
| hashfunc closure with a "Wrong type for hash function" for Python 2. |
| Issue #843. |
| |
| 2016-12-21: joequamt |
| Changed generation of functions so that only functions |
| that end in _set generate accessor functions rather than |
| looking for "set". |
| Change generation of operators to not have underscores |
| to start in R. Users need to provide custom names for these operator overloads. |
| |
| 2016-12-21: olly |
| Fix isfinite() checks to work with all C++11 compilers. |
| Fixes issues #615, #788 and #849. |
| |
| 2016-12-20: wsfulton |
| %namewarn unnecessarily caused keyword warnings for non-instantiated template classes |
| and duplicate warnings for instantiated template classes when keywords were used. |
| Issue #845. |
| |
| 2016-12-18: ezralanglois |
| [Python, Ruby, Octave] Memory leak fix on error in std::pair wrappers. |
| Issue #851. |
| |
| 2016-12-18: wsfulton |
| Zero initialize arrays when using %array_class and %array_functions. |
| |
| 2016-12-18: t-ikegami |
| [Python] Fix #446 |
| Python %array_class of carrays.i failed with -builtin option. |
| |
| 2016-12-16: briancaine |
| [Guile] Patch #744 Added support for Guile's native pointer functionality |
| |
| 2016-12-01: wsfulton |
| [Python] Issue #769. |
| Add optional moduleimport attribute to %module so that the |
| default module import code can be overridden. See the "Searching for the wrapper module" |
| documentation in Python.html. Example: |
| |
| %module(moduleimport="import _foo") foo |
| |
| $module also expands to the low-level C/C++ module name, so the following is the |
| same as above |
| |
| %module(moduleimport="import $module") foo |
| |
| 2016-11-30: olly |
| [PHP] Add support for PHP7. PHP5's C extension API has changed |
| substantially so you need to use -php7 to specify you want PHP7 |
| compatible wrappers. The default extension for generated wrappers |
| is now .cxx (to match SWIG's default for every other language - to |
| generate foo_wrap.cpp you can run SWIG with -cppext cpp). Fixes |
| issue #571. |
| |
| As part of this change, the language subdirectory for PHP5 has |
| changed from "php" to "php5" - if you are making use of the search |
| path feature where the language subdirectory of each directory |
| is also searched, you'll need to update your bindings. A simple |
| fix which works for older and newer SWIG is to add a symlink: |
| ln -s php php5 |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2016-11-30: olly |
| [PHP] Only emit one copy of each distinct arginfo. Previously we |
| emitted a separate one for every wrapped function, but typically |
| many functions have the same number of parameters and combinations |
| of parameters passed by reference or not. |
| |
| This change significantly reduces both the size of the generated |
| wrapper, and of the compiled PHP extension module (e.g. by ~6% for |
| the stripped extension module for Xapian's PHP7 bindings). |
| |
| 2016-11-28: wsfulton |
| Fix %rename override of wildcard %rename for templates. For example: |
| |
| %rename(GlobalIntOperator) *::operator bool; // wildcard %rename |
| |
| %rename(XIntOperator) X::operator bool; // fix now overrides first %rename above |
| OR |
| %rename(XIntOperator) X<int>::operator bool; // fix now overrides first %rename above |
| |
| template<typename T> struct X { |
| operator bool(); |
| ... |
| }; |
| %template(Xint) X<int>; |
| |
| This also fixes %rename override of global %rename for templates. For example: |
| |
| // Global rename to make all functions start with a lower case letter |
| %rename("%(firstlowercase)s", %$isfunction ) ""; |
| %rename(woohoo) W::Woo; // fix now overrides above %rename |
| |
| template<typename T> struct W { |
| W Woo(); |
| ... |
| }; |
| %template(Wint) W<int>; |
| |
| The above also introduces a possibly unexpected change. Many of the STL containers |
| provided by SWIG use %rename to rename some methods, eg in std::vector, push_back |
| is renamed to add in Java. Previously this intended rename did not happen when using |
| using global %rename rules and the method would remain as push_back, but is now |
| renamed to add. Some more info in issue #856. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2016-11-26: m7thon |
| [Python] Issue #709 - improved wrapping of division operators |
| 'from __future__ import division' now works in Python 2 whether or not the |
| -py3 flag is used. |
| |
| 2016-11-12: joequant |
| [R] Issue #697 - fix comma issue with overload methods |
| |
| 2016-11-12: joequant |
| [R] Issue #555 - R runtime needs stdio.h |
| |
| 2016-11-02: wsfulton |
| [Python] Issue #816 - fix compilation error when using -extranative and -builtin. |
| |
| 2016-11-02: liorgold |
| Patch #741 - Add support for C++11 alias templates, see updated CPlusPlus11.html |
| documentation. |
| |
| 2016-10-30: myd7349 |
| [C#] Patch #740 Add std_array.i for C# for wrapping std::array. |
| |
| Patch also enhances std::vector<std::wstring> C# wrappers with additional functions |
| (Contains, IndexOf, LastIndexOf and Remove). |
| |
| 2016-10-30: tobilau |
| [Java] Fix wrappers for wstring parameters in director methods to cleanup local |
| ref after director callback has finished. |
| |
| 2016-10-23: wsfulton |
| [C#] Add missing csdirectorin VOID_INT_PTR and csdirectorout VOID_INT_PTR typemaps. |
| |
| 2016-10-23: jiulongw |
| Patch #781 - Fix wrapping of C compound expressions containing char constants |
| in quotes such as: |
| |
| #define H_SUPPRESS_SCALING_MAGIC (('s'<<24) | ('u'<<16) | ('p'<<8) | 'p') |
| |
| enum DifferentTypes { |
| typecharcompound='A'+1, |
| typecharcompound2='B' << 2 |
| }; |
| |
| 2016-10-13: wsfulton |
| [Python] Issue #808 - fix Python pickling and metaclass for builtin wrappers. |
| |
| The metaclass (SwigPyObjectType) for SWIG objects was not defined in |
| a way that let importlib successfully import the Python wrappers. |
| The pickle module previously failed to pickle objects because it couldn't |
| determine what module the SWIG wrapped objects were in. |
| |
| 2016-09-29: wsfulton |
| [Allegrocl, CFFI, GO, Javascript, Ocaml, R, Scilab] |
| Add missing support for the "ret" typemap in a few target languages. |
| The documentation also now has info on the "ret" typemap. |
| |
| 2016-09-27: ahmed-usman |
| [xml] Handle template parameters correctly. |
| |
| 2016-09-27: dontpanic92 |
| [Go] Fix argument names in inherited functions taking more than 8 |
| parameters. Fixes #795. |
| |
| 2016-09-26: smarchetto |
| [Scilab] mlists that map pointers can be given a custom type name. |
| |
| 2016-09-25: wsfulton |
| Patch #793 from q-p to expand exception handling to include std::bad_cast |
| in std_except.i. |
| |
| 2016-09-24: olly |
| [PHP] Fix code generated for feature("director:except") - |
| previously the return value of call_user_function() was ignored and |
| we checked an uninitialised value instead. Fixes #627. Based on |
| patch from Sergey Seroshtan. |
| |
| 2016-09-22: wsfulton |
| [Python] More flexible python builtin slots for overloaded C++ function. |
| |
| The closure names used for builtin slots are mangled with their functype so |
| that overloaded C++ method names can be used for multiple slots. |
| For example: |
| |
| %feature("python:slot", "mp_subscript", functype="binaryfunc") SimpleArray::__getitem__; |
| %feature("python:slot", "sq_item", functype="ssizeargfunc") SimpleArray::__getitem__(Py_ssize_t n); |
| |
| will generate closures: |
| |
| SWIGPY_SSIZEARGFUNC_CLOSURE(_wrap_SimpleArray___getitem__) /* defines _wrap_SimpleArray___getitem___ssizeargfunc_closure */ |
| SWIGPY_BINARYFUNC_CLOSURE(_wrap_SimpleArray___getitem__) /* defines _wrap_SimpleArray___getitem___binaryfunc_closure */ |
| |
| Previously only one name was defined: _wrap_SimpleArray___getitem___closure. |
| Hence the overloaded __getitem__ method can be used to support both mp_subscript and sq_item slots. |
| |
| 2016-09-17: wsfulton |
| [Python] Fix iterators for containers of NULL pointers (or Python None) when using |
| -builtin. Previously iteration would stop at the first element that was NULL. |
| |
| 2016-09-16: olly |
| [Javascript] Fix SWIG_exception() macro to return from the current |
| function. Fixes #789, reported by Julien Dutriaux. |
| |
| 2016-09-16: olly |
| [PHP] Fix SWIG_exception() macro to return from the current function. |
| Fixes #240, reported by Sergey Seroshtan. |
| |
| 2016-09-12: xypron |
| [C#] Patch #786 Keyword rename to be CLS compliant by adding an underscore |
| suffix instead of an underscore prefix to the C symbol name. Please use an explicit |
| %rename to rename the symbol with a _ prefix if you want the old symbol name. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2016-09-09: olly |
| [Python] Fix import handling for Python 2.6 to work in a frozen |
| application. Fixes #145, reported by Thomas Kluyver. |
| |
| 2016-09-02: smarchetto |
| [Scilab] Pointers are mapped to mlist instead of tlist |
| (mlist better for scilab overloading) |
| |
| 2016-09-02: olly |
| [PHP] Fix "out" typemap for member function pointers and "in" |
| typemap for char INPUT[ANY]. |
| |
| 2016-09-01: wsfulton |
| [Python] More efficient Python slicing. |
| Call reserve for container types that support it to avoid repeated |
| memory reallocations for new slices or slices that grow in size. |
| |
| 2016-09-01: wsfulton |
| [Python] #771 - Make builtin types hashable by default. |
| Default hash is the underlying C/C++ pointer. This matches up with testing for |
| equivalence (Py_EQ in SwigPyObject_richcompare) which compares the pointers. |
| |
| 2016-08-22: wsfulton |
| [Python] The following builtin slots can be customized like other slots via the |
| "python:<x>" and "python:slot" features where <x> is the appropriate slot name: |
| tp_allocs |
| tp_bases |
| tp_basicsize |
| tp_cache |
| tp_del |
| tp_dealloc |
| tp_flags |
| tp_frees |
| tp_getset |
| tp_is_gc |
| tp_maxalloc |
| tp_methods |
| tp_mro |
| tp_new |
| tp_next |
| tp_prev |
| tp_richcompare |
| tp_subclasses |
| tp_weaklist |
| was_sq_ass_slice |
| was_sq_slice |
| |
| A few documentation improvements for slot customization. |
| |
| 2016-08-09: joequant |
| [R] Patch #765 Fix extern "C" header includes for C++ code. |
| |
| 2016-08-05: olly |
| [xml] Fix how the output filename is built to avoid problems when |
| it contains the embedded strings ".c", ".cpp" or ".cxx". |
| Fixes #540 reported by djack42. |
| |
| 2016-07-01: wsfulton |
| Fix corner case of wrapping std::vector of T pointers where a pointer to a pointer of T |
| also exists in the wrapped code. SF Bug 2359417 (967). |
| |
| 2016-06-26: wkalinin |
| [Java, C#] Patch #681 Fix seg fault when ignoring nested classes. |
| |
| 2016-06-25: mromberg |
| [Python] #711 Fix -castmode and conversion of signed and unsigned integer types. |
| See 2015-12-23 CHANGES entry for details of these improvements when they were |
| implemented for the default options (ie not using -castmode). |
| |
| 2016-06-25: ahnolds |
| Patch #730 - Fix %implicitconv for overloaded functions when using |
| -castmode or -fastdispatch options. |
| |
| The result is that in all overload cases where there are multiple possibilities |
| with the same number of arguments, the dispatch function will first check for |
| exact (aka non implicit) matches, and then subsequently check for implicit |
| casting matches. This was already happening in the normal dispatch situation, |
| and in the -fastdispatch case two passes through the candidates were happening, |
| just with SWIG_POINTER_IMPLICIT_CONV always set. After this patch, it is not set |
| on the first pass, and then set on the second pass. |
| |
| 2016-06-25: liorgold |
| Patch #727 - Add support for C++11 type aliasing. |
| |
| Version 3.0.10 (12 Jun 2016) |
| ============================ |
| |
| 2016-06-06: mromberg |
| [Python] Patch #698. Add support for -relativeimport for python 2.7, so -py3 is no |
| longer also required for relative import support. |
| |
| 2016-06-05: mromberg |
| [Python] Patch #694 - Fix package import regressions introduced in swig-3.0.9. |
| |
| 1) The code in 3.0.9 did not fall back to 'import _foo' if 'import bar._foo' failed |
| (assuming bar.foo was the main module). Every place _foo is imported now first tries |
| it from the package where foo was found and if that fails tries _foo as a global module. |
| |
| 2) The separate block of Python code that injected code to pull in the attributes |
| from _foo when -builtin is used made use of the -py3 switch to either do |
| 'from ._foo import *' or "from _foo import *". This block of code no longer does this |
| and instead checks the Python version at runtime to switch between the two syntaxes. |
| |
| In summary, swig-3.0.10 has been modified to ease the creation of wrapper modules |
| that can be fully made part of a Python package. SWIG no longer |
| assumes the dynamically linked C module is a global module. |
| The dynamic module can now be placed into either the same package as the pure Python |
| module or as a global module. Both locations are used by the Python wrapper to |
| locate the C module. |
| |
| However, this could cause a backwards incompatibility with some code |
| that was relying on the ability of "from package import _module" to |
| pull attributes out of the package directly. If your code populates a |
| module (which is also a package) with attributes that are SWIG |
| generated modules which were not loaded in a conventional way, |
| swig-3.0.8 and earlier may have worked due to 'from package import |
| _module' bypassing a real import and pulling your module in as an |
| attribute. This will no longer work. Since this is not a common (or |
| even recommended) practice, most folk should not be affected. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2016-05-31: wsfulton |
| Fix #690 - Smart pointer to %ignored class doesn't expose inherited methods. |
| Regression introduced in swig-3.0.9. |
| |
| Version 3.0.9 (29 May 2016) |
| =========================== |
| |
| 2016-05-24: mromberg |
| [Python] Patch #612 - Add support for Python's implicit namespace packages. |
| |
| 2016-05-23: wsfulton |
| [Ruby] Fix #602 - Error handling regression of opaque pointers introduced |
| in swig-3.0.8 when C functions explicitly reset a pointer using 'DATA_PTR(self) = 0'. |
| An ObjectPreviouslyDeleted error was incorrectly thrown when the pointer was used |
| as a parameter. |
| |
| 2016-05-17: tamuratak |
| [Ruby] Patch #651 - Correct overloaded function error message when function is |
| using %newobject. |
| |
| 2016-05-17: aurelj |
| [Ruby] Patch #582 - add support for docstring option in %module() |
| |
| 2016-05-14: wsfulton |
| Fix #434 - Passing classes by value as parameters in director methods did not create |
| a copy of the argument leading to invalid memory accesses if the object was used |
| after the upcall into the target language. Passing arguments by value shouldn't give |
| rise to these sorts of memory problems and so the objects are now copied and ownership |
| of their lifetime is controlled by the target language. |
| |
| 2016-05-07: wsfulton |
| Fix #611. Fix assertion handling defaultargs when using %extend for a template |
| class and the extended methods contain default arguments. |
| |
| 2016-05-05: ejulian |
| [Python] Patch #617. Fix operator/ wrappers. |
| |
| 2016-05-02: wsfulton |
| Fix #669. Don't issue warning about ignoring base classes when the derived class is |
| itself ignored. |
| |
| 2016-04-18: ianlancetaylor |
| [Go] Fix use of goout typemap when calling base method by |
| forcing the "type" attribute to the value we need. |
| |
| 2016-04-17: ianlancetaylor |
| [Go] Fixes for Go 1.6: avoid returning Go pointers from |
| directors that return string values; add a trailing 0 byte |
| when treating Go string as C char*. |
| |
| 2016-04-06: smarchetto |
| [Scilab] #552 Make Scilab runtime keep track of pointer types |
| Instead of a Scilab pointer which has no type, SWIG Scilab maps a |
| pointer to a structure tlist containing the pointer adress and its type. |
| |
| 2016-04-02: ahnolds |
| [Python] Apply #598. Fix misleading error message when attempting to read a non-existent |
| attribute. The previous cryptic error message: |
| AttributeError: type object 'object' has no attribute '__getattr__' |
| is now replaced with one mentioning the attribute name, eg: |
| AttributeError: 'Foo' object has no attribute 'bar' |
| |
| 2016-04-02: derkuci |
| [Python] Patch #610 to fix #607. |
| Fix single arguments when using python -builtin -O with %feature("compactdefaultargs") |
| |
| 2016-03-31: wsfulton |
| Fixes #594. Fix assertion for some languages when wrapping a C++11 enum class that |
| is private in a class. |
| |
| Also don't wrap private enums for a few languages that attempted to do so. |
| |
| 2016-03-31: wsfulton |
| [Java] unsigned long long marshalling improvements when a negative number |
| is passed from Java to C. A cast to signed long long in the C layer will now |
| result in the expected value. No change for positive numbers passed to C. |
| Fixes #623. |
| |
| 2016-03-22: alexwarg |
| [Lua] #398 Fix lua __getitem + inheritance |
| The new handling of classes in Lua (not merging methods into the derived classes) |
| breaks for classes that provide a __getitem function. The __getitem function |
| prevents method calls to any method defined in a base class. This fix calls |
| __getitem only if the member is not found using recursive lookup. |
| |
| 2016-03-18: ptomulik |
| [Python] #563 Stop generating unnecessary _swigconstant helpers. |
| |
| 2016-03-16: richardbeare |
| [R] #636 Add extra std::vector numeric types |
| |
| 2016-03-14: wsfulton |
| [Java] Add std_array.i for C++11 std::array support. |
| |
| 2016-03-12: wsfulton |
| [Java, C#, D] Fix static const char member variables wrappers with %javaconst(1) |
| %csconst(1) or %dmanifestconst. |
| This fixes the case when an integer is used as the initializer, such as: |
| |
| struct W { static const char w = 100; }; |
| |
| Fix generated code parsing enum values using char escape sequences |
| when these values appear in the Java code (usually when using %javaconst(1)) |
| such as: |
| |
| enum X { x1 = '\n', x2 = '\1' }; |
| |
| Similarly for static const member char variables such as: |
| |
| struct Y { static const char y = '\n'; } |
| |
| Likewise for D and %dmanifestconstant. For C# and %csconst(1), char |
| values in C# are now hex escaped as C# doesn't support C octal escaping. |
| |
| 2016-03-11: wsfulton |
| [Java C#] Add support for treating C++ base classes as Java interfaces |
| instead of Java proxy classes. This enable some sort of support for |
| multiple inheritance. The implementation is in swiginterface.i and |
| provides additional macros (see Java.html for full documentation): |
| |
| %interface(CTYPE) |
| %interface_impl(CTYPE) |
| %interface_custom("PROXY", "INTERFACE", CTYPE) |
| |
| 2016-03-01: wsfulton |
| Add rstrip encoder for use in %rename. This is like the strip encoder but |
| strips the symbol's suffix instead of the prefix. The example below |
| will rename SomeThingCls to SomeThing and AnotherThingCls to AnotherThing: |
| |
| %rename("%(rstrip:[Cls])s") ""; |
| |
| class SomeThingCls {}; |
| struct AnotherThingCls {}; |
| |
| 2016-03-01: olly |
| Fix isfinite() check to work with GCC6. Fixes |
| issue #615 reported by jplesnik. |
| |
| 2016-02-17: olly |
| [Python] Add missing keywords 'as' and 'with' to pythonkw.swg. |
| |
| 2016-02-07: kwwette |
| [Octave] recognise various unary functions |
| * Use __float__() for numeric conversions, e.g. when calling double() |
| * Map various unary functions, e.g. abs() to __abs__(), see full list |
| in section 32.3.10 of manual; only available in Octave 3.8.0 or later |
| |
| 2016-02-07: kwwette |
| [Octave] export function swig_octave_prereq() for testing Octave version |
| |
| 2016-02-06: pjohangustavsson |
| [C#] Fix duplicate symbol problems when linking the source generated |
| from multiple SWIG modules into one shared library for the -namespace |
| option. The namespace is now mangled into the global PInvoke function |
| names. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2016-01-27: ahnolds |
| [Python] Added support for differentiating between Python Bytes |
| and Unicode objects using by defining SWIG_PYTHON_STRICT_BYTE_CHAR |
| and SWIG_PYTHON_STRICT_UNICODE_WCHAR. |
| |
| 2016-01-27: steeve |
| [Go] Ensure structs are properly packed between gc and GCC/clang. |
| |
| 2016-01-25: ahnolds |
| [Python] Support the full Python test suite in -classic mode |
| * Convert long/unsigned long/long long/unsigned long long to PyInt |
| rather than PyLong when possible. Certain python functions like |
| len() require a PyInt when operating on old-style classes. |
| * Add support for static methods in classic mode, including support |
| for pythonappend, pythonprepend, and docstrings. |
| * Removing the use of __swig_getmethods__ for static member methods |
| since they will always be found by the standard argument lookup |
| * Fix a bug where the wrong type of exception was caught when |
| checking for new-style class support |
| |
| 2016-01-23: ahnolds |
| [Go] Enable support for the Go test-suite on OSX: |
| * The linker on OSX requires that all symbols (even weak symbols) |
| are defined at link time. Because the function _cgo_topofstack is |
| only defined starting in Go version 1.4, we explicitly mark it as |
| undefined for older versions of Go on OSX. |
| * Avoid writing empty swigargs structs, since empty structs are not |
| allowed in extern "C" blocks. |
| |
| 2016-01-12: olly |
| [Javascript] Look for "nodejs" as well as "node", as it's packaged |
| as the former on Debian. |
| |
| 2016-01-12: olly |
| [Javascript] For v8 >= 4.3.0, use V8_MAJOR_VERSION. |
| Fixes issue 561. |
| |
| 2016-01-10: ahnolds |
| Improved size_t and ptrdiff_t typemaps to support large values |
| on platforms where sizeof(size_t) > sizeof(unsigned long) and |
| sizeof(ptrdiff_t) > sizeof(long). |
| |
| Version 3.0.8 (31 Dec 2015) |
| =========================== |
| |
| 2015-12-30: wsfulton |
| The pdf documentation is now generated by wkhtmltopdf and has colour |
| for the code snippets just like the html documentation! |
| |
| 2015-12-23: ahnolds |
| [Python] Fixes for conversion of signed and unsigned integer types: |
| |
| No longer check for PyInt objects in Python3. Because PyInt_Check |
| and friends are #defined to the corresponding PyLong methods, this |
| had caused errors in Python3 where values greater than what could be |
| stored in a long were incorrectly interpreted as the value -1 with |
| the Python error indicator set to OverflowError. This applies to |
| both the conversions PyLong->long and PyLong->double. |
| |
| Conversion from PyLong to long, unsigned long, long long, and |
| unsigned long long now raise OverflowError instead of TypeError in |
| both Python2 and Python3 for PyLong values outside the range |
| expressible by the corresponding C type. This matches the existing |
| behavior for other integral types (signed and unsigned ints, shorts, |
| and chars), as well as the conversion for PyInt to all numeric |
| types. This also indirectly applies to the size_t and ptrdiff_t |
| types, which depend on the conversions for unsigned long and long. |
| |
| 2015-12-19: wsfulton |
| [Python] Python 2 Unicode UTF-8 strings can be used as inputs to char * or |
| std::string types if the generated C/C++ code has SWIG_PYTHON_2_UNICODE defined. |
| |
| 2015-12-17: wsfulton |
| Issues #286, #128 |
| Remove ccache-swig.1 man page - please use the CCache.html docs instead. |
| The yodl2man and yodl2html tools are no longer used and so SWIG no |
| longer has a dependency on these packages which were required when |
| building from git. |
| |
| 2015-12-16: zturner/coleb |
| [Python] Fix Python3.5 interpreter assertions when objects are being |
| deleted due to an existing exception. Most notably in generators |
| which terminate using a StopIteration exception. Fixes #559 #560 #573. |
| If a further exception is raised during an object destruction, |
| PyErr_WriteUnraisable is used on this second exception and the |
| original exception bubbles through. |
| |
| 2015-12-14: ahnolds/wsfulton |
| [Python] Add in missing initializers for tp_finalize, |
| nb_matrix_multiply, nb_inplace_matrix_multiply, ht_qualname |
| ht_cached_keys and tp_prev. |
| |
| 2015-12-12: wsfulton |
| Fix STL wrappers to not generate <: digraphs. |
| For example std::vector<::X::Y> was sometimes generated, now |
| corrected to std::vector< ::X::Y >. |
| |
| 2015-11-25: wsfulton |
| [Ruby] STL ranges and slices fixes. |
| |
| Ruby STL container setting slices fixes: |
| |
| Setting an STL container wrapper slice better matches the way Ruby |
| arrays work. The behaviour is now the same as Ruby arrays. The only |
| exception is the default value used when expanding a container |
| cannot be nil as this is not a valid type/value for C++ container |
| elements. |
| |
| Obtaining a Ruby STL container ranges and slices fixes: |
| |
| Access via ranges and slices now behave identically to Ruby arrays. |
| The fixes are mostly for out of range indices and lengths. |
| - Zero length slice requests return an empty container instead of nil. |
| - Slices which request a length greater than the size of the container |
| no longer chop off the last element. |
| - Ranges which used to return nil now return an empty array when the |
| the start element is a valid index. |
| |
| Ruby STL container negative indexing support improved. |
| |
| Using negative indexes to set values works the same as Ruby arrays, eg |
| |
| %template(IntVector) std::vector<int>; |
| |
| iv = IntVector.new([1,2,3,4]) |
| iv[-4] = 9 # => [1,2,3,9] |
| iv[-5] = 9 # => IndexError |
| |
| 2015-11-21: wsfulton |
| [Ruby, Python] Add std::array container wrappers. |
| |
| These work much like any of the other STL containers except Python/Ruby slicing |
| is somewhat limited because the array is a fixed size. Only slices of |
| the full size are supported. |
| |
| 2015-10-10: wsfulton |
| [Python] #539 - Support Python 3.5 and -builtin. PyAsyncMethods is a new |
| member in PyHeapTypeObject. |
| |
| 2015-10-06: ianlancetaylor |
| [Go] Don't emit a constructor function for a director |
| class with an abstract method, since the function will |
| always panic. |
| |
| 2015-10-01: wsfulton |
| Fix %shared_ptr support for private and protected inheritance. |
| - Remove unnecessary Warning 520: Derived class 'Derived' of 'Base' |
| is not similarly marked as a smart pointer |
| - Do not generate code that attempts to cast up the inheritance chain in the |
| type system runtime in such cases as it doesn't compile and can't be used. |
| Remove unnecessary warning 520 for %shared_ptr when the base class is ignored. |
| |
| 2015-10-01: vkalinin |
| Fix #508: Fix segfault parsing anonymous typedef nested classes. |
| |
| 2015-09-26: wsfulton |
| [Ruby] Add shared_ptr support |
| |
| 2015-09-13: kkaempf |
| [Ruby] Resolve tracking bug - issue #225. |
| The bug is that the tracking code uses a ruby hash and thus may |
| allocate objects (Bignum) while running the GC. This was tolerated in |
| 1.8 but is invalid (raises an exception) in 1.9. |
| The patch uses a C hash (also used by ruby) instead. |
| |
| 2015-09-09: lyze |
| [CFFI] Extend the "export" feature in the CFFI module to support |
| exporting to a specified package. |
| |
| 2015-09-04: olly |
| [Python] Fix docstrings for %callback functions. |
| |
| 2015-09-03: demi-rluddy |
| [Go] Removed golang stringing for signed/unsigned char |
| |
| Changed default handling of signed char* and unsigned char* to be |
| opaque pointers rather than strings, similarly to how other |
| languages work. |
| |
| Any existing code relying on treating signed char* or unsigned |
| char* as a string can restore the old behavior with typemaps.i by |
| using %apply to copy the [unchanged] char* behavior. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2015-08-07: talby |
| [Perl] tidy -Wtautological-constant-out-of-range-compare warnings when building generated code under clang |
| |
| 2015-08-07: xantares |
| [Python] pep257 & numpydoc conforming docstrings: |
| - Mono-line module docsstring |
| - Rewrite autodoc parameters section in numpydoc style: |
| https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt |
| - One line summary should end with "." |
| - Adds a blank line after class docstring |
| |
| 2015-08-05: vadz |
| [Java] Make (char* STRING, size_t LENGTH) typemaps usable for |
| strings of other types, e.g. "unsigned char*". |
| |
| Version 3.0.7 (3 Aug 2015) |
| ========================== |
| |
| 2015-08-02: wsfulton |
| [Java] Fix potential security exploit in generated Java classes. |
| The swigCPtr and swigCMemOwn member variables in the generated Java |
| classes are now declared 'transient' by default. Further details of the exploit |
| in Android is being published in an academic paper as part of USENIX WOOT '15: |
| https://www.usenix.org/conference/woot15/workshop-program/presentation/peles. |
| |
| In the unlikely event that you are relying on these members being serializable, |
| then you will need to override the default javabody and javabody_derived typemaps |
| to generate the old generated code. The relevant typemaps are in the Lib directory |
| in the java.swg, boost_shared_ptr.i and boost_intrusive_ptr.i files. Copy the |
| relevant default typemaps into your interface file and remove the 'transient' keyword. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2015-08-01: vadz |
| Make configure --without-alllang option more useful: it can now be overridden by the following |
| --with-xxx options, allowing to easily enable just one or two languages. |
| |
| 2015-07-30: wsfulton |
| Fix #440 - Initialise all newly created arrays when using %array_functions and %array_class |
| in the carrays.i library - bug is only relevant when using C++. |
| |
| 2015-07-29: wsfulton |
| [Python] Improve indentation warning and error messages for code in the following directives: |
| |
| %pythonprepend |
| %pythonappend |
| %pythoncode |
| %pythonbegin |
| %feature("shadow") |
| |
| Old error example: |
| Error: Line indented less than expected (line 3 of pythoncode) |
| |
| New error example: |
| Error: Line indented less than expected (line 3 of %pythoncode or %insert("python") block) |
| as no line should be indented less than the indentation in line 1 |
| |
| Old warning example: |
| Warning 740: Whitespace prefix doesn't match (line 2 of %pythoncode or %insert("python") block) |
| |
| New warning example: |
| Warning 740: Whitespace indentation is inconsistent compared to earlier lines (line 3 of |
| %pythoncode or %insert("python") block) |
| |
| |
| 2015-07-28: wsfulton |
| [Python] Fix #475. Improve docstring indentation handling. |
| |
| SWIG-3.0.5 and earlier sometimes truncated text provided in the docstring feature. |
| This occurred when the indentation (whitespace) in the docstring was less in the |
| second or later lines when compared to the first line. |
| SWIG-3.0.6 gave a 'Line indented less than expected' error instead of truncating |
| the docstring text. |
| Now the indentation for the 'docstring' feature is smarter and is appropriately |
| adjusted so that no truncation occurs. |
| |
| 2015-07-22: wsfulton |
| Support for special variable expansion in typemap attributes. Example usage expansion |
| in the 'out' attribute (C# specific): |
| |
| %typemap(ctype, out="$*1_ltype") unsigned int& "$*1_ltype" |
| |
| is equivalent to the following as $*1_ltype expands to 'unsigned int': |
| |
| %typemap(ctype, out="unsigned int") unsigned int& "unsigned int" |
| |
| Special variables can be used within special variable macros too. Example usage expansion: |
| |
| %typemap(cstype) unsigned int "uint" |
| %typemap(cstype, out="$typemap(cstype, $*1_ltype)") unsigned int& "$typemap(cstype, $*1_ltype)" |
| |
| Special variables are expanded first and hence the above is equivalent to: |
| |
| %typemap(cstype, out="$typemap(cstype, unsigned int)") unsigned int& "$typemap(cstype, unsigned int)" |
| |
| which then expands to: |
| |
| %typemap(cstype, out="uint") unsigned int& "uint" |
| |
| 2015-07-22: lindleyf |
| Apply patch #439 - support for $typemap() (aka embedded typemaps or special variable |
| macros) in typemap attributes. A simple example where $typemap() is expanded in the |
| 'out' attribute (C# specific): |
| |
| %typemap(cstype) unsigned int "uint" |
| %typemap(cstype, out="$typemap(cstype, unsigned int)") unsigned int& "$typemap(cstype, unsigned int)" |
| |
| is equivalent to: |
| |
| %typemap(cstype, out="uint") unsigned int& "uint" |
| |
| 2015-07-18: m7thon |
| [Python] Docstrings provided via %feature("docstring") are now quoted and added to |
| the tp_doc slot when using python builtin classes (-builtin). When no docstring is |
| provided, the tp_doc slot is set to the fully qualified C/C++ class name. |
| Github issues #445 and #461. |
| |
| 2015-07-17: kwwette |
| [octave] Support Octave version 4.0.0 (thanks to patches from Orion Poplawski). |
| |
| 2015-07-07: wsfulton |
| SWIG no longer generates a wrapper for a class' constructor if that class has |
| any base class with a private destructor. This is because your compiler should |
| not allow a class to be instantiated if a base has a private destructor. Some |
| compilers do, so if you need the old behaviour, use the "notabstract" feature, eg: |
| |
| %feature("notabstract") Derived; |
| class Base { |
| ~Base() {} |
| }; |
| struct Derived : Base {}; |
| |
| Version 3.0.6 (5 Jul 2015) |
| ========================== |
| |
| 2015-07-02: wsfulton |
| Fix syntax error when the template keyword is used in types, eg: |
| |
| std::template vector<int> v; |
| |
| 2015-07-02: ngladitz |
| [Lua] Push characters as unformatted 1-character strings to avoid |
| unprintable characters such as (char)127 being converted to |
| "<\127>" with Lua 5.3 and later. (github PR #452) |
| |
| 2015-06-29: olly |
| [Python] Improve handling of whitespace in %pythoncode. |
| |
| Previously SWIG looked at the indentation of the first line and |
| removed that many characters from each subsequent line, regardless |
| of what those characters were. This was made worse because SWIG's |
| preprocessor removes any whitespace before a '#'. Fixes github |
| issue #379, reported by Joe Orton. |
| |
| 2015-06-12: wsfulton |
| [R] Fix #430 - call to SWIG_createNewRef in copyToC was incorrectly named. |
| |
| 2015-06-11: sghirate |
| [C#] Patch #427 adds in new command line option -outfile to combine all the |
| generated C# code into a single file. |
| |
| 2015-06-09: wsfulton |
| Fix seg fault processing C++11 type aliasing. Issue #424. |
| |
| 2015-05-28: wsfulton |
| [Python] Add new feature "python:cdefaultargs" to control default argument |
| code generation. By default, SWIG attempts to convert C/C++ default argument values |
| into Python values and generates code into the Python layer with these values. |
| Recent versions of SWIG are able to convert more of these values, however, the |
| new behaviour can be circumvented if desired via this new feature, such that |
| the default argument values are obtained from the C layer and not the Python layer. |
| For example: |
| |
| struct CDA { |
| int fff(int a = 1, bool b = false); |
| }; |
| |
| The default code generation in the Python layer is: |
| |
| class CDA(_object): |
| ... |
| def fff(self, a=1, b=False): |
| return _default_args.CDA_fff(self, a, b) |
| |
| Adding the feature: |
| |
| %feature("python:cdefaultargs") CDA::fff; |
| |
| Results in: |
| |
| class CDA(_object): |
| ... |
| def fff(self, *args): |
| return _default_args.CDA_fff(self, *args) |
| |
| Some code generation modes, eg -builtin and -fastproxy, are unaffected by this as |
| the default values are always obtained from the C layer. |
| |
| 2015-05-27: wsfulton |
| [Python] Deal with an integer as the default value of a typedef to bool |
| parameter in the C++ prototype. See #327. Regression from 3.0.0 onwards. |
| |
| 2015-05-19: olly |
| [Python] Fix warning when compiling generated code with MSVC. |
| (Fixes https://sourceforge.net/p/swig/patches/351/ reported by |
| Mateusz Szyma¿ski). |
| |
| 2015-05-14: wsfulton |
| Fix seg fault wrapping shared_ptr of classes with private constructors and destructors. |
| This also fixes the "unref" feature when used on classes with private destructors. |
| |
| 2015-05-10: wsfulton |
| [Java] Fix multi-argument typemaps (char *STRING, size_t LENGTH) |
| so that they can be applied to a wider range of types. Fixes #385. |
| |
| 2015-05-07: olly |
| [Python] Deal with an integer as the default value of a bool |
| parameter in the C++ prototype. Fixes github #327, reported by |
| Greg Allen. |
| |
| 2015-05-07: LindleyF |
| [Java] Allow feature("director") and feature("ref") to be used |
| together. Github PR#403. |
| |
| 2015-05-05: olly |
| Suppress warning 325 "Nested class not currently supported (Foo |
| ignored)" when Foo has already been explicitly ignored with "%ignore". |
| |
| 2015-05-04: wsfulton |
| Add support for friend templates, including operator overloading - fixes #196. Considering |
| the example below, previously the operator gave a syntax error and friendfunc incorrectly |
| warned with: |
| |
| "Warning 503: Can't wrap 'friendfunc<(Type)>' unless renamed to a valid identifier." |
| |
| template <class Type> class MyClass { |
| friend int friendfunc <Type>(double is, MyClass <Type> & x); |
| friend int operator<< <Type>(double un, const MyClass <Type> &x); |
| }; |
| |
| The following also previously incorrectly warned with: |
| |
| "Warning 302: Identifier 'template_friend' redefined (ignored)," |
| |
| template<typename T> T template_friend(T); |
| struct MyTemplate { |
| template<typename T> friend T template_friend(T); |
| }; |
| |
| 2015-05-01: wsfulton |
| Fix handling of conversion operators where the operator is split over multiple |
| lines or has comments within the operator type. Fixes #401. |
| |
| Also fix similar problem with normal operators which gave a syntax error if split over |
| multiple lines or had a comment within the operator declaration. |
| |
| 2015-04-30: olly |
| Ignore unknown preprocessor directives which are inside an inactive |
| conditional (github issue #394, reported by Dan Wilcox). |
| Regression introduced in 3.0.3. |
| |
| 2015-04-27: vadz |
| [Python] Fix "default" typemap used after an argument with "numinputs=0" (#377). |
| |
| 2015-04-24: wsfulton |
| [Python] Fix #256. Code generated with '-builtin -modernargs' segfaults for any |
| method taking zero arguments. |
| |
| Also fixes: "SystemError: error return without exception set" during error checking |
| when using just -builtin and the incorrect number of arguments is passed to a class |
| method expecting zero arguments. |
| |
| 2015-04-23: wsfulton |
| [Java] Bug #386 - Memory leak fix in (char *STRING, size_t LENGTH) typemaps. |
| |
| 2015-04-23: vadz |
| [Python] Make "default" typemap work again (#330, #377). |
| |
| 2015-04-23: vadz |
| [Python] Fix the use of default values for the pointer types (#365, #376). |
| |
| 2015-04-23: wsfulton |
| Fix 'make check-ccache' which is part of 'make check' when one of the CCACHE_ |
| environment variables, for example CCACHE_DISABLE, is set. |
| |
| 2015-04-14: wsfulton |
| Clearer warning message for badly constructed typecheck typemaps. For example, was: |
| |
| example.i:3: Warning 467: Overloaded foo(int) not supported (no type checking |
| rule for 'int'). |
| |
| Now: |
| |
| example.i:3: Warning 467: Overloaded foo(int) not supported (incomplete type checking |
| rule - no precedence level in typecheck typemap for 'int'). |
| |
| 2015-04-11: wsfulton |
| [Java] Fix #353 - Linker multiple definition of 'ExceptionMatches' when |
| using directors and multiple modules. |
| |
| 2015-04-11: wsfulton |
| Merge #320 - Make __dict__ accessible for Python builtin classes. |
| |
| 2015-04-07: wsfulton |
| Fix #375 - parsing of extern "C" and typedef for example: |
| extern "C" typedef void (*Hook2_t)(int, const char *); |
| extern "C" typedef int Integer; |
| |
| 2015-03-12: olly |
| -DSWIG_DIRECTOR_STATIC is now supported for all languages with |
| director support, not only Python and PHP. |
| |
| 2015-03-02: ianlancetaylor |
| [Go] Add -cgo option, required for Go versions 1.5 and |
| later. |
| |
| 2015-02-26: olly |
| Fix segmentation fault when top==NULL, introduced by nested class |
| handling (reported in issue#346 by Pawe¿ Tomulik). |
| |
| 2015-02-09: wsfulton |
| [Guile] Fix generated code for static const char member variables when |
| defined and declared inline. |
| |
| 2015-02-09: mishas |
| [Go] Fix %import of files in sub directories. |
| |
| 2015-02-05: ianlancetaylor |
| [Go] Ignore Go specific type maps (goin, goout, etc.) if they are empty. |
| |
| 2015-02-05: ianlancetaylor |
| [Go] Generated Go code no longer calls _swig_goallocate or |
| _swig_makegostring, as they will no longer work as of Go 1.5. |
| |
| Version 3.0.5 (31 Jan 2015) |
| =========================== |
| |
| 2015-01-30: wsfulton |
| [Python] Fix Python -classic and property setting. Setting properties on classic classes |
| was broken in swig-3.0.3 by attempting to use __setattr__. This regression is fixed now |
| by using __dict__ again when using -classic. |
| Fixes patch #232. |
| |
| 2015-01-27: smarchetto |
| [Scilab] Support for the Scilab language has been added |
| |
| 2015-01-23: olly |
| [PHP] When wrapping a returned resource as an object, check if all |
| cases wrap it in the same class, and if so eliminate the pointless |
| switch statement wrapper we previously generated. |
| |
| 2015-01-22: wsfulton |
| [Octave] Merge patch #297 for SF bug #1277 - Octave shared_ptr support |
| |
| 2015-01-15: wsfulton |
| [Python] Merge patch #250 - Fixes for using %constant and objects (non-primitive types) |
| |
| 2015-01-15: wsfulton |
| [C# Go] Merge patch #308 and fix #307 - C++11 strongly typed enum support |
| in directors |
| |
| 2015-01-15: wsfulton |
| [Python] Second fix for #294 #296 - Regression introduced in SWIG-3.0.3 when |
| wrapping functions with default arguments, this time when using kwargs. |
| |
| Version 3.0.4 (14 Jan 2015) |
| =========================== |
| |
| 2015-01-12: olly |
| [PHP] Fix segfault in director upcall check when using PHP built with |
| ZTS enabled. Fixes #155, reported by Pierre Labastie. |
| |
| 2015-01-12: vadz |
| [Python] Fix #294 #296 - Regression introduced in SWIG-3.0.3 when |
| wrapping functions with default arguments. Invalid or missing default |
| arguments were sometimes being generated into the python layer. |
| |
| 2015-01-08: olly |
| Allow C++11 "explicit constexpr". Fixes github issue #284 reported |
| by Pawel Tomulik. Also handle "constexpr explicit" and "constexpr |
| static". |
| |
| 2015-01-08: olly |
| When reporting an error for a construct which hasn't been |
| terminated when the end of the file is reached, report it at the |
| start line rather than "EOF" as then tools like editors and IDEs |
| will take you to a generally more useful place for fixing the |
| problem. |
| |
| 2015-01-08: olly |
| Improve error messages for a few cases which previously gave the |
| one of the cryptic catch-all errors "Syntax error in input". |
| |
| 2015-01-08: olly |
| Provide -cppext as a general command line option for setting the |
| extension used for generated C++ files (previously it was specific |
| to the PHP backend). Deprecate the equivalent -suffix option |
| provided by the Ocaml backend, but continue to support that for |
| now. |
| |
| Version 3.0.3 (30 Dec 2014) |
| =========================== |
| |
| 2014-12-27: wsfulton |
| Fix #280 - abort using all default template parameters within other template |
| parameters. |
| |
| 2014-12-27: talby |
| [Perl] Issue #282 perl5 archlib vs archlibexp |
| [Perl] tidy "warning: duplicate 'extern' declaration specifier" when building generated code |
| under clang |
| |
| 2014-12-18: wsfulton |
| Add support for %constant and structs/classes - issue #272 |
| |
| 2014-12-09: wsfulton |
| Fix #245 - regression (since swig-3.0.0) in templated constructors. |
| Templated constructors could not be instantiated - they were incorrectly ignored with a warning 504: |
| "Function: xyz must have a return type. Ignored." |
| |
| 2014-12-07: wsfulton |
| Add support for C++11 strongly typed enumerations. |
| |
| 2014-11-21: wsfulton |
| [Java C#] Fix multiply defined error when using %rename of enum items when using the "simple enum" |
| wrappers. |
| |
| 2014-10-28: vadz |
| [Python] Patch #201 The generated .py file no longer uses *args for all Python parameters. |
| Instead, the parameters are named using the C++ parameter names. |
| |
| "compactdefaultargs" feature can be enabled to restore the old behaviour. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-10-24: timotheecour |
| [D] Patch #204 Use core.atomic.atomicOp to mutate shared variables |
| |
| 2014-10-21: wsfulton |
| Fix issue #242 - Use of the "kwargs" feature no longer automatically turns on the |
| "compactdefaultargs" feature if the target language does not support kwargs. |
| This change affects all languages except Python and Ruby. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-10-10: diorcety |
| [Python] Patch #232 Fix property access using directors |
| |
| 2014-10-06: wsfulton |
| [Python] Fixes when using -builtin and std::vector/std::list wrappers to allow deletion |
| of single elements, such as 'del vec[0]'. |
| |
| 2014-09-30: oliverb |
| [Javascript] Merge patch #216 by Richie765 - Added support for many versions of v8 javascript. |
| |
| 2014-09-30: oliverb |
| [Javascript] Merge patch #195 by zittix - Fixed JSClassRef declaration not using the static one. |
| |
| 2014-09-30: ianlancetaylor |
| [Go] In configure script, require Go 1.1 or later. |
| |
| 2014-09-30: wsfulton |
| [Python] Patch #207 - Fix No module error with -relativeimport when using single |
| header file import. |
| |
| 2014-09-27: wsfulton |
| Patch #208 - Initialise newly created array when using array_functions in the |
| carrays.i library (C++ usage). |
| |
| 2014-09-27: wsfulton |
| [Ruby] Patch #187 - Fix crash on shutdown of the Ruby interpreter if more than one |
| module was loaded at a time when data is being shared between modules. |
| |
| 2014-09-27: wsfulton |
| [Java] Patch #168 - Fix leak in Java director string handling after the Java |
| upcall when called from a native thread. |
| |
| 2014-09-25: ianlancetaylor |
| [Go] Adjust generated code to work with upcoming Go 1.4 |
| release. |
| |
| 2014-09-23: wsfulton |
| [Python] Add patch from Thomas Maslach to fix crash in wrappers when using -threads in |
| the STL iterators (SwigPyIterator destructor). |
| |
| 2014-09-17: wsfulton |
| [C#] Merge patch #229 from contre - Add bool array types to arrays_csharp.i |
| |
| 2014-09-12: olly |
| [PHP] Add support for specifying any PHP interfaces a wrapped class |
| implements, e.g.: %typemap("phpinterfaces") MyIterator "Iterator"; |
| |
| 2014-09-11: olly |
| [PHP] Fix throwing a PHP exception through C++ from a subclassed |
| director method - PHP NULL gets returned by the subclassed method |
| in this case, so the directorout typemap needs to allow that (at |
| least if an exception is active). |
| |
| 2014-09-09: ianlancetaylor |
| [Go] Add goargout typemap. |
| |
| 2014-09-09: olly |
| [PHP] Fix segmentation faults with directors in PHP >= 5.4, and |
| reenable runme tests for director_basic testcase. Fix from |
| pavel-charvat in issue#164. |
| |
| 2014-09-05: ianlancetaylor |
| [Go] Add imtype, goin, goout, godirectorin, and |
| godirectorout typemaps, to support writing Go code to |
| convert between types. |
| |
| 2014-09-02: olly |
| [Python] Fix regression in indentation of python code produced with |
| -modern, introduced by changes in #188. Reported by fabiencastan |
| in #218. |
| |
| 2014-09-01: olly |
| Issue an error for unknown SWIG preprocessor directives, rather |
| than quietly ignoring them. Reported by jrhelsey in issue#217. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-08-15: talby |
| [Perl] Include guard fix for nested modules from Anthony Heading (SF Patch #350). |
| |
| 2014-08-04: wsfulton |
| [C#] Merge patch #200 from gpetrou - Changed CSharp license header to include auto-generated |
| tag so that StyleCop ignores the files. |
| |
| 2014-08-04: wsfulton |
| [Java] Merge patch #198 from Yuval Kashtan - Support for java.nio.ByteBuffer mapping to |
| unsigned char * in various.i in NIOBUFFER typemaps. |
| |
| 2014-07-14: ianlancetaylor |
| [Go] Change struct definition to use void *, not uint8, so |
| that the type is recorded as possibly containing |
| pointers. This ensures that the 1.3 garbage collector |
| does not collect pointers passed to C++ code. |
| |
| 2014-07-01: wsfulton |
| Fix SF Bug #1375 - Expansion of the $parentclassname special variable incorrectly contains |
| brackets in the expanded name. |
| |
| Version 3.0.2 (4 Jun 2014) |
| ========================== |
| |
| 2014-06-02: v-for-vandal |
| [Lua] Pull request #176: |
| If class has no __eq implemented, then default __eq is generated. |
| Default __eq compares actual pointers stored inside Lua userdata. |
| |
| 2014-06-02: vkalinin |
| Fix #183 - %extend and unnamed nested structs |
| |
| 2014-05-28: kwwette |
| Fix install failure when using an 'out of source' build using the shipped |
| tarball - regression introduced in swig-3.0.1. |
| |
| 2014-05-24: kwwette |
| [Octave] Remove deprecated -global/-noglobal command-line arguments |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| Version 3.0.1 (27 May 2014) |
| =========================== |
| |
| 2014-05-25: hfalcic |
| [Python] Python 3 byte string output: use errors="surrogateescape" |
| if available on the version of Python that's in use. This allows |
| obtaining the original byte string (and potentially trying a fallback |
| encoding) if the bytes can't be decoded as UTF-8. |
| |
| Previously, a UnicodeDecodeError would be raised with no way to treat |
| the data as bytes or try another codec. |
| |
| 2014-05-18: vkalinin |
| Bug #175 - Restore %extend to work for unnamed nested structures by using a C |
| symbol comprising the outer structure name and unnamed variable instance name. |
| |
| 2014-05-15: kwwette |
| Add #166 - 'make check' now works out of source. This required the examples to build |
| out of source. The main languages have been tested - C#, Go, Guile, Java, Javascript, |
| Lua, Octave, Perl, PHP, Python, Ruby and Tcl. |
| |
| 2014-05-01: Oliver Buchtala |
| Javascript support added, see Javascript chapter in the documentation. |
| |
| 2014-05-01: olly |
| [PHP] The generated __isset() method now returns true for read-only properties. |
| |
| 2014-04-24: kwwette |
| [Go] Fix go ./configure parsing of gccgo --version, and |
| goruntime.swg typo in __GNUC_PATCHLEVEL__ (SF Bug #1298) |
| |
| 2014-04-24: kwwette |
| Fix {python|perl5|ruby|tcl}/java examples |
| |
| In Lib/gcj/cni.i, for compatibility with newer gcj versions: |
| |
| - remove JvAllocObject() which gcj no longer defines, from gcj Changelog: |
| 2004-04-16 Bryce McKinlay <mckinlay@redhat.com> |
| * gcj/cni.h (JvAllocObject): Remove these obsolete, |
| undocumented CNI calls. |
| |
| - change JvCreateJavaVM() argument from void* to JvVMInitArgs*, from gcj Changelog: |
| 2005-02-23 Thomas Fitzsimmons <fitzsim@redhat.com> |
| PR libgcj/16923 |
| ... |
| (JvCreateJavaVM): Declare vm_args as JvVMInitArgs* rather than void*. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-04-08: wsfulton |
| SF Bug #1366 - Remove duplicate declarations of strtoimax and strtoumax in inttypes.i |
| |
| 2014-04-08: wsfulton |
| [Java C#] Enums which have been ignored via %ignore and are subsequently |
| used are handled slightly differently. Type wrapper classes are now generated |
| which are effectively a wrapper of an empty enum. Previously in Java uncompilable |
| code was generated and in C# an int was used. |
| |
| 2014-04-04: wsfulton |
| Fix regression in 3.0.0 where legal code following an operator<< definition might |
| give a syntax error. SF Bug #1365. |
| |
| 2014-04-03: olly |
| [PHP] Fix wrapping director constructors with default parameters |
| with a ZTS-enabled build of PHP. |
| |
| 2014-04-02: olly |
| [PHP] Pass the ZTS context we already have to avoid needing to |
| call TSRMLS_FETCH, which is relatively expensive. |
| |
| 2014-04-02: olly |
| [PHP] Pass ZTS context through to t_output_helper() so it works |
| with a ZTS-enabled build of PHP. Reported by Pierre Labastie in |
| github PR#155. |
| |
| 2014-03-28: wsfulton |
| [Java C# D Go] Fixes for C enums used in an API and the definition of the enum |
| has not been parsed. For D, this fixes a segfault in SWIG. The other languages |
| now produce code that compiles, although the definition of the enum is needed |
| in order to use the enum properly from the target language. |
| |
| 2014-03-23: v-for-vandal |
| [Lua] Fix for usage of snprintf in Lua runtime which Visual Studio does not have. |
| |
| Version 3.0.0 (16 Mar 2014) |
| =========================== |
| |
| 2014-03-16: wsfulton |
| C++11 support initially developed as C++0x support by Matevz Jekovec as a Google Summer of Code |
| project has been further extended. The C++11 support is comprehensive, but by no means complete |
| or without limitations. Full details for each new feature in C++11 is covered in the |
| CPlusPlus11.html chapter in the documentation which is included in SWIG and also available |
| online at http://www.swig.org/Doc3.0/CPlusPlus11.html. |
| |
| 2014-03-14: v-for-vandal |
| [Lua] Numerous Lua improvements: |
| 1. %nspace support has been added. Namespaces are mapped to tables in the module, with the same |
| name as the C++ namespace. |
| 2. Inheritance is now handled differently. Each class metatable keeps a list of class bases instead |
| of merging all members of all bases into the derived class. |
| 3. The new metatables result in differences in accessing class members. For example: |
| |
| %module example |
| struct Test { |
| enum { TEST1 = 10, TEST2 = 20 }; |
| static const int ICONST = 12; |
| }; |
| |
| Now this can be used as follows: |
| print(example.Test.TEST1) |
| print(example.Test.ICONST) |
| The old way was: |
| print(example.Test_TEST1) |
| print(example.Test_ICONST) |
| |
| 4. The special class metatable member ".constructor" was removed. Now SWIG generates the proxy |
| function by itself and assigns it directly to the class table "__call" method. |
| 5. eLua should also now support inheritance. |
| 6. 'const' subtable in eLua is considered deprecated. |
| |
| Changes in behaviour: |
| a. You can no longer assign to non-existing class members in classes without a __setitem__ method. |
| It will cause a Lua error. |
| b. You can no longer iterate over a module table and copy everything into the global namespace. |
| Actually, this was never the case, but it is now explicitly prohibited. |
| c. Now changing a base class will immediately affect all derived classes. |
| d. There might be some issues with inheritance. Although the bases iteration scheme is the same |
| as was used for merging base classes into derived one, some unknown issues may arise. |
| |
| The old metatable behaviour can be restored by using the -no-old-metatable-bindings option. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-03-06: wsfulton |
| [Python] Change in default behaviour wrapping C++ bool. Only a Python True or False |
| will now work for C++ bool parameters. This fixes overloading bool with other types. |
| Python 2.3 minimum is now required for wrapping bool. |
| |
| When wrapping: |
| |
| const char* overloaded(bool value) { return "bool"; } |
| const char* overloaded(int value) { return "int"; } |
| |
| Previous behaviour: |
| >>> overloaded(False) |
| 'int' |
| >>> overloaded(True) |
| 'int' |
| >>> overloaded(0) |
| 'int' |
| |
| Now we get the expected behaviour: |
| >>> overloaded(False) |
| 'bool' |
| >>> overloaded(0) |
| 'int' |
| |
| The consequence is when wrapping bool in non-overloaded functions: |
| |
| const char* boolfunction(bool value) { return value ? "true" : "false"; } |
| |
| The previous behaviour was very Pythonic: |
| >>> boolfunction("") |
| 'false' |
| >>> boolfunction("hi") |
| 'true' |
| >>> boolfunction(12.34) |
| 'true' |
| >>> boolfunction(0) |
| 'false' |
| >>> boolfunction(1) |
| 'true' |
| |
| Now the new behaviour more along the lines of C++ due to stricter type checking. The |
| above calls result in an exception and need to be explicitly converted into a bool as |
| follows: |
| >>> boolfunction(0) |
| Traceback (most recent call last): |
| File "<stdin>", line 1, in <module> |
| TypeError: in method 'boolfunction', argument 1 of type 'bool' |
| >>> boolfunction(bool(0)) |
| 'false' |
| |
| The old behaviour can be resurrected by passing the -DSWIG_PYTHON_LEGACY_BOOL command line |
| parameter when executing SWIG. Typemaps can of course be written to customise the behaviour |
| for specific parameters. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-03-06: wsfulton |
| Fix SF Bug #1363 - Problem with method overloading when some methods are added by %extend |
| and others are real methods and using template default parameters with smart pointers. |
| This is noticeable as a regression since 2.0.12 when using the default smart pointer |
| handling for some languages when the smart pointer wraps std::map and other STL containers. |
| |
| 2014-03-02: wsfulton |
| [Python] SF Patch #346 from Jens Krueger. Correct exception thrown attempting to |
| access a non-existent C/C++ global variable on the 'cvar' object. The exception thrown |
| used to be a NameError. However, as this access is via a primary, an AttributeError |
| is more correct and so the exception thrown now is an AttributeError. Reference: |
| http://docs.python.org/2/reference/expressions.html#attribute-references |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-03-01: wsfulton |
| [Python] Patch #143 Fix type shown when using type() to include the module and package |
| name when using -builtin. |
| |
| 2014-03-01: wsfulton |
| [Python] SF patch #347 Fix missing argument count checking with -modern. |
| Fixes regression introduced when builtin changes were introduced in SWIG-2.0.3. |
| |
| 2014-02-21: wsfulton |
| [PHP] Fix warning suppression using %warnfilter for PHP reserved class names. |
| |
| 2014-02-19: olly |
| [Lua] Add keyword warnings for Lua keywords and Basic Functions. |
| |
| 2014-02-19: olly |
| -Wallkw now includes keywords for all languages with keyword |
| warnings (previously Go and R were missing). |
| |
| 2014-02-19: olly |
| [PHP] Update the lists of PHP keywords with new ones from PHP 5.4 |
| and newer (and some missing ones from 5.3). Reserved PHP constants |
| names are now checked against enum values and constants, instead |
| of against function and method names. Built-in PHP function names |
| no longer match methods added by %extend. Functions and methods |
| named '__sleep', '__wakeup', 'not', 'parent', or 'virtual' are no |
| longer needlessly renamed. |
| |
| 2014-02-15: wsfulton |
| Fix the %$ismember %rename predicates to also apply to members added via %extend. |
| |
| Add %$isextendmember for %rename of members added via %extend. This can be used to |
| distinguish between normal class/struct members and %extend members. For example |
| '%$ismember, %$not %$isextendmember' will now identify just class/struct members. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-02-16: hfalcic |
| [Python] Patch #137 - fix crashes/exceptions in exception handling in Python 3.3 |
| |
| 2014-02-15: wsfulton |
| [Java] Add support for the cdata library. |
| |
| 2014-02-08: vkalinin |
| Nested class support added. This primarily allows SWIG to properly parse nested |
| classes and keep the nested class information in the parse tree. Java and C# |
| have utilised this information wrapping the C++ nested classes as Java/C# |
| nested classes. The remaining target languages ignore nested classes as in |
| previous versions. Help is needed by users of these remaining languages to |
| design how C++ nested classes can be best wrapped. Please talk to us on the |
| swig-devel mailing list if you think you can help. |
| |
| Previously, there was limited nested class support. Nested classes were treated |
| as opaque pointers. However, the "nestedworkaround" feature provided a way to |
| wrap a nested class as if it was a global class. This feature no longer exists |
| and is replaced by the new "flatnested" feature. This effectively does the same |
| thing with less manual code to be written. Please see the 'Nested classes' |
| section in the documentation in SWIGPlus.html if you were previously using this |
| feature. |
| |
| SWIG now parses the contents of nested classes where previously it did not. You |
| may find that you will need to make adjustments to your interface file as |
| effectively extra code is being wrapped. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2014-02-06: gjanssens |
| [Guile] Patch #133. Make scm to string conversion work with non-ascii strings. |
| Guile 2 has a completely rewritten string implementation. SWIG made some assumptions |
| that are no longer valid as to the internals of guile's string representation. |
| |
| 2014-01-30: wsfulton |
| [C#] Add new swigtype_inout.i library containing SWIGTYPE *& OUTPUT typemaps. |
| |
| Example usage wrapping: |
| |
| void f(XXX *& x) { x = new XXX(111); } |
| |
| would be: |
| |
| XXX x = null; |
| f(out x); |
| // use x |
| x.Dispose(); // manually clear memory or otherwise leave out and leave it to the garbage collector |
| |
| 2014-01-21: ianlancetaylor |
| [Go] Add %go_import directive. |
| |
| 2014-01-21: ianlancetaylor |
| [Go] Add support for Go 1.3, not yet released. |
| |
| 2014-01-20: wsfulton |
| Director exceptions (Swig::DirectorException) now derive from std::exception |
| and hence provide the what() method. In Python and Ruby, this replaces the now |
| deprecated DirectorException::getMessage() method. |
| |
| 2014-01-14: diorcety |
| Patch #112 - Fix symbol resolution involving scopes that have multiple levels |
| of typedefs - fixes some template resolutions as well as some typemap searches. |
| |
| 2014-01-11: wsfulton |
| Fix and document the naturalvar feature override behaviour - the naturalvar |
| feature attached to a variable name has precedence over the naturalvar |
| feature attached to the variable's type. The overriding was not working |
| when turning the feature off on the variable's name. |
| |
| Fix so that any use of the naturalvar feature will override the global |
| setting. Previously when set globally by -naturalvar or %module(naturalvar=1), |
| use of the naturalvar feature was not always honoured. |
| |
| 2014-01-06: ianlancetaylor |
| [Go] Fix bug that broke using directors from a thread not |
| created by Go. |
| |
| 2013-12-24: ptomulik |
| [Python] SF Bug #1297 |
| |
| Resolve several issues related to python imports. |
| For example, it's now possible to import modules having the same module |
| names, but belonging in different packages. |
| |
| From the user's viewpoint, this patch gives a little bit more control on |
| import statements generated by SWIG. The user may choose to use relative |
| or absolute imports. |
| |
| Some details: |
| - we (still) generate import statements in the form 'import a.b.c' which |
| corresponds to absolute imports in python3 and (the only available) |
| ambiguous one in python2. |
| - added -relativeimport option to use explicit relative import syntax |
| (python3), |
| |
| The "Python Packages" section in the documentation discusses how to work |
| with importing packages including the new -relativeimport command line option. |
| |
| 2013-12-23: vadz |
| [Octave, Perl, Python, R, Ruby, Tcl] Change the length of strings created from fixed-size char |
| buffers in C code. |
| |
| This is a potential backwards compatibility break: a "char buf[5]" containing "ho\0la" was |
| returned as a string of length 5 before, but is returned as a string of length 2 now. Also, |
| it was possible to assign a (non-NUL-terminated) string "hello" to such a buffer before but |
| now this fails and only "helo" can fit. |
| |
| Apply "char FIXSIZE[ANY]" typemaps to explicitly choose the old behaviour. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2013-12-23: talby |
| [Perl] Add support for directors. |
| |
| 2013-12-18: ianlancetaylor |
| [Go] Don't require that Go environment variables be set |
| when running examples or testsuite when using Go 1 or |
| later. |
| |
| 2013-12-17: ianlancetaylor |
| [Go] Remove -longsize option (for backward compatibility, |
| ignore it if seen). |
| |
| 2013-12-17: ianlancetaylor |
| [Go] Add -go-pkgpath option. |
| |
| 2013-12-16: ianlancetaylor |
| [Go] Update for Go 1.2 release. Add support for linking |
| SWIG code directly into executable, rather than using a |
| shared library. |
| |
| 2013-12-13: ianlancetaylor |
| [Go] Add SWIG source file name as comments in generated |
| files. This can be used by Go documentation tools. |
| |
| 2013-12-12: jleveque |
| [Lua] Fix typo (wchar instead of wchar_t) which made wchar.i |
| for Lua useless. |
| |
| 2013-12-12: vmiklos |
| [PHP] PHP's peculiar call-time pass-by-reference feature was |
| deprecated in PHP 5.3 and removed in PHP 5.4, so update the REF |
| typemaps in phppointers.i to specify pass-by-reference in the |
| function definition. Examples/php/pointer has been updated |
| accordingly. |
| |
| 2013-12-12: olly |
| [PHP] The usage of $input in PHP directorout typemaps has been |
| changed to be consistent with other languages. The typemaps |
| provided by SWIG have been updated accordingly, but if you |
| have written your own directorout typemaps, you'll need to |
| update $input to &$input (or make equivalent changes). |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2013-11-27: vadz |
| [C#, Java, Python] Add std_auto_ptr.i defining typemaps for returning std::auto_ptr<>. |
| |
| 2013-11-09: wsfulton |
| [C#] Apply patch #79 from Brant Kyser |
| - Remove using directives from the generated C# code and fully qualify the use of all .NET |
| framework types in order to minimize potential name collisions from input files defining |
| types, namespace, etc with the same name as .NET framework members. |
| - Globally qualify the use of .NET framework types in the System namespace |
| - Remove .NET 1.1 support, .NET 2 is the minimum for the C# module |
| |
| This is a potential backwards compatibility break if code has been added relying on these using |
| statements that used to be generated: |
| |
| using System; |
| using System.Runtime.InteropServices; |
| |
| The quick fix to add these back in is to add the -DSWIG2_CSHARP command line option when |
| executing SWIG. See CSharp.html documentation for more info. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2013-11-05: wsfulton |
| [Java] Fix some corner cases for the $packagepath/$javaclassname special variable substitution. |
| |
| 2013-11-05: wsfulton |
| [Java] Apply patch #91 from Marvin Greenberg - Add director:except feature for improved |
| exception handling in director methods for Java. |
| |
| 2013-10-15: vadz |
| Allow using \l, \L, \u, \U and \E in the substitution part of %(regex:/pattern/subst/) |
| inside %rename to change the case of the text being replaced. |
| |
| 2013-10-12: wsfulton |
| [CFFI] Apply #96 - superclass not lispify |
| |
| 2013-10-12: wsfulton |
| Merge in C++11 support from the gsoc2009-matevz branch where Matevz Jekovec first |
| started the C++0x additions. Documentation of the C++11 features supported is in a |
| new Chapter of the documentation, "SWIG and C++11" in Doc/Manual/CPlusPlus11.html. |
| |
| 2013-10-04: wsfulton |
| Fix %naturalvar not having any affect on templated classes instantiated with an |
| enum as the template parameter type. Problem reported by Vadim Zeitlin. |
| |
| 2013-09-20: wsfulton |
| [Java] Fix a memory leak for the java char **STRING_ARRAY typemaps. |
| |
| Version 2.0.12 (9 Feb 2014) |
| =========================== |
| |
| 2014-01-16: wsfulton |
| [PHP] Fix compilation error in ZTS mode (64 bit windows) due to incorrect placement |
| of TSRMLS_FETCH() in SWIG_Php_GetModule() as reported by Mark Dawson-Butterworth. |
| |
| 2014-01-13: kwwette |
| [Octave] update support to Octave version 3.8.0 |
| |
| - Octave 3.8.0 no longer defines OCTAVE_API_VERSION_NUMBER, but 3.8.1 |
| will define OCTAVE_{MAJOR,MINOR,PATCH}_VERSION instead: see |
| http://hg.savannah.gnu.org/hgweb/octave/rev/b6b6e0dc700e |
| So we now use a new macro SWIG_OCTAVE_PREREQ(major,minor,patch) to |
| enable features requiring Octave version major.minor.patch or later. |
| |
| For Octave versions prior to 3.8.1, we reconstruct values for |
| OCTAVE_{MAJOR,MINOR,PATCH}_VERSION based on OCTAVE_API_VERSION_NUMBER, |
| extracted from Octave's ChangeLogs. An additional hack is needed to |
| distinguish between Octave <= 3.2.x and 3.8.0, neither of which define |
| OCTAVE_API_VERSION_NUMBER. |
| |
| - Octave 3.8.0 deprecates symbol_table::varref(), so remove its use |
| for this and future versions of Octave. |
| |
| - Octave 3.8.0 removes octave_value::is_real_nd_array(), used in |
| octave_swig_type::dims(). Its use is not required here, so remove it. |
| |
| - Retested against Octave versions 3.0.5, 3.2.4, 3.4.3, 3.6.4, and 3.8.0. |
| |
| - Updated Octave documentation with tested Octave versions, and added a |
| warning against using versions <= 3.x.x, which are no longer tested. |
| |
| 2013-12-22: wsfulton |
| C++11 support for new versions of erase and insert in the STL containers. |
| |
| The erase and insert methods in the containers use const_iterator instead |
| of iterator in C++11. There are times when the methods wrapped must match |
| the parameters exactly. Specifically when full type information for |
| template types is missing or SWIG fails to look up the type correctly, |
| for example: |
| |
| %include <std_vector.i> |
| typedef float Real; |
| %template(RealVector) std::vector<Real>; |
| |
| SWIG does not find std::vector<Real>::iterator because %template using |
| typedefs does not always work and so SWIG doesn't know if the type is |
| copyable and so uses SwigValueWrapper<iterator> which does |
| not support conversion to another type (const_iterator). This resulted |
| in compilation errors when using the C++11 version of the containers. |
| |
| Closes #73 |
| |
| 2013-10-17: wsfulton |
| [R] Fix SF #1340 - Visual Studio compile error in C++ wrappers due to #include <exception> |
| within extern "C" block. |
| |
| 2013-10-17: wsfulton |
| [Python] Fix SF #1345 - Missing #include <stddef.h> for offsetof when using -builtin. |
| |
| 2013-10-12: wsfulton |
| [Lua] Apply #92 - missing return statements for SWIG_Lua_add_namespace_details() |
| and SWIG_Lua_namespace_register(). |
| |
| Version 2.0.11 (15 Sep 2013) |
| ============================ |
| |
| 2013-09-15: wsfulton |
| [R] Fix attempt to free a non-heap object in OUTPUT typemaps for: |
| unsigned short *OUTPUT |
| unsigned long *OUTPUT |
| signed long long *OUTPUT |
| char *OUTPUT |
| signed char*OUTPUT |
| unsigned char*OUTPUT |
| |
| 2013-09-12: wsfulton |
| [Lua] Pull Git patch #62. |
| 1) Static members and static functions inside class can be accessed as |
| ModuleName.ClassName.FunctionName (MemberName respectively). Old way such as |
| ModuleName.ClassName_FunctionName still works. |
| 2) Same goes for enums inside classes: ModuleName.ClassName.EnumValue1 etc. |
| |
| 2013-09-12: wsfulton |
| [UTL] Infinity is now by default an acceptable value for type 'float'. This fix makes |
| the handling of type 'float' and 'double' the same. The implementation requires the |
| C99 isfinite() macro, or otherwise some platform dependent equivalents, to be available. |
| |
| Users requiring the old behaviour of not accepting infinity, can define a 'check' typemap |
| wherever a float is used, such as: |
| |
| %typemap(check,fragment="<float.h>") float, const float & %{ |
| if ($1 < -FLT_MAX || $1 > FLT_MAX) { |
| SWIG_exception_fail(SWIG_TypeError, "Overflow in type float"); |
| } |
| %} |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2013-08-30: wsfulton |
| [Lua] Pull Git patch #81: Include Lua error locus in SWIG error messages. |
| This is standard information in Lua error messages, and makes it much |
| easier to find bugs. |
| |
| 2013-08-29: wsfulton |
| Pull Git patch #75: Handle UTF-8 files with BOM at beginning of file. Was giving an |
| 'Illegal token' syntax error. |
| |
| 2013-08-29: wsfulton |
| [C#] Pull Git patch #77: Allow exporting std::map using non-default comparison function. |
| |
| 2013-08-28: wsfulton |
| [Python] %implicitconv is improved for overloaded functions. Like in C++, the methods |
| with the actual types are considered before trying implicit conversions. Example: |
| |
| %implicitconv A; |
| struct A { |
| A(int i); |
| }; |
| class CCC { |
| public: |
| int xx(int i) { return 11; } |
| int xx(const A& i) { return 22; } |
| }; |
| |
| The following python code: |
| |
| CCC().xx(-1) |
| |
| will now return 11 instead of 22 - the implicit conversion is not done. |
| |
| 2013-08-23: olly |
| [Python] Fix clang++ warning in generated wrapper code. |
| |
| 2013-08-16: wsfulton |
| [Python] %implicitconv will now accept None where the implicit conversion takes a C/C++ pointer. |
| Problem highlighted by Bo Peng. Closes SF patch #230. |
| |
| 2013-08-07: wsfulton |
| [Python] SF Patch #326 from Kris Thielemans - Remove SwigPyObject_print and SwigPyObject_str and |
| make the generated wrapper use the default python implementations, which will fall back to repr |
| (for -builtin option). |
| |
| Advantages: |
| - it avoids the swig user having to jump through hoops to get print to work as expected when |
| redefining repr/str slots. |
| - typing the name of a variable on the python prompt now prints the result of a (possibly redefined) |
| repr, without the swig user having to do any extra work. |
| - when redefining repr, the swig user doesn't necessarily have to redefine str as it will call the |
| redefined repr |
| - the behaviour is exactly the same as without the -builtin option while requiring no extra work |
| by the user (aside from adding the %feature("python:slot...) statements of course) |
| |
| Disadvantage: |
| - default str() will give different (but clearer?) output on swigged classes |
| |
| 2013-07-30: wsfulton |
| [Python, Ruby] Fix #64 #65: Missing code in std::multimap wrappers. Previously an instantiation |
| of a std::map was erroneously required in addition to an instantiation of std::multimap with the |
| same template parameters to prevent compilation errors for the wrappers of a std::multimap. |
| |
| 2013-07-14: joequant |
| [R] Change types file to allow for SEXP return values |
| |
| 2013-07-05: wsfulton |
| [Python] Add %pythonbegin directive which works like %pythoncode, except the specified code is |
| added at the beginning of the generated .py file. This is primarily needed for importing from |
| __future__ statements required to be at the very beginning of the file. Example: |
| |
| %pythonbegin %{ |
| from __future__ import print_function |
| print("Loading", "Whizz", "Bang", sep=' ... ') |
| %} |
| |
| 2013-07-01: wsfulton |
| [Python] Apply SF patch #340 - Uninitialized variable fix in SWIG_Python_NonDynamicSetAttr |
| when using -builtin. |
| |
| 2013-07-01: wsfulton |
| [Python, Ruby, Ocaml] Apply SF patch #341 - fix a const_cast in generated code that was generating |
| a <:: digraph when using the unary scope operator (::) (global scope) in a template type. |
| |
| 2013-07-01: wsfulton |
| [Python] Add SF patch #342 from Christian Delbaere to fix some director classes crashing on |
| object deletion when using -builtin. Fixes SF bug #1301. |
| |
| 2013-06-11: wsfulton |
| [Python] Add SWIG_PYTHON_INTERPRETER_NO_DEBUG macro which can be defined to use the Release version |
| of the Python interpreter in Debug builds of the wrappers. The Visual Studio .dsp example |
| files have been modified to use this so that Debug builds will now work without having |
| to install or build a Debug build of the interpreter. |
| |
| 2013-06-07: wsfulton |
| [Ruby] Git issue #52. Fix regression with missing rb_complex_new function for Ruby |
| versions prior to 1.9 using std::complex wrappers if just using std::complex as an output type. |
| Also fix the Complex helper functions external visibility (to static by default). |
| |
| 2013-06-04: olly |
| [PHP] Fix SWIG_ZTS_ConvertResourcePtr() not to dereference NULL |
| if the type lookup fails. |
| |
| Version 2.0.10 (27 May 2013) |
| ============================ |
| |
| 2013-05-25: wsfulton |
| [Python] Fix Python 3 inconsistency when negative numbers are passed |
| where a parameter expects an unsigned C type. An OverFlow error is |
| now consistently thrown instead of a TypeError. |
| |
| 2013-05-25: Artem Serebriyskiy |
| SVN Patch ticket #338 - fixes to %attribute macros for template usage |
| with %arg. |
| |
| 2013-05-19: wsfulton |
| Fix ccache-swig internal error bug due to premature file cleanup. |
| |
| Fixes SF bug 1319 which shows up as a failure in the ccache tests on |
| Debian 64 bit Wheezy, possibly because ENABLE_ZLIB is defined. |
| |
| This is a corner case which will be hit when the maximum number of files |
| in the cache is set to be quite low (-F option), resulting in a cache miss. |
| |
| 2013-05-09: kwwette |
| [Octave] Fix bugs in Octave module loading: |
| - fix a memory leak in setting of global variables |
| - install functions only once, to speed up module loads |
| |
| 2013-04-28: gjanssens |
| [Guile] Updates in guile module: |
| - Add support for guile 2.0 |
| - Drop support for guile 1.6 |
| - Drop support for generating wrappers using guile's gh interface. |
| All generated wrappers will use the scm interface from now on. |
| - Deprecate -gh and -scm options. They are no longer needed. |
| A warning will be issued when these options are still used. |
| - Fix all tests and examples to have a successful travis test |
| |
| 2013-04-18: wsfulton |
| Apply Patch #36 from Jesus Lopez to add support for $descriptor() special variable macro expansion |
| in fragments. For example: |
| |
| %fragment("nameDescriptor", "header") |
| %{ |
| static const char *nameDescriptor = "$descriptor(Name)"; |
| %} |
| |
| which will generate into the wrapper if the fragment is used: |
| |
| static const char *nameDescriptor = "SWIGTYPE_Name"; |
| |
| 2013-04-18: wsfulton |
| Fix SF Bug #428 - Syntax error when preprocessor macros are defined inside of enum lists, such as: |
| |
| typedef enum { |
| eZero = 0 |
| #define ONE 1 |
| } EFoo; |
| |
| The macros are silently ignored. |
| |
| 2013-04-17: wsfulton |
| [C#] Pull patch #34 from BrantKyser to fix smart pointers in conjunction with directors. |
| |
| 2013-04-15: kwwette |
| [Octave] Fix bugs in output of cleanup code. |
| - Cleanup code is now written also after the "fail:" label, so it will be called if |
| a SWIG_exception is raised by the wrapping function, consistent with other modules. |
| - Octave module now also recognises the "$cleanup" special variable, if needed. |
| |
| 2013-04-08: kwwette |
| Add -MP option to SWIG for generating phony targets for all dependencies. |
| - Prevents make from complaining if header files have been deleted before |
| the dependency file has been updated. |
| - Modelled on similar option in GCC. |
| |
| 2013-04-09: olly |
| [PHP] Add missing directorin typemap for char* and char[] which |
| fixes director_string testcase failure. |
| |
| 2013-04-05: wsfulton |
| [Ruby] SF Bug #1292 - Runtime fixes for Proc changes in ruby-1.9 when using STL |
| wrappers that override the default predicate, such as: |
| |
| %template(Map) std::map<swig::LANGUAGE_OBJ, swig::LANGUAGE_OBJ, swig::BinaryPredicate<> >; |
| |
| 2013-04-05: wsfulton |
| [Ruby] SF Bug #1159 - Correctly check rb_respond_to call return values to fix some |
| further 1.9 problems with functors and use of Complex wrappers. |
| |
| 2013-04-02: wsfulton |
| [Ruby] Runtime fixes for std::complex wrappers for ruby-1.9 - new native Ruby complex numbers are used. |
| |
| 2013-03-30: wsfulton |
| [Ruby] Fix seg fault when using STL containers of generic Ruby types, GC_VALUE or LANGUAGE_OBJECT, |
| on exit of the Ruby interpreter. More frequently observed in ruby-1.9. |
| |
| 2013-03-29: wsfulton |
| [Ruby] Fix delete_if (reject!) for the STL container wrappers which previously would |
| sometimes seg fault or not work. |
| |
| 2013-03-25: wsfulton |
| [Python] Fix some undefined behaviour deleting slices in the STL containers. |
| |
| 2013-03-19: wsfulton |
| [C#, Java, D] Fix seg fault in SWIG using directors when class and virtual method names are |
| the same except being in different namespaces when the %nspace feature is not being used. |
| |
| 2013-02-19: kwwette |
| Fix bug in SWIG's handling of qualified (e.g. const) variables of array type. Given the typedef |
| a(7).q(volatile).double myarray // typedef volatile double[7] myarray; |
| the type |
| q(const).myarray // const myarray |
| becomes |
| a(7).q(const volatile).double // const volatile double[7] |
| Previously, SwigType_typedef_resolve() produces the type |
| q(const).a(7).q(volatile).double // non-sensical type |
| which would never match %typemap declarations, whose types were parsed correctly. |
| Add typemap_array_qualifiers.i to the test suite which checks for the correct behaviour. |
| |
| 2013-02-18: wsfulton |
| Deprecate typedef names used as constructor and destructor names in %extend. The real |
| class/struct name should be used. |
| |
| typedef struct tagEStruct { |
| int ivar; |
| } EStruct; |
| |
| %extend tagEStruct { |
| EStruct() // illegal name, should be tagEStruct() |
| { |
| EStruct *s = new EStruct(); |
| s->ivar = ivar0; |
| return s; |
| } |
| ~EStruct() // illegal name, should be ~tagEStruct() |
| { |
| delete $self; |
| } |
| } |
| |
| For now these trigger a warning: |
| |
| extend_constructor_destructor.i:107: Warning 522: Use of an illegal constructor name 'EStruct' in |
| %extend is deprecated, the constructor name should be 'tagEStruct'. |
| extend_constructor_destructor.i:111: Warning 523: Use of an illegal destructor name 'EStruct' in |
| %extend is deprecated, the destructor name should be 'tagEStruct'. |
| |
| These %extend destructor and constructor names were valid up to swig-2.0.4, however swig-2.0.5 ignored |
| them altogether for C code as reported in SF bug #1306. The old behaviour of using them has been |
| restored for now, but is officially deprecated. This does not apply to anonymously defined typedef |
| classes/structs such as: |
| |
| typedef struct {...} X; |
| |
| 2013-02-17: kwwette |
| When generating functions provided by %extend, use "(void)" for no-argument functions |
| instead of "()". This prevents warnings when compiling with "gcc -Wstrict-prototypes". |
| |
| 2013-02-17: kwwette |
| [Octave] Minor fix to autodoc generation: get the right type for functions returning structs. |
| |
| 2013-02-15: wsfulton |
| Deprecate typedef names used in %extend that are not the real class/struct name. For example: |
| |
| typedef struct StructBName { |
| int myint; |
| } StructB; |
| |
| %extend StructB { |
| void method() {} |
| } |
| |
| will now trigger a warning: |
| |
| swig_extend.i:19: Warning 326: Deprecated %extend name used - the struct name StructBName |
| should be used instead of the typedef name StructB. |
| |
| This is only partially working anyway (the %extend only worked if placed after the class |
| definition). |
| |
| 2013-02-09: wsfulton |
| [CFFI] Apply patch #22 - Fix missing package before &body |
| |
| 2013-01-29: wsfulton |
| [Java] Ensure 'javapackage' typemap is used as it stopped working from version 2.0.5. |
| |
| 2013-01-28: wsfulton |
| [Python] Apply patch SF #334 - Fix default value conversions "TRUE"->True, "FALSE"->False. |
| |
| 2013-01-28: wsfulton |
| [Java] Apply patch SF #335 - Truly ignore constructors in directors with %ignore. |
| |
| 2013-01-18: Brant Kyser |
| [Java] Patch #15 - Allow the use of the nspace feature without the -package commandline option. |
| This works as long and the new jniclasspackage pragma is used to place the JNI intermediate class |
| into a package and the nspace feature is used to place all exposed types into a package. |
| |
| 2013-01-15: wsfulton |
| Fix Visual Studio examples to work when SWIG is unzipped into a directory containing spaces. |
| |
| 2013-01-15: wsfulton |
| [C#] Fix cstype typemap lookup for member variables so that a fully qualified variable name |
| matches. For example: |
| %typemap(cstype) bool MVar::mvar "MyBool" |
| struct MVar { |
| bool mvar; |
| }; |
| |
| 2013-01-11: Brant Kyser |
| [Java, C#, D] SF Bug #1299 - Fix generated names for when %nspace is used on |
| classes with the same name in two different namespaces. |
| |
| 2013-01-11: Vladimir Kalinin |
| [C#] Add support for csdirectorin 'pre', 'post' and 'terminator' attributes. |
| |
| 2013-01-08: olly |
| [PHP] Fix to work with a ZTS build of PHP (broken in 2.0.7). |
| |
| 2013-01-07: olly |
| Fix bashism in configure, introduced in 2.0.9. |
| |
| 2013-01-06: wsfulton |
| Pull patch #4 from ptomulik to fix SF Bug #1296 - Fix incorrect warning for virtual destructors |
| in templates, such as: |
| Warning 521: Illegal destructor name B< A >::~B(). Ignored. |
| |
| 2013-01-05: wsfulton |
| [Python] Pull patch #3 from ptomulik to fix SF Bug #1295 - standard exceptions as |
| classes using the SWIG_STD_EXCEPTIONS_AS_CLASSES macro. |
| |
| 2013-01-04: wsfulton |
| [Java] Pull patch #2 from BrantKyser to fix SF Bug #1283 - fix smart pointers in conjuction |
| with directors. |
| |
| 2013-01-03: wsfulton |
| [Java] Pull patch #1 from BrantKyser to fix SF Bug #1278 - fix directors and nspace feature when |
| multilevel namespaces are used. |
| |
| Version 2.0.9 (16 December 2012) |
| ================================ |
| |
| 2012-12-16: wsfulton |
| Fix garbage line number / empty file name reporting for some missing |
| '}' or ')' error messages. |
| |
| 2012-12-15: kkaempf |
| [Ruby] Apply patch 3530444, Class#methods and Class#constants returns array of |
| symbols in Ruby 1.9+ |
| |
| 2012-12-14: kkaempf |
| [Ruby] Apply patch 3530439 and finally replace all occurrences of the STR2CSTR() macro |
| with StringValuePtr(). STR2CSTR was deprecated since years and got removed in Ruby 1.9 |
| |
| 2012-12-14: kkaempf |
| [Ruby] Applied patches #3530442 and 3530443 to adapt compile and runtime include |
| paths to match Ruby 1.9+ |
| |
| 2012-12-14: wsfulton |
| [CFFI] Fix #3161614 - Some string constants are incorrect |
| |
| 2012-12-13: wsfulton |
| [CFFI] Fix #3529690 - Fix incorrect constant names. |
| |
| 2012-12-12: drjoe |
| [R] add fix to finalizer that was missed earlier |
| |
| 2012-12-11: wsfulton |
| [Python] Apply patch #3590522 - fully qualified package paths for Python 3 even if a module is in the |
| same package. |
| |
| 2012-12-08: wsfulton |
| [Python] Bug #3563647 - PyInt_FromSize_t unavailable prior to Python 2.5 for unsigned int types. |
| |
| 2012-12-08: wsfulton |
| [Perl] Fix bug #3571361 - C++ comment in C wrappers. |
| |
| 2012-12-07: wsfulton |
| [C#] Apply patch #3571029 which adds missing director support for const unsigned long long &. |
| |
| 2012-11-28: kwwette |
| [Octave] Simplified module loading: now just the syntax |
| $ example; |
| is accepted, which loads functions globally but constants and variables relative to the current scope. |
| This make module loading behaviour reliably consistent, and reduces problems when loading modules which |
| depend on other modules which may not have been previously loaded. |
| |
| 2012-11-27: wsfulton |
| [cffi] Fix junk output when wrapping single character literal constants. |
| |
| 2012-11-17: wsfulton |
| [Tcl, Modula3] Add missing support for -outdir. |
| |
| 2012-11-17: wsfulton |
| Fix segfaults when using filename paths greater than 1024 characters in length. |
| |
| 2012-11-14: wsfulton |
| [ccache-swig] Apply patch #3586392 from Frederik Deweerdt to fix some error cases - incorrectly using |
| memory after it has been deleted. |
| |
| 2012-11-09: vzeitlin |
| [Python] Fix overflow when passing values greater than LONG_MAX from Python 3 for parameters with unsigned long C type. |
| |
| 2012-11-09: wsfulton |
| Fix some feature matching issues for implicit destructors and implicit constructors and implicit |
| copy constructors added with %copyctor. Previously a feature for these had to be fully qualified |
| in order to match. Now the following will also match: |
| |
| %feature("xyz") ~XXX(); |
| struct XXX {}; |
| |
| 2012-11-09: wsfulton |
| Further consistency in named output typemap lookups for implicit constructors and destructors and |
| implicit copy constructors added with %copyctor. Previously only the fully qualified name was being |
| used, now the unqualified name will also be used. For example, previously: |
| |
| example.i:38: Searching for a suitable 'out' typemap for: void Space::More::~More |
| Looking for: void Space::More::~More |
| Looking for: void |
| |
| Now the unqualified name is also used: |
| |
| example.i:38: Searching for a suitable 'out' typemap for: void Space::More::~More |
| Looking for: void Space::More::~More |
| Looking for: void ~More |
| Looking for: void |
| |
| 2012-11-02: wsfulton |
| Fix some subtle named output typemap lookup misses, the fully qualified name was not always being |
| used for variables, for example: |
| |
| struct Glob { |
| int MyVar; |
| }; |
| |
| Previously the search rules (as shown by -debug-tmsearch) for the getter wrapper were: |
| |
| example.i:44: Searching for a suitable 'out' typemap for: int MyVar |
| Looking for: int MyVar |
| Looking for: int |
| |
| Now the scope is named correctly: |
| |
| example.i:44: Searching for a suitable 'out' typemap for: int Glob::MyVar |
| Looking for: int Glob::MyVar |
| Looking for: int MyVar |
| Looking for: int |
| |
| 2012-10-26: wsfulton |
| Fix director typemap searching so that a typemap specified with a name will be correctly matched. Previously |
| the name was ignored during the typemap search. Applies to the following list of typemaps: |
| directorout, csdirectorout, cstype, imtype, ctype, ddirectorout, dtype, gotype, jtype, jni, javadirectorout. |
| |
| 2012-10-11: wsfulton |
| Most of the special variables available for use in %exception are now also available for expansion in |
| %extend blocks. These are: $name $symname $overname $decl $fulldecl $parentclassname $parentclasssymname, see docs |
| on "Class extension" in SWIGPlus.html. Patch based on submission from Kris Thielemans. |
| |
| 2012-10-10: wsfulton |
| Additional new special variables in %exception are expanded as follows: |
| $parentclassname - The parent class name (if any) for a method. |
| $parentclasssymname - The target language parent class name (if any) for a method. |
| |
| 2012-10-08: iant |
| [Go] Generating Go code now requires using the -intgosize option to |
| indicate the size of the 'int' type in Go. This is because the |
| size of the type is changing from Go 1.0 to Go 1.1 for x86_64. |
| |
| 2012-09-14: wsfulton |
| Add new warning if the empty template instantiation is used as a base class, for example: |
| |
| template <typename T> class Base {}; |
| %template() Base<int>; |
| class Derived : public Base<int> {}; |
| |
| gives the following warning instead of silently ignoring the base: |
| |
| cpp_inherit.i:52: Warning 401: Base class 'Base< int >' has no name as it is an empty template instantiated with '%template()'. Ignored. |
| cpp_inherit.i:51: Warning 401: The %template directive must be written before 'Base< int >' is used as a base class and be declared with a name. |
| |
| |
| 2012-09-11: wsfulton |
| [Java] Fix #3535304 - Direct use of a weak global reference in directors |
| sometimes causing seg faults especially on Android. |
| |
| 2012-09-06: wsfulton |
| [Java] Fix (char *STRING, size_t LENGTH) typemaps to accept NULL string. |
| |
| 2012-08-26: drjoe |
| [R] make ExternalReference slot ref to contain reference |
| |
| 2012-08-26: drjoe |
| [R] fix Examples/Makefile to use C in $(CC) rather than $(CXX) |
| |
| Version 2.0.8 (20 August 2012) |
| ============================== |
| |
| 2012-08-15: wsfulton |
| [Perl] Add size_type, value_type, const_reference to the STL containers. |
| |
| 2012-08-15: wsfulton |
| [Python] Add discard and add methods to std::set wrappers so that pyabc.i can be used ensuring |
| MutableSet is a valid abstract base class for std::set. As reported by Alexey Sokolov. |
| Similarly for std::multiset. |
| |
| 2012-08-15: wsfulton |
| [Python] Fix #3541744 - Missing PyInt_FromSize_t calls for Python 3. |
| |
| 2012-08-13: wsfulton |
| [Java] Patch from David Baum to add the assumeoverride feature for Java directors to |
| improve performance when all overridden methods can be assumed to be overridden. |
| |
| 2012-08-05: wsfulton |
| [Python] #3530021 Fix unused variable warning. |
| |
| 2012-08-05: wsfulton |
| [C#] Fix #3536360 - Invalid code sometimes being generated for director methods |
| with many arguments. |
| |
| 2012-08-05: wsfulton |
| [Perl] #3545877 - Don't undefine bool if defined by C99 stdbool.h - problem using |
| Perl 5.16 and later. |
| |
| 2012-08-04: wsfulton |
| Remove incorrect warning (314) about target language keywords which were triggered |
| by using declarations and using directives. For example 'string' is a keyword in C#: |
| namespace std { class string; } |
| using std::string; |
| |
| 2012-07-21: wsfulton |
| Fix display of pointers in various places on 64 bit systems - only 32 bits were being shown. |
| |
| 2012-07-21: wsfulton |
| Fix gdb debugger functions 'swigprint' and 'locswigprint' to display to the gdb output window |
| rather than stdout. This fixes display problems in gdbtui and the ensures the output |
| appears where expected in other gdb based debuggers such as Eclipse CDT. |
| |
| 2012-07-20: kwwette |
| [Octave] segfault-on-exit prevention hack now preserves exit status, and uses C99 _Exit(). |
| |
| 2012-07-02: wsfulton |
| Fix Debian bug http://bugs.debian.org/672035, typemap copy failure - regression introduced |
| in swig-2.0.5: |
| %include<stl.i> |
| using std::pair; |
| %template(StrPair) pair<std::string, std::string>; |
| |
| 2012-07-02: wsfulton |
| Fix using declarations combined with using directives with forward class declarations so that |
| types are correctly found in scope for templates. Example: |
| |
| namespace Outer2 { |
| namespace Space2 { |
| template<typename T> class Thing2; |
| } |
| } |
| using namespace Outer2; |
| using Space2::Thing2; |
| template<typename T> class Thing2 {}; |
| // STILL BROKEN void useit2(Thing2<int> t) {} |
| void useit2a(Outer2::Space2::Thing2<int> t) {} |
| void useit2b(::Outer2::Space2::Thing2<int> t) {} |
| void useit2c(Space2::Thing2<int> t) {} |
| namespace Outer2 { |
| void useit2d(Space2::Thing2<int> t) {} |
| } |
|
|