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<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.
