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 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 Foo(int a, T b) { ... } } }; %template(Foo) Foo::Foo; 2017-01-22: wsfulton Issue #876 Enhance %extend to extend a class with template methods, eg: struct Foo { %extend { template void do_stuff(int a, T b) { ... } } }; %template(do_stuff_inst) Foo::do_stuff; 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.