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)
===========================

2020-10-07: treitmayr
            [Python] #1812 Fix error handling in pybuffer.i PyObject_GetBuffer().

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