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.

Version 3.0.11 (in progress)
============================

2016-12-01: wsfulton
            [Python] Issue https://github.com/swig/swig/issues/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 https://github.com/swig/swig/issues/571

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

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