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.0.2 (in progress)
===========================

2020-02-18: ryannevell
            [Lua] #1728 Add support for LUA lightuserdata to SWIG_Lua_ConvertPtr.

2020-02-18: dmach
            [Ruby] #1725 Fix gcc -Wcatch-value warnings.

2020-02-14: treitmayr
            #1724 Fix wrapping of abstract user-defined conversion operators.

2020-02-13: ddurham2
            [Python] #1512 Fix memleak when using STL containers of shared_ptr objects.

2020-02-06: wsfulton
            [Python] #1673 #1674 Fix setting 'this' when extending a proxy class with __slots__.

2020-01-31: vadz
            [Ruby] #1651 Add std::auto_ptr<> typemaps.

2020-01-31: ZackerySpytz
            [Python] #1700 More robust error checking for failures in calls to Python C API:
            PyBytes_AsStringAndSize() and PyString_AsStringAndSize().

2020-01-31: vadz
            [Python] #1710 Fix crash parsing empty docstrings.

2020-01-30: Alzathar
            [R] #910 #914 Fix R memory leak on exception.

2020-01-30: richardbeare
            [R] #1511 Fix bug wrapping functions. These were previously incorrectly wrapped as if
            they were variables. This happened when 'get' or 'set' was in the name of the function
            or method, but sometimes also in some other circumstances. If you were using R
            attribute syntax to access these methods, you'll need to switch to calling them as R
            methods.

            *** POTENTIAL INCOMPATIBILITY ***

2020-01-24: etse-dignitas, wsfulton
            [C#, D, Java] #1533 Fix upcasting for shared_ptr's of templated types.

2020-01-16: mcfarljm
            #1643 #1654 When using -doxygen, fix segfault when nameless parameters or vararg parameters
            are used.

2020-01-16: mcfarljm
            #1632 #1659 Fix newline handling for doxygen "///" comments.

2020-01-14: mcfarljm
            #1647 #1656 Fix crash handling empty doxygen comments.

2020-01-14: mcfarljm
            #1608 Improve doxygen support.
            - Add support for \param[] commands such as: \param[in].
            - Optional arguments are marked as 'optional' in pydoc.
            - Improve support for \code commands so that other languages are supported as code blocks.
              Support added for java, c and py.  For example Python: \code{.py} ... \endcode
            - Fix doxygen handling of \em and \p tags for Python.

2020-01-13: wsfulton
            [Python] #1595 Python -builtin constructors silently ignored keyword arguments.
            Instead of silenty ignoring them, now a "TypeError: f() takes no keyword arguments"
            exception is thrown if keyword arguments are used. Hence constructors and normal methods/
            functions behave in the same way. Note, -keyword should be used with -builtin to obtain
            keyword argument support.

2020-01-05: jschueller shadchin
            [Python] #1670 #1696 Add missing field initializers introduced in python 3.8:
            tp_vectorcall and tp_print.

2020-01-05: friedrichatgc
            [Octave] #1688 Change swig_this() to use size_t instead of long for compatibility
            with Windows 64 bit.

2020-01-05: treitmayr
            [Ruby] #1692 #1689 Add support for Ruby 2.7

2019-12-30: treitmayr
            [Ruby] #1653 #1668 Fix code generated when using -globalmodule option.

2019-12-29: ZackerySpytz
            [OCaml] #1686 Fix compilation errors with OCaml 4.09.0.

2019-12-10: wsfulton
            #1679 Fix parsing of C++11 identifiers with special meaning (final and override) when
            they are used as part of the scope name of an identifier, such as a namespace name.

2019-11-26: wsfulton
            [C#] #1628 'out' or 'ref' used in a cstype typemap was not always stripped out in parts
            of director code generation.

2019-11-01: wsfulton
            [Python] #1595 Fix bug in support for keyword arguments (kwargs feature or -keyword)
            when using -builtin. The fix is in the argument error checking when wrapping zero
            argument constructors only.
