| Below are the changes for the current release. |
| See the CHANGES file for changes in older releases. |
| See the RELEASENOTES file for a summary of changes in each release. |
| Issue # numbers mentioned below can be found on Github. For more details, add |
| the issue number to the end of the URL: https://github.com/swig/swig/issues/ |
| |
| Version 4.1.0 (in progress) |
| =========================== |
| |
| 2022-02-03: olly |
| [Python] #967 Make `self` parameter available to user typemaps. |
| |
| 2022-02-03: teythoon |
| [Python] #801 Fix -Wunused-parameter warnings with builtin, |
| |
| 2022-02-03: teythoon |
| #801 Fix -Wstrict-prototypes warnings in generated pointer |
| functions. |
| |
| 2022-02-03: olly |
| #660 https://sourceforge.net/p/swig/bugs/1081/ |
| Default parameter values containing method calls are now parsed and |
| handled - e.g. `x->foo(3,4)` and `y.z()`. |
| |
| 2022-02-02: olly |
| [Ruby] https://sourceforge.net/p/swig/bugs/1136/ Fix remove of prefix |
| from method name to only remove it at the start. |
| |
| 2022-02-01: olly |
| #231 Handle returning an object by reference in a C++ trailing |
| return type. |
| |
| 2022-02-01: davidcl |
| [Scilab] #745 use SWIG_<module>_Init() as a C module init function. |
| |
| 2022-02-01: olly |
| [OCaml] #2083 Fix to work when CAML_SAFE_STRING is on, which it is |
| by default in recent Ocaml releases. |
| |
| 2022-01-31: mreeez |
| https://sourceforge.net/p/swig/bugs/1147/ |
| Fix copyToR() generated for a struct in a namespace. |
| |
| 2022-01-29: fschlimb |
| #655 Better handling of using declarations. |
| |
| 2022-01-29: dontpanic92 |
| #676 Fix code generated for a C++ class with a non-capitalised |
| name. |
| |
| 2022-01-26: trex58 |
| #1919 #1921 #1923 Various fixes for AIX portability. |
| |
| 2022-01-26: olly |
| #1935 Don't crash on an unclosed HTML tag in a doxygen comment |
| when -doxygen is specified. |
| |
| 2022-01-25: olly |
| Constant expressions now support member access with `.` such as |
| `foo.bar`. Previous this only worked in a case like `x->foo.bar`. |
| |
| 2022-01-25: olly |
| #2091 Support most cases of `sizeof` applied to an expression |
| in constant expressions. Previously there was only support for |
| `sizeof(<type>)` and expressions which syntactically look like a |
| type (such as `sizeof(foo)`). |
| |
| 2022-01-25: olly |
| #80 #635 https://sourceforge.net/p/swig/bugs/1139/ |
| Add support for parsing common cases of `<` and `>` comparisons |
| in constant expressions. Adding full support for these seems hard |
| to do without introducing conflicts into the parser grammar, but in |
| fact all reported cases have had parentheses around the comparison |
| and we can support that with a few restrictions on the left side of |
| `<`. |
| |
| 2022-01-25: wsfulton |
| New warning 327 for extern templates, eg: |
| |
| extern template class std::vector<int>; |
| extern template void Func<int>(); |
| |
| results in warning |
| |
| example.i:3: Warning 327: Extern template ignored. |
| example.i:4: Warning 327: Extern template ignored. |
| |
| Extern template classes previously resulted in warning 320. |
| |
| 2022-01-24: romintomasetti |
| #2131 #2157 C++11 extern function template parsing error fix. |
| |
| 2022-01-21: wsfulton |
| #2120 #2138 Replace legacy PCRE dependency with PCRE2. |
| This requires changes for building SWIG from source. See updated |
| html documentation in Preface.html and Windows.html. Updated |
| instructions are also shown when running ./configure if PCRE2 is not |
| found. Note that debian based systems can install PCRE2 using: |
| |
| apt install libpcre2-dev |
| |
| Note that https://github.com/swig/swig/wiki/Getting-Started also has |
| updated information for building from source. |
| |
| 2022-01-19: olly |
| [PHP] #2027 Automatically generate PHP type declarations for PHP 8. |
| The generate code still compiles for PHP 7.x, but without type |
| declarations since PHP 7.x has much more limited type declaration |
| support. |
| |
| 2022-01-18: olly |
| [Perl] #1629 Perl 5.8.0 is now the oldest version we aim to support. |
| |
| 2022-01-14: wsfulton |
| [Python] Fix %callback and specifying the callback function as a |
| static member function using Python staticmethod syntax, such as |
| Klass.memberfunction instead of Klass_memberfunction when using |
| -builtin and -fastproxy. |
| |
| 2022-01-11: wsfulton |
| [Python] Accept keyword arguments accessing static member functions when |
| using -builtin and kwargs feature and Python class staticmethod syntax. |
| The missing keyword argument support was only when using the |
| class staticmethod syntax, such as Klass.memberfunction, and not when |
| using the flat static method syntax, such as Klass_memberfunction. |
| |
| 2022-01-04: juierror |
| [Go] #2045 Add support for std::array in std_array.i. |
| |
| 2021-12-18: olly |
| [PHP] Add PHP keyword 'readonly' (added in 8.1) to the list SWIG |
| knows to automatically rename. This keyword is special in that PHP |
| allows it to be used as a function (or method) name. |
| |
| 2021-12-07: vstinner |
| [Python] #2116 Python 3.11 support: use Py_SET_TYPE() |
| |
| 2021-12-05: rwf1 |
| [Octave] #2020 #1893 Add support for Octave 6 up to and including 6.4. |
| Also add support for compiling with -Bsymbolic which is used by default |
| by mkoctfile. |
| |
| 2021-12-02: jsenn |
| [Python] #2102 Fixed crashes when using embedded Python interpreters. |
| |
| 2021-11-12: wsfulton |
| [Javascript] v8 and node only. Fix mismatched new char[] and free() |
| when wrapping C code char arrays. Now calloc is now used instead of |
| new char[] in SWIG_AsCharPtrAndSize. |
| |
| 2021-10-03: ajrh1 |
| [Perl] #2074: Avoid -Wmisleading-indentation in generated code |
| when using gcc11. |
| |
| 2021-10-03: jschueller |
| [CMake] #2065: Add option to enable or disable PCRE support. |
| |
| 2021-09-16: ianlancetaylor |
| [Go] Improved _cgo_panic implementation. |
| |
| 2021-09-16: ianlancetaylor |
| [Go] Don't use crosscall2 for panicking. Instead rely on documented |
| and exported interfaces. |
| |
| 2021-09-14: ianlancetaylor |
| [Go] Remove -no-cgo option (long unsupported in Go) |
| |
| 2021-05-04: olly |
| [PHP] #2014 Throw PHP exceptions instead of using PHP errors |
| |
| PHP exceptions can be caught and handled if desired, but if they |
| aren't caught then PHP exits in much the same way as it does for a |
| PHP error. |
| |
| In particular this means parameter type errors and some other cases |
| in SWIG-generated wrappers now throw a PHP exception, which matches |
| how PHP's native parameter handling deals with similar situations. |
| |
| `SWIG_ErrorCode()`, `SWIG_ErrorMsg()`, `SWIG_FAIL()` and `goto thrown;` |
| are no longer supported (these are really all internal implementation |
| details and none are documented aside from brief mentions in CHANGES |
| for the first three). I wasn't able to find any uses in user interface |
| files at least in FOSS code via code search tools. |
| |
| If you are using these: |
| |
| Use `SWIG_PHP_Error(code,msg);` instead of `SWIG_ErrorCode(code); |
| SWIG_ErrorMsg(msg);` (which will throw a PHP exception in SWIG >= 4.1 |
| and do the same as the individual calls in older SWIG). |
| |
| `SWIG_FAIL();` and `goto thrown;` can typically be replaced with |
| `SWIG_fail;`. This will probably also work with older SWIG, but |
| please test with your wrappers if this is important to you. |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2021-05-17: adr26 |
| [Python] #1985 Fix memory leaks: |
| |
| 1. Python object references were being incorrectly retained by |
| SwigPyClientData, causing swig_varlink_dealloc() never to run / free |
| memory. SwigPyClientData_New() / SwigPyClientData_Del() were updated |
| to fix the object reference counting, causing swig_varlink_dealloc() |
| to run and the memory swig_varlink owns to be freed. |
| |
| 2. SwigPyClientData itself was not freed by SwigPyClientData_Del(), |
| causing another heap leak. The required free() was added to |
| SwigPyClientData_Del() |
| |
| 3. Fix reference counting/leak of python cached type query |
| |
| 4. Fix reference counting/leak of SwigPyObject dict (-builtin) |
| |
| 5. Python object reference counting fixes for out-of-memory |
| scenarios were added to: SWIG_Python_RaiseOrModifyTypeError(), |
| SWIG_Python_AppendOutput(), SwigPyClientData_New(), |
| SwigPyObject_get___dict__() and SwigPyObject_format() |
| |
| 6. Add error handling for PyModule_AddObject() to |
| SWIG_Python_SetModule() (failure could be caused by OOM or a name |
| clash caused by malicious code) |
| |
| 2021-05-13: olly |
| [UFFI] #2009 Remove code for Common Lisp UFFI. We dropped support |
| for it in SWIG 4.0.0 and nobody has stepped forward to revive it in |
| over 2 years. |
| |
| 2021-05-13: olly |
| [S-EXP] #2009 Remove code for Common Lisp S-Exp. We dropped |
| support for it in SWIG 4.0.0 and nobody has stepped forward to |
| revive it in over 2 years. |
| |
| 2021-05-13: olly |
| [Pike] #2009 Remove code for Pike. We dropped support for it in |
| SWIG 4.0.0 and nobody has stepped forward to revive it in over 2 |
| years. |
| |
| 2021-05-13: olly |
| [Modula3] #2009 Remove code for Modula3. We dropped support for it |
| in SWIG 4.0.0 and nobody has stepped forward to revive it in over 2 |
| years. |
| |
| 2021-05-13: olly |
| [CLISP] #2009 Remove code for GNU Common Lisp. We dropped support |
| for it in SWIG 4.0.0 and nobody has stepped forward to revive it in |
| over 2 years. |
| |
| 2021-05-13: olly |
| [Chicken] #2009 Remove code for Chicken. We dropped support for it |
| in SWIG 4.0.0 and nobody has stepped forward to revive it in over 2 |
| years. |
| |
| 2021-05-13: olly |
| [Allegrocl] #2009 Remove code for Allegro Common Lisp. We dropped |
| support for it in SWIG 4.0.0 and nobody has stepped forward to |
| revive it in over 2 years. |
| |
| 2021-05-04: olly |
| [PHP] #1982 #1457 https://sourceforge.net/p/swig/bugs/1339/ |
| SWIG now only use PHP's C API to implement its wrappers, and no |
| longer generates PHP code to define classes. The wrappers should |
| be almost entirely compatible with those generated before, but |
| faster and without some previously hard-to-fix bugs. |
| |
| The main notable difference is SWIG no longer generates a .php |
| wrapper at all by default (only if %pragma(php) code=... or |
| %pragma(php) include=... are specified in the interface file). |
| This also means you need to load the module via extension=... |
| in php.ini, rather than letting the dl() in the generated |
| .php wrapper load it (but dl() has only worked for command-line |
| PHP for some years now). |
| |
| *** POTENTIAL INCOMPATIBILITY *** |
| |
| 2021-04-30: olly |
| #1984 Remove support for $source and $target. |
| These were officially deprecated in 2001, and attempts to use them have |
| resulted in a warning (including a pointer to what to update them to) |
| for most if not all of that time. |
| |
| 2021-04-27: wsfulton |
| #1987 [Java] Fix %interface family of macros for returning by const |
| pointer reference. |
| |
| 2021-04-19: olly |
| Fix use of uninitialised variable in the generated code for an |
| empty typecheck typemap, such as the dummy one we include for |
| std::initializer_list. |
| |
| 2021-04-12: olly |
| #1777 [Python] Specifying -py3 now generates a check for Python |
| version >= 3.0. |
| |
| 2021-03-26: olly |
| [PHP] Add PHP keywords 'fn' (added in 7.4) and 'match' (added in |
| 8.0) to the list SWIG knows to automatically rename. |
| |
| 2021-03-23: wsfulton |
| #1942 [Python] Fix compilation error in wrappers when using -builtin |
| and wrapping varargs in constructors. |
| |
| 2021-03-22: goto40 |
| #1977 Fix handling of template template parameters. |
| |
| 2021-03-21: olly |
| #1929, #1978 [PHP] Add support for PHP 8. |
| |
| 2021-03-19: wsfulton |
| #1610 Remove -ansi from default compilation flags. |
| |
| 2021-03-19: dot-asm |
| #1934 [Java] Clean up typemaps for long long arrays. |
| |
| 2021-03-19: olly |
| #1527 [PHP] Improve PHP object creation in directorin case. |
| Reportedly the code we were using in this case gave segfaults in |
| PHP 7.2 and later - we've been unable to reproduce these, but the |
| new approach is also simpler and should be bit faster too. |
| |
| 2021-03-18: olly |
| #1655 [PHP] Fix char* typecheck typemap to accept PHP Null like the |
| corresponding in typemap does. |
| |
| 2021-03-18: olly |
| #1900, #1905 [PHP] Fix wrapping of overloaded directed methods with |
| non-void return. |
| |
| 2021-03-11: murillo128 |
| #1498 [Javascript] Support type conversion. |
| |
| 2021-03-06: nshmyrev |
| #872 [Javascript] Various typemap issues in arrays_javascript.i fixed. |
| |
| 2021-03-03: vaughamhong |
| #577 [Javascript] Implemented SetModule/GetModule for JSC to allow type sharing |
| across modules. |
| |
| 2021-03-01: xantares, Oliver Buchtala, geographika |
| #1040 Add support for building SWIG with CMake. See documentation in Windows.html. |
| |
| 2021-03-01: vadz |
| #1952 Fix incorrect warning "Unknown Doxygen command: ." |
| |
| 2021-02-28: p2k |
| #969 [Javascript] v8/node - prevent crash calling a constructor without new keyword. |
| |
| 2021-02-28: alecmev |
| #405 #1121 [Javascript] Fix OUTPUT typemaps on methods that don't return void. |
| The output value is appended to the return value. |
| |
| 2021-02-26: murillo128, wsfulton |
| #1269 [Javascript] Fix handling of large positive unsigned long and |
| unsigned long long values. |
| |
| 2021-02-24: tomleavy, yegorich, tungntpham |
| #1746 [Javascript] Add support for Node v12, v14 and v16. |
| SWIG support for Node is now for v6 and later only. |
| |
| 2020-02-09: ZackerySpytz |
| #1872 Fix typos in attribute2ref macros. |
| |
| 2020-10-10: wsfulton |
| [Javascript] Fix so that ccomplex.i interface to file can be used. |
| |
| 2020-10-10: wsfulton |
| #252 complex can now be used as a C identifier and doesn't give a syntax error. |
| |
| 2020-10-10: lpsinger |
| #1770 Correct C complex support. |
| _Complex is now parsed as a keyword rather than complex as per the C99 standard. |
| The complex macro is available in the ccomplex.i library file along with other |
| complex number handling provided by the complex.h header. |
| |
| 2020-10-07: ZackerySpytz |
| [Python] #1812 Fix the error handling for the PyObject_GetBuffer() calls in |
| pybuffer.i. |
| |
| 2020-10-07: treitmayr |
| #1824 Add missing space in director method declaration returning |
| const pointer. |
| |
| 2020-10-07: adelva1984 |
| #1859 Remove all (two) exceptions from SWIG executable. |
| |
| 2020-09-25: wsfulton |
| [C#, Java] #1874 Add ability to change the modifiers for the interface |
| generated when using the %interface macros. |
| |
| For C# use the 'csinterfacemodifiers' typemap. |
| For Java use the 'javainterfacemodifiers' typemap. |
| |
| For example: |
| |
| %typemap(csinterfacemodifiers) X "internal interface" |
| |
| |
| 2020-09-24: geefr |
| [C#] #1868 Fix wchar_t* csvarout typemap for member variable wrappers. |
| |
| 2020-08-28: wsfulton |
| [Java] #1862 Fix crashes in swig_connect_director during director class construction |
| when using the director class from multiple threads - a race condition initialising |
| block scope static variables. The fix is guaranteed when using C++11, but most |
| compilers also fix it when using C++03/C++98. |
| |
| 2020-08-16: wsfulton |
| [Python] Add missing initializer for member ‘_heaptypeobject::ht_module’ when using |
| -builtin to complete Python 3.9 support. |
| |
| 2020-08-16: wsfulton |
| [Python] Remove PyEval_InitThreads() call for Python 3.7 and later as Python calls |
| it automatically now. This removes a deprecation warning when using Python 3.9. |
| |
| 2020-08-15: wsfulton |
| [Python] All Python examples and tests are written to be Python 2 and Python 3 |
| compatible, removing the need for 2to3 to run the examples or test-suite. |
| |
| 2020-08-13: wsfulton |
| [C#] Add support for void *VOID_INT_PTR for member variables. |
| |
| 2020-07-29: chrisburr |
| #1843 [Python] Compilation error fix in SwigPyBuiltin_SetMetaType when using PyPy. |
| |
| 2020-06-14: ZackerySpytz |
| #1642 #1809 Fix virtual comparison operators in director classes - remove incorrect |
| space in the function name, for example, operator= = is now operator==. |