Swig

Latest version: v4.2.1

Safety actively analyzes 627484 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 13

4.2.1

===========================

2024-02-23: wsfulton
2814 Correctly ignore duplicate template instantiation (when the
duplicate contains typedef'd template parameters).

2024-02-22: erezgeva
[Ruby, Octave, R] 2284 Fix segfault shrinking STL containers.

2024-02-22: simark
Fix -Wundef warning about testing the value of __cplusplus when
compiling SWIG-generated C code. Warning introduced by a change in
SWIG 4.2.0.

2024-02-21: olly
2808 [PHP] Fix memory leak when getting or setting a PHP
attribute which wraps a C++ member variable. Bug introduced in
SWIG 4.1.0.

2024-02-18: wsfulton
2745 Fix for wrapping STL containers that are static member variables
or global variables (most scripting languages). Previously a copy of the
STL container was made into a target language container when reading the
variable. Changes, such as adjusting an element or adding/erasing
elements, were made to the copy of the container rather the actual
underlying C++ container. Also applies to const reference STL static
members.

If you really need the old behaviour, add in the typemap that used
to provide it. For example, for std::list< int > and
const std::list< int >&, use:

%typemap(varout,noblock=1,fragment="SWIG_" "Traits" "_" {std::list< int >})
std::list< int >, const std::list< int >& {
$result = swig::from(static_cast< std::list< int > >($1));
}

*** POTENTIAL INCOMPATIBILITY ***

2024-02-15: olly
Improve type deduction for enum values in expressions.

2024-02-15: rlaboiss
2799 [Octave] Add support for Octave 9.0; fix warnings about use
of deprecated Octave APIs with Octave 7 and later.

2024-02-14: olly
SWIG now warns and ignores if %constant is used with an implicit
type which SWIG can't deduce.

2024-02-13: olly
Fix type deduction for certain cases involving C-style casts, or
which are syntactically like a C-style cast applied to an unary
operator, such as: (7)*6

2024-02-13: olly
2796 Fix handling of enum initialised by expression including a
cast to a typedef-ed type. Regression introduced in 4.2.0.

2024-02-09: wsfulton
2794 Fix SwigType_isvariadic assertion to add support for variadic
templated functions in a template.

2024-02-08: wsfulton
2761 [Tcl] Fix assert in SWIG_Tcl_ConvertPtrFromString().

2024-02-03: wsfulton
1897 [C, Java] Fix crash handling enums with same name in different
namespaces.

2024-02-01: wsfulton
2781 Correctly report line number warnings/errors for base classes that
are templates.

2024-01-31: olly
Fix assertion failure and segfault trying to use %constant to
deduce the type of a "float _Complex" constant.

2024-01-31: jim-easterbrook
2771 [Python] builtin fixes to handle NULL values passed to slots using
functype: ssizeobjargproc and ternaryfunc.

2024-01-31: olly
[Java] 2766 Fix segfault trying to wrap a constant whose type is unknown
to SWIG with "%javaconst(1);" enabled.

2024-01-31: wsfulton
2768 Fix seg fault handling upcasting when using %shared_ptr on some
templates.

2024-01-31: olly
2783 Fix incorrectly deduced type for function call. Regression
introduced in 4.2.0.

2024-01-27: wsfulton
[Python] Fix compilation error when wrapping two or more classes that
have the same friend operator overload when the classes are in a namespace.

2024-01-15: wsfulton
https://sourceforge.net/p/swig/bugs/960/
https://sourceforge.net/p/swig/bugs/807/
Fix so that friend operators within a namespace can be correctly ignored
or renamed.

2024-01-15: wsfulton
Wrap friend functions that are defined or declared within a namespace.
Previously unqualified friend definitions/declarations in a namespace were
ignored.

The visibility of unqualified friend functions in C++ is somewhat quirky
and the documentation has been enhanced to aid wrapping of friends.

2024-01-12: wsfulton
2749 Fix seg fault handling friend constructor/destructor declarations.

2024-01-12: olly
[Ruby, Tcl] 2751 Fix -external-runtime output to define
SWIG_snprintf (bug introduced in 4.2.0).

2024-01-12: olly
Improve preprocessor warning for use of an undefined function-like
macro. SWIG now warns:

Warning 202: Could not evaluate expression 'MY_VERSION_AT_LEAST(1,2,3)'
Warning 202: Use of undefined function-like macro

instead of:

Warning 202: Could not evaluate expression 'MY_VERSION_AT_LEAST(1,2,3)'
Warning 202: Syntax error: expected operator

2024-01-11: PaulObermeier
[Tcl] Improve support for Tcl 9.0. All examples and tests now pass
with Tcl 9.0.b1.

2024-01-06: wsfulton
[Python] 2744 Regression fix - add in missing SwigPyIterator_T fragment for
SwigPyIteratorClosed_T when using %import on an instantiated std::map.

4.2.0

===========================

2023-12-24: degasus
[Python] 2494 Fix integer overflow / undefined behavior for python
castmode on sizeof(long)==8 platforms for implicit conversions around
edge cases of LONG_MAX and ULONG_MAX, for example:

void as_l(long x); // C interface

Usage from Python:

lmaxd = math.nextafter(float(2**63), 0.0) LONG_MAX == 2**63-1
Now below correctly raises a TypeError due to the overflow
as_l(math.nextafter(lmaxd, float('inf')))

2023-12-21: olly
[PHP] `%feature("php:allowdynamicproperties", 0) Foo;` is now handled as
the feature being off to match other boolean features. Previously
any value set was treated as on.

2023-12-20: treitmayr
[Ruby] 2033 Fix missing checks for negative numbers when passing numbers
to unsigned long/unsigned long long C types.

2023-12-20: crhilton
[C] 2722 Add support the "cs:defaultargs" feature.

This adds a way to wrap C++ functions that have default arguments
with an equivalent C function with default arguments, instead of
generating an overloaded C method for each defaulted argument.

2023-12-20: vadz, vadimcn, wangito33, wsfulton, clintonstimpson
[Python] 1613 1687 1727 2190 2727 2428 Add support for the Python stable
ABI using default Python options. Code is generated that compiles when
setting the C macro Py_LIMITED_API to 0x03040000 (at C/C++ compile time).
Note that the -builtin, -fast (used by -O) options are not supported.

2023-12-20: wsfulton
[Python] More efficient input string marshalling for Python 3.

Previously a copy of a string was made while converting from a Python 3
string to a char * or std::string. This copy is no longer needed making
string marshalling more efficient. Does not apply to the stable ABI
targetting Python < 3.10 where a copy is still required where the stable
ABI does not provide PyUnicode_AsUTF8AndSize.

2023-12-20: wsfulton
2190 Replace SWIG_Python_str_AsChar with SWIG_PyUnicode_AsUTF8AndSize.

SWIG_Python_str_AsChar has undefined behaviour when Py_LIMITED_API is defined
as it returns a pointer to a string in a PyBytes object that no longer exists.

SWIG_PyUnicode_AsUTF8AndSize is an efficient replacement, but requires a
different API and the caller to decrement the refcount on the intermediate
PyObject in the Py_LIMITED_API < 0x030A0000 implementation. The alternative
would have required copying the returned char * string as was done in a
previous implementation requiring a call to the defunct SWIG_Python_str_DelForPy3
function.

*** POTENTIAL INCOMPATIBILITY ***

2023-12-14: PaulObermeier
[Tcl] 2730 Rename SWIG's Tcl_GetBoolFromObj() since Tcl 8.7 (TIP 618)
introduces a function with the same name.

[Tcl] 2729 Use Tcl_GetString() instead of Tcl_GetStringFromObj(..., NULL)
for compatibility with Tcl 9.

2023-12-03: olly
[Ocaml] Remove -suffix command line option which has emitted a
deprecation warning since SWIG 3.0.4 - if you want to specify
a different filename extension for generated C++ files use -cppext
instead, which works for all SWIG target language backends.

2023-12-01: saiarcot895
[Python] 2413 Prevent potential multi-threading crash; gracefully exit running
daemon threads on main thread exit.

2023-11-24: wsfulton
Add support for parsing C++20 constexpr destructors.

2023-11-19: olly
Fix handling of constant expressions containing < and > to not
drop parentheses around the subexpression as doing so can change
its value in some cases.

2023-11-18: yasamoka, jmarrec
[Python] 2639 Add std_filesystem.i for wrapping std::filesystem::path
with pathlib.Path.

2023-11-17: chrstphrchvz
[Tcl] 2711 Fix -Wmissing-braces warning in generated code.

2023-11-17: chrstphrchvz
[Tcl] 2710 Stop using Tcl's CONST macro. It's no longer needed
and is set to be deprecated in Tcl 8.7, and removed in Tcl 9.0.

2023-11-08: wsfulton
[C] Replace empty() method with IsEmpty property for std::vector, std::list, std::map
containers for consistency across all containers.

The empty() method is actually still wrapped, but as a private proxy method. For backwards
compatibility, the method can be made public again using %csmethodmodifiers for all
vectors as follows:

%extend std::vector {
%csmethodmodifiers empty() const "public"
}
%include "std_vector.i"

or alternatively for each individual %template instantiation as follows:

%csmethodmodifiers std::vector<double>::empty() const "public"
%template(VectorDouble) std::vector<double>;


*** POTENTIAL INCOMPATIBILITY ***

2023-11-08: wsfulton
[C] Add std_unordered_set.i for wrapping std::std_unordered_set, implementing
C System.Collections.Generic.ISet<>.

2023-11-09: olly
2591 SWIG now supports command line options -std=cXX and
-std=c++XX to specify the C/C++ standards version. The only effect
of these options is to set appropriate values for __STDC_VERSION__
and __cplusplus respectively, which is useful if you're wrapping
headers which have preprocessor checks based on their values.

2023-11-09: olly
SWIG now defines __STDC__ to 1 to match the behaviour of ISO C/C++
compilers - previously it had an empty value.

*** POTENTIAL INCOMPATIBILITY ***

2023-11-09: olly
When -c++ is used, SWIG now defines __cplusplus to be 199711L (the
value for C++98) by default - previously its value was set to
__cplusplus.

*** POTENTIAL INCOMPATIBILITY ***

2023-11-08: emmenlau
2480 [C] Add std_unordered_map.i for wrapping std::std_unordered_map, implementing
C System.Collections.Generic.IDictionary<>.

2023-11-06: wsfulton
[D, Java] Add the dbegin option to the %module directive for generating code at
the beginning of every D file. Similarly javabegin for Java. This enables one
to add a common comment at the start of each D/Java file.

2023-11-06: wsfulton
[C] 2681 Support nullable reference types. A generic C option to the
%module directive allows one to add in any code at the beginning of every
C file. This can add the nullable enable preprocessor directive at the beginning
of every C file in order to enable nullable reference types as follows:

%module(csbegin="nullable enable\n") mymodule

2023-10-21: wsfulton
[Python] 1783 Don't swallow all exceptions into a NotImplemented return
when wrapping operators which are marked with %pythonmaybecall. Corrects the
implementation of PEP 207.

2023-10-18: wsfulton
[C, D] 902 Use the C++11 enum base, that is, the underlying enum
type.

For C, it is used as the underlying type in the generated C enum.
For D, it is used as the enum base type in the generated D enum.

2023-10-16: wsfulton
2687 Another using declarations fix for inheritance hierarchies more than
two deep and the using declarations are overloaded. Using declarations
from a base class' base were not available for use in the target
language when the using declaration was before a method declaration.

2023-10-11: wsfulton
[C, D, Go, Guile, Java, Javascript, Lua, Ocaml, R, Racket] 1680
carrays.i library modified to use size_t instead of int for the functions
provided by %array_functions and %array_class.

If the old types are required for backwards compatibility, use %apply to
restore the old types as follows:

%include "carrays.i"
%apply int { size_t nelements, size_t index }
... %array_functions and %array_class ...
%clear size_t nelements, size_t index; To be safe in case used elsewhere

*** POTENTIAL INCOMPATIBILITY ***

2023-10-11: olly
[PHP] 2685 Fix testcase director_finalizer to work with PHP 8.3.

2023-10-06: wsfulton
2307 std::vector::capacity and std::vector::reserve signature changes.

Java api changes from:
public long capacity() { ... }
public void reserve(long n) { ... }
to:
public int capacity() { ... }
public void reserve(int n) { ... }
to fit in with the usual Java convention of using int for container
indexing and sizing.

The original api for std::vector::reserve can be also be made available via
%extend to add in an overloaded method as follows:

%include <std_vector.i>
%extend std::vector {
void reserve(jlong n) throw (std::length_error, std::out_of_range) {
if (n < 0)
throw std::out_of_range("vector reserve size must be positive");
self->reserve(n);
}
}

This change is partially driven by the need to seamlessly support the full
64-bit range for size_t generically, apart from the customisations for the
STL containers, by using:

%apply unsigned long long { size_t };
%apply const unsigned long long & { const size_t & };

*** POTENTIAL INCOMPATIBILITY ***

2023-10-05: wsfulton
[C] 2379 Defining SWIGWORDSIZE64 now applies the (unsigned)
long long typemaps to (unsigned) long for a better match on systems
where long is 64-bits. A new "Type mapping" section has been added into
the CSharp.html documentation covering this and marshalling of primitive
types. C (unsigned) long handling remains as is by default, that is,
marshall as 32-bit.

The INPUT[], OUTPUT[], INOUT[], FIXED[] typemaps for long and unsigned long
in arrays_csharp.i can now be used and compiled on 64-bit platforms where
sizeof(long) != sizeof(int). Requires SWIGWORDSIZE64 to be defined.

2023-09-27: wsfulton
[Java] 646 649 Defining SWIGWORDSIZE64 now applies the (unsigned)
long long typemaps to (unsigned) long for a better match on systems
where long is 64-bits.

2023-09-18: christophe-calmejane
2631 C++17 std::map fix for values that are not default constructible.
Enhancements for all target languages except Python and Ruby.

2023-09-14: mmomtchev
2675 2676 Temporary variable zero initialisation in the wrappers for
consistency with handling pointers.

2023-09-11: emmenlau
2394 Add support to preprocessor for true and false. Note that this
is for C++ not C.

2023-09-11: wsfulton
[R] 2605 Complete transition to rtypecheck typemaps from hard coded
logic. Also see entry dated 2022-10-28 for swig-4.1.1. The rtypecheck
typemaps implement typechecking in R for each function parameter using
functions such as is.numeric, is.character, is.logical, is.null etc.

2023-09-09: wsfulton
https://sourceforge.net/p/swig/bugs/919/

Fix incorrect variable setters being generated when wrapping arrays.
A setter is no longer generated if the type of the array members
are non-assignable.

2023-09-09: wsfulton
Non-assignable detection fixes when wrapping const member variables.
Const member variables such as the following are non-assignable by
by default:

char * const x;
const int x;
const int x[1];

but not:

const char * x;

Variable setters are not generated when wrapping these non-assignable
variables and classes containing such non-assignable variables.

2023-09-07: wsfulton
Non-assignable detection fixes when wrapping rvalue reference variables.
Rvalue reference variables such as the following are non-assignable by
by default:

X &&v;

Variable setters are not generated when wrapping these non-assignable
variables and classes containing such non-assignable variables.

2023-09-06: wsfulton
Non-assignable detection fixes when wrapping reference variables.
Reference variables such as the following are non-assignable by
by default:

int &v;

Variable setters are not generated when wrapping these non-assignable
variables and classes containing such non-assignable variables.

2023-09-06: wsfulton
Assignment operator detection fixes when wrapping static member
variables.

2023-09-06: wsfulton
1416 Implicit assignment operator detection fixes.

A class that does not have an explicit assignment operator does not
have an implicit assignment operator if a member variable is not
assignable. Similarly should one of the base classes also not be
assignable. Detection of these scenarios has been fixed so that when
wrapping a variable that is not assignable, a variable setter is not
generated in order to avoid a compiler error.

Template instantiation via %template is required in order for this to
work for templates that are not assignable.

2023-09-03: wsfulton
https://sourceforge.net/p/swig/bugs/1006/
Fix incorrect variable setters being generated when the type of the
variable is not assignable, due to variable type inheriting a private
assignment operator further up the inheritance chain (further up than
the immediate base).

2023-09-03: wsfulton
[Guile, Ocaml, Perl] Don't attempt to generate a setter when wrapping
variables which have a private assignment operator as assignment is not
possible. This now matches the behaviour of all the other target languages.

2023-09-02: wsfulton
Fix problems wrapping deleted destructors. Derived classes are not
constructible, so don't attempt to generate default constructor or
copy constructor wrappers.

struct StackOnly1 {
// Only constructible on the stack
~StackOnly1() = delete;
};
struct StackOnlyDerived1 : StackOnly1 {
// this class is not constructible due to deleted base destructor
};

2023-09-02: wsfulton
Fix %copyctor feature when used on classes with deleted copy constructors.
A default constructor wrapper was sometimes incorrectly generated.

2023-09-02: wsfulton
1644 Fix wrapping types passed by value where the type has a deleted
default constructor.

2023-08-16: shadchin
[Python] 2665 Fix missing-field-initializers warning to provide support
for python-3.12.

2023-08-09: olly
[Ruby] Remove -feature command line option which has been
deprecated since SWIG 1.3.32 in 2007. Use -initname instead.

2023-08-06: wsfulton
Add support for using declarations to introduce templated member
methods and for inheriting templated constructors, such as:

struct Base {
// templated constructor
template <typename T> Base(const T &t, const char *s) {}
// templated member method
template <typename T> void template_method(const T &t, const char *s) {}
};

%template(Base) Base::Base<int>;
%template(template_method) Base::template_method<double>;

struct Derived : Base {
using Base::Base;
using Base::template_method;
};

Previously the templated methods and constructors were ignored and
not introduced into the Derived class.

2023-08-04: wsfulton
Fix using declarations for inheritance hierarchies more than
two deep and the using declarations are overloaded. Using declarations
from a base class' base were not available for use in the target
language. For example in the code below, Using1::usingmethod(int i)
was not wrapped for use in Using3:

struct Using1 {
protected:
void usingmethod(int i) {}
};
struct Using2 : Using1 {
protected:
void usingmethod(int i, int j) {}
using Using1::usingmethod;
};
struct Using3 : Using2 {
void usingmethod(int i, int j, int k) {}
using Using2::usingmethod;
};

Similarly for C++11 using declarations for inheriting constructors.

2023-08-02: wsfulton
https://sourceforge.net/p/swig/bugs/932/
Fix missing constructor generation due to abstract class test
failure when a method is declared in the class along with a
using declaration and the using declaration is declared before
the method that implemented the pure virtual method, such as:

struct ConcreteDerived : AbstractBase {
ConcreteDerived() {} // was not wrapped
using AbstractBase::f;
virtual void f(int n) override {}
};

2023-08-02: olly
[PHP] Implement overloading between different integer types and
between double and float.

2023-07-29: wsfulton
https://sourceforge.net/p/swig/bugs/678/
Fix %copyctor used on class hierarchies with non-const copy
constructors. Previously SWIG always attempted to call a copy
constructor taking a const reference parameter instead of a
non-const reference parameter.

2023-07-28: wsfulton
2541 Fix overloading of templated constructors and %copyctor.

2023-07-21: wsfulton
Don't generate a default constructor wrapper when a class has a
templated constructor, as there isn't actually an implied default
constructor. For example:

struct TConstructor3 {
template<typename T> TConstructor3(T val) {}
};

Previously wrappers were generated for a non-existent default
constructor which failed to compile.

2023-07-15: wsfulton
C++11 using declarations for inheriting constructors has now been
extended to support the directors feature.

2023-07-13: wsfulton
C++11 using declarations for inheriting constructors support now
also includes inheriting implicitly defined default constructors
from the base class.

2023-07-04: wsfulton
2641 Add support for C++11 using declarations for inheriting
constructors.

2023-06-30: wsfulton
2640 Fix syntax error parsing an expression which calls a function
with no parameters within additional brackets.

2023-06-27: mmomtchev
[Javascript] 2545 New Javascript generator targeting the Node.js
binary stable ABI Node-API.

2023-06-27: olly
[Java] Completely remove pragmas which were deprecated in 2002 and
have triggered an error since SWIG 2.0:

moduleimport Use the moduleimports pragma
moduleinterface Use the moduleinterfaces pragma
modulemethodmodifiers Use %javamethodmodifiers
allshadowimport Use %typemap(javaimports)
allshadowcode Use %typemap(javacode)
allshadowbase Use %typemap(javabase)
allshadowinterface Use %typemap(javainterfaces)
allshadowclassmodifiers Use %typemap(javaclassmodifiers)
shadowcode Use %typemap(javacode)
shadowimport Use %typemap(javaimports)
shadowbase Use %typemap(javabase)
shadowinterface Use %typemap(javainterfaces)
shadowclassmodifiers Use %typemap(javaclassmodifiers)

2023-06-24: wsfulton
2616 https://sourceforge.net/p/swig/bugs/1102/ Fix directors and
allprotected mode and using declarations. Previously SWIG either
seg faulted or generated code that did not compile.

2023-06-20: olly
2486 Fix handling of template in array size, which was being
rejected by SWIG because the type string contains '<' not followed
by '('. Drop this check as it should be unnecessary now since the
fixes that ensure that template parameters are enclosed within
'<(' and ')>'.

2023-06-16: olly
[Java] Remove deprecated command line options which have done
nothing except emit a deprecation message since 2002 or before:

-jnic / -jnicpp JNI calling convention now automatic.
-nofinalize Use javafinalize typemap instead.
-proxy / -shadow Now on by default.

2023-06-16: olly
[Guile] Drop support for -Linkage ltdlmod which was only useful
for Guile <= 1.4 which we no longer support.

2023-06-15: olly
[Guile] The -gh and -scm command line options have been removed.
These have done nothing except emit a message since 2013 when
SWIG dropped support for generating bindings which used GH.

2023-06-15: olly
Remove pointer.i from the SWIG library. It's been a dummy file
which has done nothing except %echo a deprecation message since
2002. The replacement is cpointer.i.

2023-06-15: olly
SWIG will no longer fall back to using the include path to find the
input file, which has been deprecated and emitted a warning since
SWIG 1.3.37 (2009-01-13). This makes the behaviour of SWIG the
same as C/C++ compilers and works with ccache.

2023-06-15: olly
Remove features deprecated in SWIG 1.x and 2.x. Most of these have
emitted a deprecation warning or error for well over a decade and
have replacements with fewer shortcomings so we expect users will
have migrated away from them long ago, but in case you need
them replacements are noted below:

%addmethods Use %extend instead.
%attribute_ref Use %attributeref instead (NB: If called with
4 parameters, the 3rd and 4th need switching).
%disabledoc Use Doxygen support instead.
%doconly Use Doxygen support instead.
%enabledoc Use Doxygen support instead.
%except Use %exception instead.
%extern Use %import instead.
%localstyle Use Doxygen support instead.
%name Use %rename instead.
%new Use %newobject instead.
%out %apply OUTPUT typemap rule instead.
%readonly Use %immutable instead.
%readwrite Use %mutable instead.
%section Use Doxygen support instead.
%style Use Doxygen support instead.
%subsection Use Doxygen support instead.
%subsubsection Use Doxygen support instead.
%text Use Doxygen support instead.
%title Use Doxygen support instead.
%typemap(except) Use %exception instead.
%typemap(ignore) Use %typemap(in,numinputs=0) instead.
%val Use typemaps instead.
-debug_template Use -debug-template instead.
-debug_typemap Use -debug-typemap instead.
-dump_classes Use -debug-classes instead.
-dump_memory Use -debug-memory instead.
-dump_module Use -debug-module 4 instead.
-dump_parse_module Use -debug-module 1 instead.
-dump_parse_top Use -debug-top 1 instead.
-dump_tags Use -debug-tags instead.
-dump_top Use -debug-top 4 instead.
-dump_tree Use -debug-top 4 instead.
-dump_typedef Use -debug-typedef instead.
-dump_xml Use -xmlout /dev/stdout instead.
-make_default On by default since SWIG 1.3.7 (2001-09-03).
-makedefault On by default since SWIG 1.3.7 (2001-09-03).
-no_default Use %nodefaultctor/%nodedefaultdtor instead.
-nodefault Use %nodefaultctor/%nodedefaultdtor instead.
-noextern option On by default since SWIG 1.3.26 (2005-10-09).
-noruntime Type sharing happens via target lang global.
-runtime Type sharing happens via target lang global.
-show_templates Use -debug-template instead.
-tm_debug Use -debug-typemap instead.
-xml out.xml Use -xml -o out.xml instead.
BOTH typemap rule Use INOUT typemap rule instead.
SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE)
Use %intrusive_ptr(TYPE) instead.
SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE)
Use %intrusive_ptr(TYPE) instead.
SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE)
Use %intrusive_ptr_no_wrap(TYPE) instead.
SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE)
Use %intrusive_ptr_no_wrap(TYPE) instead.
SWIG_SHARED_PTR(PROXYCLASS, TYPE)
Use %shared_ptr(TYPE) instead.
SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...)
Use %shared_ptr(TYPE) instead.
SWIG_STD_VECTOR_SPECIALIZE(CSTYPE, CTYPE)
Use SWIG_STD_VECTOR_ENHANCED(CTYPE) instead.
SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(CSTYPE, CTYPE)
No longer required - remove uses.
specialize_std_map_on_both
No longer required - remove uses.
specialize_std_map_on_key
No longer required - remove uses.
specialize_std_map_on_value
No longer required - remove uses.

2023-06-15: olly
[Guile] Fix freearg typemaps to go with char **INOUT and char
*INOUT in typemaps. Previously the char **INOUT typemap would
leak memory if must_free$argnum was true, and the char *INOUT
typemap would generate code that didn't compile.

2023-06-07: olly
2630 Fix preprocessor handling of a slash immediately followed by
a single quote, which wasn't getting recognised as starting a
character literal.

2023-06-07: olly
2630 Fix parsing of <= and >= in templated lambda.

Skipping between matching delimiters is now done at the token level
rather than the character level.

2023-06-02: mmomtchev
[Javascript] 2622 Fix support for %typemap(default) and improve
support for default arguments in general.

2023-06-01: olly
[Perl] 2470 Fix some integer truncation warnings in generated
wrappers.

2023-05-30: olly
[Lua] Fix bug when passing a Lua number to a C++ function expected
std::string. Order of evaluation of C++ function arguments is not
defined, and if lua_rawlen() was called before lua_tostring() then
it would return 0 (because the value was still a number) and an
empty string would be passed.

2023-05-30: mmomtchev
[Javascript] 2618 Fix handling of C++ pointer to member function.

2023-05-25: olly
1032 Allow typename disambiguator in:

using typename NodeT::links_type;

2023-05-25: olly
SWIG now discriminates between long double, double and float
constants. For example, this means that for target languages which
support a separate float type (such as C and D) this will now
create a float constant instead of a double constant in the target
language:

define PI_ISH 3.1414f

2023-05-25: olly
C++11 `auto` variables and `decltype()` can now deduce the
type of some expressions which involve literals of built-in types.

2023-05-25: olly
1125 Support parsing C++11 auto variables. This uses the
existing type deduction code from decltype so has the same
limitations, and such variables will only actually be wrapped
when SWIG can deduce the type.

2023-05-23: olly
[Ruby] Fix deprecation warnings about ANYARGS when compiling
C++ code for SWIG-generated Ruby wrappers with Ruby 3.x.

This is a recurrence of a problem fixed in 4.0.2. Our fix was
conditional on RB_METHOD_DEFINITION_DECL being defined, but Ruby
3.0 stopped defining this.

2023-05-23: olly
2606 Improve error output when SWIG reaches EOF while looking for
a closing delimiter. This is reported with an error like:

Error: Missing '}'. Reached end of input.

We now exit after reporting this and so no longer report a second
more generic error like:

Error: Syntax error in input(1).

2023-05-22: mmomtchev
[Javascript] 2600 Improve test coverage by adding _runme.js files
for 22 test cases.

2023-05-20: erezgeva
[C, D, Java, Javascript, Guile, Scilab] 2552 Implement argcargv.i
library multi-argument typemaps.

2023-05-20: erezgeva
[D] 56 2538 2570 The generated code now works with recent D releases:
adds override keyword on overridden methods.

Support is now working using DMD, gcc D and LLVM D compilers.

2023-05-20: olly
Support deducing the type for decltype(false) and
decltype(true).

2023-05-19: olly
2446 Add support for auto without trailing return type, which is a
C++14 feature.

2023-05-19: olly
SWIG no longer defines preprocessor symbols corresponding to
command line options (e.g. `-module blah` was resulting in
`SWIGOPT_MODULE` being set to `blah`). This feature was added in
2001 so that "[m]odules can look for these symbols to alter their
code generation if needed", but it's never been used for that
purpose in over 20 years, and has never been documented outside of
CHANGES.

2023-05-18: olly
2591 Add new -U command line option to undefine a preprocessor
symbol.

2023-05-18: olly
1589 2335 Support parsing arbitrary expression in decltype.

Use parser error recovery to skip to the closing matching `)` and
issue a warning that we can't deduce the decltype for the
expression (like we already do for any expression which isn't a
simple variable or similar).

2023-05-12: mmomtchev, erezgeva
[Javascript] 2561 Support check typemaps for Javascript.

2023-05-12: olly
[Java] 2556 Suppress Java removal warnings on finalize method.
SWIG will need to stop relying on finalize methods, but we know
that and meanwhile these warnings make the testsuite output very
noisy.

2023-05-11: olly
302 2079 2474 Parse storage class more flexibly.

Previously we had a hard-coded list of allowed combinations in the
grammar, but this suffers from combinatorial explosion, and results
in a vague `Syntax error in input` error for invalid (and missing)
combinations.

This means we now support a number of cases which are valid C++ but
weren't supported, including `friend constexpr` and `virtual
explicit`.

2023-05-08: olly
1567 Add support for std::string_view (new in C++17) for C, Java,
Lua, Perl, PHP, Python, Ruby and Tcl.

2023-05-08: olly
[PHP] 2544 Wrap overloaded method with both static and non-static
forms. We now wrap this as a non-static method in PHP, which means
the static form is only callable via an object.

Previously this case could end up wrapped as static or non-static
in PHP. If it was wrapped as static, attempting to call non-static
overloaded forms would crash with a segmentation fault.

2023-05-06: mmomtchev, wsfulton
2550 Fix typedef/using declarations to a typedef struct/class.

2023-05-04: erezgeva
[D] 2538 Drop support for D1/Tango, which was discontinued in
2012. Wrappers for D2/Phobos are now generated by default, though
the -d2 command line option is still accepted (and now ignored) for
backward compatibility.

*** POTENTIAL INCOMPATIBILITY ***

2023-04-27: olly
2502 Allow using snprintf() instead of sprintf() in wrappers.

We aim to produce code that works with C90 or C++98 so we can't
assume snprintf() is available, but it almost always is (even
on systems from before it was standardised) so having a way to
use it is helpful.

We enable this automatically if the compiler claims conformance
with at least C99 or C++11. It can also be enabled manually by
defining SWIG_HAVE_SNPRINTF. Define SWIG_NO_SNPRINTF to disable
completely.

The fallback is to call sprintf() without a buffer size check,
which is what we've done until now. Adding a check after the
call seems of limited benefit - if the buffer was overflowed
then it's too late to block it, and most of our uses either have a
fixed maximum possible size or dynamically allocate a buffer that's
large enough.

2023-04-26: mmomtchev
[Javascript] Take into account numinputs when counting arguments.

2023-04-24: olly
[PHP] Add throws typemaps for std:string* and const std::string*.

2023-04-23: olly
[Javascript] 2453 The testsuite and examples now select which
Javascript engine to test based on what was detected by configure.
Previously they'd always test with node you specified a different
engine (e.g. with `ENGINE=jsc` on the make command line). Now you
only need to specify ENGINE if you have more than one engine
installed.

2023-04-23: olly
[Javascript] Turn on C++ output when wrapping for node, like
we already do when wrapping for V8-without-node.

The testsuite was masking this bug by using SWIG options
`-v8 -DBUILDING_NODE_EXTENSION=1` rather than `-node` when testing
with nodejs, while the javascript examples were masking this by
all getting processed with -c++.

This shouldn't be an incompatible change for users, as if you're
wrapping a C API you'd have to be working around the problem before
this change (like our testsuite and examples were), and this change
shouldn't break your workaround - it just makes it unnecessary.

2023-04-21: mmomtchev
[Javascript] Fix naming of internal C++ helper for wrapping
variables for node to use the "getter" naming scheme rather
than the function wrapping one. In practice this didn't actually
cause problems because Node wrappers are always compiled as C++
and the parameters are always different even if the names are
the same.

2023-04-21: olly
[PHP] Support INPUT,INOUT,OUTPUT for std::string&.

By default SWIG/PHP wraps std::string& as a pass-by-reference PHP
string parameter, but sometimes such a parameter is only for input
or only for output, so add support for the named typemaps that other
target languages support.

2023-04-21: degasus
2519 Fix CanCastAsInteger range check to clear errno first to fix
bogus failures for valid inputs.if errno is set.

2023-04-21: ZackerySpytz
[OCaml] 1439 Fix reference typemaps for std::string

2023-04-21: olly
2183 Fix ifdef and ifndef to work inside a %define. Previously
they were silently ignored in this context (but if defined already
worked here if you need a workaround which works for older
versions).

2023-04-20: erezgeva
[Go] 2533 Implement argcargv.i library for Go.

2023-04-19: davidcl
[Scilab] Add support for Scilab 2023.x.
Introduce a new `-gatewayxml6` option to generate XML with full
function names.

2023-04-19: mmomtchev
https://sourceforge.net/p/swig/bugs/1163/ #1882 2525
Fix preprocessor expansion when a macro expands to the name of
another macro which takes parameters from the input following the
original macro expansion.

2023-04-19: wildmaples
[Ruby] 2527 Fix "undefining the allocator of T_DATA" warning seen
with Ruby 3.2.

2023-04-18: davidcl
[Scilab] 894 extract values with ":" for typemap (int* IN, int IN_SIZE)

2023-04-14: olly
[PHP7] Support for PHP7 has been removed. PHP7 security support
ended 2022-11-28 so it doesn't make sense to include support for
it in the SWIG 4.2.x release series.

*** POTENTIAL INCOMPATIBILITY ***

2023-04-05: wsfulton
[Python] 2515 Add support for all STL containers to be constructible from a Python set.

The previous implementation used the Python Sequence Protocol to convert from Python types
to STL containers. The new implementation uses the Python Iterator Protocol instead and
thereby can convert from a Python set too.

2023-03-25: alatina
[Octave] 2512 Add support for Octave 8.1.

2023-03-22: wsfulton
[C] 2478 Minor enhancements to std::array wrappers in std_array.i.

2023-03-13: wsfulton
Improved error checking when using %template to instantiate templates within
the correct scope.

1. When a template is instantiated via %template and uses the unary scope
operator ::, an error occurs if the instantiation is attempted within a
namespace that does not enclose the instantiated template.
For example, the following will now error as ::test::max is not enclosed within test1:

Error: '::test::max' resolves to 'test::max' and was incorrectly instantiated in
scope 'test1' instead of within scope 'test'.
namespace test1 {
%template(maxchar) ::test::max<char>;
}

2. SWIG previously failed to always detect a template did not exist when using
%template. In particular when instantiating a global template incorrectly within
namespace. The code below now correctly emits an error:

Error: Template 'test5::GlobalVector' undefined.
namespace test5 {
}
template<typename T> struct GlobalVector {};
%template(GVI) test5::GlobalVector<int>;

2023-03-13: wsfulton
Error out if an attempt is made to define a class using the unary scope
operator ::. The following is not legal C++ and now results in an error:

Error: Using the unary scope operator :: in class definition '::Space2::B' is invalid.
namespace Space2 {
struct B;
}
struct ::Space2::B {};

2023-03-08: wsfulton
Fix duplicate const in generated code when template instantiation type is const
and use of template parameter is also explicitly const, such as:

template <typename T> struct Conster {
void cccc1(T const& t) {}
};
%template(ConsterInt) Conster<const int>;

Above previously led to generated code:
(arg1)->cccc1((int const const &)*arg2);
instead of
(arg1)->cccc1((int const &)*arg2);

2023-03-01: wsfulton
Partial template specialization fixes to support default arguments from the primary
template's parameter list.

template<class Y, class T=int> struct X { void primary() {} };
// Previously the specialization below resulted in:
// Error: Inconsistent argument count in template partial specialization. 1 2
template<class YY> struct X<YY*> { void special(YY*) {} };

// Both of these correctly wrap the partially specialized template
%template(StringPtr) X<const char *>;
%template(ShortPtr) X<short *, int>;

2023-02-15: wsfulton
1300 Further partial template specialization fixes.
Fixes when templates are used as a template parameter in a partially specialized
instantiation such as:

template<typename V> struct Vect {};
template<class T, typename TT> class Foo { ... };
template<class TS, typename TTS> class Foo<Vect<TS>, TTS> { ... };
%template(VectInt) Vect<int>;
%template(FooVectIntDouble) Foo<Vect<int>, double>; // was previously attempting to use primary template

Also fixes partial specialization where the same template parameter name is used twice,
for example:

template<typename X, typename Y> struct H { ... };
template<typename T> struct H<T, T> { ... };
%template(HInts) H<int, int>; // was previously attempting to use primary template

2023-01-27: jschueller
2492 [python] Fix unused parameter warnings for self parameter in
generated C/C++ wrapper code.

2023-01-14: wsfulton
Fix deduction of partially specialized template parameters when the specialized
parameter is non-trivial, used in a wrapped method and the type to %template uses
typedefs. For example:

typedef double & DoubleRef;
template <typename T> struct XX {};
template <typename T> struct XX<T &> { void fn(T t) {} };
%template(XXD) XX<DoubleRef>;

The type of the parameter in the instantiated template for fn is now correctly deduced
as double.

2023-01-03: wsfulton
983 Fix seg fault when instantiating templates with parameters that are function
parameters containing templates, such as:

%template(MyC) C<int(std::vector<int>)>;

2023-01-03: wsfulton
Complete support for C++11 variadic function templates. Support was previously limited
to just one template parameter. Now zero or more template parameters are supported
in the %template instantiation.

2022-12-29: wsfulton
1863 Syntax error fixes parsing more elaborate parameter pack arguments that are
used in function pointers, member function pointers:

template <typename... V> struct VariadicParms {
void ParmsFuncPtrPtr(int (*)(V*...)) {}
void ParmsFuncPtrPtrRef(int (*)(V*&...)) {}
void ParmsFuncPtrPtrRValueRef(int (*)(V*&&...)) {}
void ParmsFuncPtrRef(int (*)(V&...)) {}
void ParmsFuncPtrRValueRef(int (*)(V&&...)) {}

void ParmsMemFuncPtrPtr(int (KlassMemFuncs::*)(V*...)) {}
void ParmsMemFuncPtrPtrRef(int (KlassMemFuncs::*)(V*&...)) {}
void ParmsMemFuncPtrPtrRValueRef(int (KlassMemFuncs::*)(V*&&...)) {}
void ParmsMemFuncPtrRef(int (KlassMemFuncs::*)(V&...)) {}
void ParmsMemFuncPtrRValueRef(int (KlassMemFuncs::*)(V&&...)) {}
};

%template(VariadicParms0) VariadicParms<>;
%template(VariadicParms1) VariadicParms<A>;

Also in various other places such as within noexcept specifiers:

template<typename T, typename... Args>
void emplace(Args &&... args) noexcept(
std::is_nothrow_constructible<T, Args &&...>::value);

2022-12-27: wsfulton
Fix instantiation of variadic class templates containing parameter pack arguments that
are function pointers.

template <typename... V> struct VariadicParms {
void ParmsFuncPtrVal(int (*)(V...)) {}
};

%template(VariadicParms0) VariadicParms<>;
%template(VariadicParms1) VariadicParms<A>;

2022-12-23: wsfulton
1863 Fix syntax error parsing variadic templates containing parameter pack arguments that
are function pointers.

2022-12-22: wsfulton
Complete support for C++11 variadic class templates. Support was previously limited
to just one template parameter. Now zero or more template parameters are supported.

2022-12-06: wsfulton
1636 Fix syntax error for misplaced Doxygen comment after struct/class member.
Fix syntax error using Doxygen member groups syntax, "///*}", when used after
final struct/class member.

2022-12-05: wsfulton
2023 Fix garbled Doxygen post comments in parameter lists.
Fix syntax error parsing a trailing Doxygen comment in parameter lists.

2022-12-03: wsfulton
1609 Fix syntax error parsing of Doxygen comments after last enum item.

2022-12-03: wsfulton
1715 Fix syntax error parsing of unconventionally placed Doxygen post
comments for enum items.

2022-12-02: wsfulton
624 1021 Improved template template parameters support. Previously, specifying more
than one simple template template parameter resulted in a parse error. Now
multiple template template parameters are working including instantiation with
%template. Example:

template <template<template<class> class, class> class Op, template<class> class X, class Y>
class C { ... };

2022-11-26: wsfulton
1589 1590 Slightly better decltype() support for expressions, such as:

int i;
... decltype(&i) ...

These result in a warning for non-trivial expressions which SWIG cannot evaluate:

Warning 344: Unable to deduce decltype for '&i'.

See 'Type Inference' in CPlusPlus.html for workarounds.

2022-11-22: wsfulton
366 1037 Fix seg fault handling template parameter expressions
containing '<=' or '>='.

2022-11-18: wsfulton
Duplicate class template instantiations via %template now issue a warning and are ignored.

%template(Aint) A<int>;
%template(Aint2) A<int>; // Now ignored and issues a warning

example.i:7: Warning 404: Duplicate template instantiation of 'A< int >' with name 'Aint2' ignored,
example.i:6: Warning 404: previous instantiation of 'A< int >' with name 'Aint'.

A single empty template instantiation before a named instantiation is the one exception
for allowing duplicate template instantiations as the empty template instantiation does not
create a wrapper for the template, it merely adds the instantiation into SWIG's internal
type system.
Duplicate empty template instantiations are quietly ignored.

%template() B<int>;
%template(Bint) B<int>; // OK

%template() C<int>;
%template() C<int>; // Quietly ignored now
%template(Cint) C<int>; // OK

Note that default template parameters are considered when looking for duplicates such as:

template <typename T, typename U = short> struct D {};
%template(Dint) D<int>;
%template(Dintshort) D<int, short>;

example.i:7: Warning 404: Duplicate template instantiation of 'D< int,short >' with name 'Dintshort' ignored,
example.i:6: Warning 404: previous instantiation of 'D< int >' with name 'Dint'.

Note that the following always was ignored, but that was because the chosen name was a
duplicate rather than the template being a duplicate:

%template(Eint) E<int>;
%template(Eint) E<int>; // Always has been ignored as a redefined identifier

The old warning was:

example.i:7: Warning 302: Identifier 'Eint' redefined (ignored) (Renamed from 'E< int >'),
example.i:6: Warning 302: previous definition of 'Eint' (Renamed from 'E< int >').

*** POTENTIAL INCOMPATIBILITY ***

4.1.1

===========================

2022-11-29: bero
Fix mismatch between pragma GCC diagnostic push and pop statements

2022-11-26: wsfulton
2449 Fix undefined behaviour in ccache-swig calculating md4 hashes and possibly
also handling errors when CCACHE_CPP2 is set.

2022-11-25: wsfulton
961 Fix syntax error parsing unnamed template parameters with a default value.

2022-11-25: olly
2447 Fix undefined behaviour in swig's parser when handling
default parameter expressions containing method calls.

2022-11-13: olly
[PHP] 2419 Update the documentation to reflect that SWIG 4.1.0
dropped support for -noproxy when generating PHP wrappers.

2022-11-05: wsfulton
2417 Fix -swiglib for Windows when building with CMake.

2022-11-02: wsfulton
2418 Fix infinite loop handling non-type template parameters.

Fixes infinite loop due to () brackets in a non-type template
parameter containing an expression.

2022-10-28: wsfulton
[R] R rtypecheck typemaps

Further switch to use rtypecheck typemaps instead of hard coded logic.
The full switch to typemaps is deferred until swig-4.2 as it can't be fully
backwards compatible. For now a warning is provided to help the
transition. It provides the full typemap that should be placed into
a user's interface file, for example:

%typemap("rtype") int32_t * "integer"
void testmethod(int32_t * i);
void testmethod();

If there is no rtypecheck typemap for int32_t *, the warning shown is:

example.i:7: Warning 750: Optional rtypecheck code is deprecated. Add the
following typemap to fix as the next version of SWIG will not work without it:
%typemap("rtypecheck") int32_t * %{ (is.integer($arg) || is.numeric($arg)) %}

The warning is shown for any code that previously used "numeric", "integer" or
"character" for the rtype typemap. Copying the rtypecheck typemap as
shown into the user interface file will provide the appropriate fix and
the warning will disappear. This is important to do as swig-4.2 will
not be able to provide this helpful warning.

2022-10-27: wsfulton
[R] Allow NULL to be used in overloaded functions taking shared_ptr.
Also fixes special variable $argtype expansion in rtypecheck typemaps.

2022-10-26: wsfulton
[R] Improve R wrapper error message when calling overloaded methods
when incorrect types passed are passed to the overloaded methods.

Old unhelpful error message:
Error in f(...) : could not find function "f"

Example of new improved error message:
Error in use_count(k) :
cannot find overloaded function for use_count with argtypes (NULL)

2022-10-26: wsfulton
[R] 2386 Fix memory leak in R shared_ptr wrappers.
Fix leak when a cast up a class inheritance chain is required.

4.1.0

===========================

2022-10-24: wsfulton, AndLLA
[R] 2386 Fix problems in shared_ptr wrappers where the class names
were not consistent when using the shared_ptr template or the actual
underlying type.

2022-10-24: wsfulton
[R] Add support for special variable replacement in the $typemap()
special variable macro for R specific typemaps (rtype, rtypecheck,
scoercein, scoereout).

2022-10-24: wsfulton
[R] Polymorphism in the wrappers was only working for C++ classes,
now this works for C++ structs too.

2022-10-19: olly
[Lua] 2126 Fix type resolution between multiple SWIG-wrapped
modules.

2022-10-17: wsfulton
[R] 2385 Add support for std::vector<std::vector<std::string>>.

2022-10-14: murillo128
[Javascript] 2109 Tweak unsigned long and unsigned long long typemaps
to create a v8::Number instead of v8::Integer if the value exceeds
the size of v8::Integer. Note that the v8::Number value will be
imprecise if the value is > MAX_SAFE_INTEGER.

2022-10-14: olly
[R] Arrange that destructors of local C++ objects in the wrapper
function get run on SWIG_fail (which calls Rf_error() which calls
longjmp()).

2022-10-14: olly
[Lua] Arrange that destructors of local C++ objects in the wrapper
function get run on SWIG_fail (which calls lua_error() which calls
longjmp()).

2022-10-13: wsfulton
[R] Add missing SWIGTYPE *const& typemaps for supporting pointers
by const reference.

2022-10-10: wsfulton
2160 Fix compile error when using templates with more than one template
parameter and used as an input parameter in a virtual method in a
director class (problem affecting most of the scripting languages).

2022-10-10: treitmayr, wsfulton
[Python, Ruby] 1811 1823 Fix invalid code generated in some cases when
returning a pointer or reference to a director-enabled class instance.
This previously only worked in very simple cases, now return types are
resolved to fix. A bug in template instantiations using pointers also
works now.

2022-10-06: wsfulton
[CFFI] 1966 2200 Remove code for Common Lisp CFFI. We dropped support
for it in SWIG 4.0.0 by disabling it as the first stage. This is the
final stage for complete removal as there has been no meaningful
progress to revive it to the status of experimental language.

2022-10-06: olly
[Python] 2390 Remove deprecated and apparently useless defarg.swg

The only documentation is in the file itself and describes a Python
wrapper around the C function defined here, but digging though the
git history this Python wrapper doesn't seem to have ever actually
been generated by SWIG.

This file was also marked as deprecated in 2005.

2022-10-06: wsfulton
[Java] 2048 Fix quoting for doxygen \image command to quote the output
file name generated into the html src attribute.

2022-10-05: benjamin-sch
[Python] added an interpreter counter to fix deinitialization
issues if multiple subinterpreters are used

2022-10-05: olly, wsfulton
672 Add support for parsing C++11 final classes such as:

class X final {};

This no longer gives a syntax error.

2022-10-05: wsfulton
[OCaml] Fix %rename for enum items. Previously the rename had no effect.

2022-10-05: olly
1465 Report errors in preprocessor expressions by default

Until now SWIG quietly ignored such errors unless -Wextra (or -Wall
which implies -Wextra) was passed, but this is unhelpful as it tends
to hide genuine problems. To illustrate this point, enabling this
warning by default revealed a typo in the preproc_defined.i
testcase in SWIG's own testsuite.

If you really don't want to see this warning, you can suppress it
with command line option -w202 or by using this in your interface
file:

%warnfilter(SWIGWARN_PP_EVALUATION);

Both will work with older versions of SWIG too.

2022-10-04: olly
1050 Consistently define SWIG_VERSION both at SWIG-time and in
the generated wrapper. Best practice remains to check at SWIG-time
where possible because that results in smaller generated wrapper
sources.

SWIGGO and SWIGJAVASCRIPT are now defined in the generated wrappers
to match behaviour for all other target languages.

The undocumented SWIGVERSION macro is no longer defined.

2022-09-29: olly
2303 SWIG's internal hash tables now use a better hash function.

The old hash function only considerd the last five characters
plus the least significant bit of the last-but-sixth character,
which as you might guess generated a lot of many-way collisions.

This change seems to give about a 4% reduction in wallclock time
for processing li_std_list_wrap.i from the testsuite for Python.
The hash collision rate for this example drops from 39% to 0!

2022-09-29: wsfulton
2303 Type tables are now output in a fixed order whereas previously
the order may change with any minor input code change. This shouldn't
affect users except SWIG_TypePrettyName may output a different C/C++
typedef to a type - it's used mostly for showing errors when the type
passed to a function is wrong.

2022-09-29: olly
[PHP] Dynamic class properties are no longer supported by default.

Historically PHP has supported dynamic class properties and SWIG
has implemented them too (because we implement the magic __get(),
__set() and __isset() methods we need to include explicit
handling).

PHP 8.2 deprecates dynamic class properties - initially they'll
warn, and apparently they'll not work by default in PHP 9.0:
https://wiki.php.net/rfc/deprecate_dynamic_properties

In PHP code dynamic properties can be enabled for a class by
marking that class with the attribute `[AllowDynamicProperties]`.

To follow this PHP change, in SWIG you now need to specify
`%feature("php:allowdynamicproperties", 1) Foo;` (or
`%feature("php:allowdynamicproperties", 1)` to enable it for
all wrapped classes). Unknown features are ignored, so you can add
it unconditionally and it'll work with older SWIG too.

*** POTENTIAL INCOMPATIBILITY ***

2022-09-19: wsfulton
1484 Fixes for class inheritance with the same name in different namespaces
such as:

namespace A { class Bar {}; }
namespace B { template<typename T, typename U> class Bar : public A::Bar {}; }

2022-09-19: wsfulton
2316 Remove swig.spec file and srcrpm makefile target. These are very out of date
and don't seem to be used by RPM based Linux distributions which have their
own version of swig.spec.

2022-09-17: wsfulton
[Go, Guile, Racket, Scilab] Add throws typemaps for std::string so that thrown
string exception messages can be seen.

2022-09-17: wsfulton
[Racket] Add throws typemaps for char * so that thrown string exception
messages can be seen from Racket.

2022-09-17: wsfulton
[Javascript, Octave, R] Improve exceptions for %catches and exception
specifications for native types. String exception messages are shown as
the exception message instead of just the type of the exception.

2022-09-17: wsfulton
Add missing typecheck typemaps for std::auto_ptr and std::unique_ptr to
fix overloading when using these types.

2022-09-17: wsfulton
[Guile] Add error checking to SWIGTYPE and SWIGTYPE & in typemaps to prevent
seg faults when passing nil to these parameter types.

2022-09-16: wsfulton
999 Provide SWIGTYPE MOVE typemaps in swigmove.i for implementing full
move semantics when passing parameters by value.

2022-08-31: wsfulton
999 Improve move semantics when using rvalue references.
The SWIGTYPE && input typemaps now assume the object has been moved.

These typemaps have been changed assuming that after the function call,
the rvalue reference parameter has been moved. The parameter's proxy class
that owns the C++ object thus has the underlying pointer set to null
so that the (moved from, but still valid) C++ object cannot be used again
and the object is additionally deleted.

*** POTENTIAL INCOMPATIBILITY ***

2022-08-28: wsfulton
[Octave] SWIG now marshals a C/C++ NULL pointer into the null matrix, [].
SWIG has always marshalled the null matrix into a NULL pointer; this remains
and now we have consistency in representing a NULL pointer.

2022-08-26: wsfulton
[Racket] SWIG now marshals a C/C++ NULL pointer into a null value by calling
scheme_make_null(), so that scheme's null? is true for a NULL C/C++ pointer value.

2022-08-18: wsfulton
[Racket] Add support for std::unique_ptr in std_unique_ptr.i.
Add support for std::auto_ptr in std_auto_ptr.i.

2022-08-13: wsfulton
[Guile] Add support for std::unique_ptr in std_unique_ptr.i.
Add support for std::auto_ptr in std_auto_ptr.i.

2022-08-11: wsfulton
[Lua] Add support for std::unique_ptr in std_unique_ptr.i.
Add support for std::auto_ptr in std_auto_ptr.i.

2022-08-05: wsfulton
[D] Fix occasional undefined behaviour with inheritance hierarchies, particularly
when using virtual inheritance as the pointers weren't correctly upcast from derived
class to base class when stored in the base's proxy class.

2022-08-05: wsfulton
[D] Add support for std::unique_ptr in std_unique_ptr.i.
Add support for std::auto_ptr in std_auto_ptr.i.

2022-08-03: wsfulton
[Javascript] Add support for std::unique_ptr in std_unique_ptr.i.
Add support for std::auto_ptr in std_auto_ptr.i.

2022-08-02: wsfulton
[Octave] Add support for std::unique_ptr in std_unique_ptr.i.
Add support for std::auto_ptr in std_auto_ptr.i.

2022-08-01: wsfulton
[Python] Add initialisers for additional members in PyHeapTypeObject
(builtin mode) for Python-3.11 - _ht_tpname, _spec_cache.

2022-07-30: wsfulton
C++20 has deprecated std::basic_string<>::reserve() and the C++11 method
std::basic_string<>::shrink_to_fit() is a replacement that can be used.
std_string.i and std_wstring.i provided wrappers for reserve with the following
template instantiations:

%template(string) std::basic_string<char>;
%template(wstring) std::basic_string<wchar_t>;

The reserve method is no longer wrapped, however the shrink_to_fit() method
can be used as an alternative from the target language (the generated wrappers
call reserve() instead if C++<=20).

Note that std::basic_string<>::reserve(size_t n) is still wrapped unchanged.

*** POTENTIAL INCOMPATIBILITY ***

2022-07-30: wsfulton
[Tcl] Add support for std::unique_ptr in std_unique_ptr.i.
Add support for std::auto_ptr in std_auto_ptr.i.

2022-07-27: ZackerySpytz, olly
1678 Support parsing C++20 templated lambdas.

2022-07-27: ZackerySpytz, olly
1622 Add support for the C++20 spaceship operator (<=>).

2022-07-26: olly
[Tcl] https://sourceforge.net/p/swig/bugs/977/
Fix handling of long long on 32-bit platforms. This fix raises
SWIG's minimum supported Tcl version to 8.4.0 (which was released
just under 20 years ago).

2022-07-26: olly
Fix incorrect operator precedence in preprocessor expressions.

2022-07-25: olly
Support for C++14 binary integer literals in preprocessor expressions.

2022-07-20: wsfulton
[C, Java] Ensure the order of interfaces generated in proxy interfaces for the
%interface family of macros is the same as that parsed from the bases in C++.

2022-07-20: jicks, Ingener74, olly
422 [Python] Fix mishandling of a Python class inheriting from
multiple SWIG-wrapped director classes.

2022-07-19: wsfulton
692 [C, Java, Perl, Python, Ruby] std::unique_ptr and std::auto_ptr typemaps
provided for inputs types in std_unique_ptr.i and std_auto_ptr.i.

Now these smart pointers can be used as input parameters to functions. A proxy
class instance transfers memory ownership of the underlying C++ object from the
proxy class to a smart pointer instance passed to the wrapped function.

2022-07-19: jschueller
[Python] 2314 Drop support for Python 3.2.

2022-07-19: olly
Remove remaining support code for classic macos, which has not been
supported by Apple for over 20 years now.

2022-07-12: wsfulton
999 Performance optimisation for parameters passed by value that are C++11 movable.
The C++ wrappers create a temporary variable for a parameter to be passed to a
function. This is initially default constructed and then copy assigned from the
instance being passed in from the target language. This is unchanged, however,
when the temporary variable is passed to the wrapped function, it is now done using
std::move. If the type is move constructible, the move constructor will be used
instead of the copy constructor.

2022-07-12: wsfulton
[Perl] Add std::auto_ptr support in std_auto_ptr.i library file.

2022-07-12: erezgeva
[Perl] Add std::unique_ptr support in std_unique_ptr.i library file.

2022-07-07: jmarrec
1158 2286 Add basic support for C++11 attributes. These are now
crudely ignored by SWIG's parser's tokeniser, which is better than
failing with a parse error.

2022-07-05: ianlancetaylor
[Go] 2245 Handle NULL pointers for string* conversions.
Rearrange generation of director methods and rename
receiver argument from p to swig_p.

2022-07-03: wsfulton
999 Performance optimisation for directors for classes passed by value. The directorin
typemaps in the director methods now use std::move on the input parameter when
copying the object from the stack to the heap prior to the callback into the target
language, thereby taking advantage of move semantics if available.

2022-07-02: wsfulton
1722 [C, Java, Python, Ruby] Add std::unique_ptr support. Ported from std::auto_ptr.
Use the %unique_ptr(T) macro as follows for usage std::unique_ptr<T>. For example, for
a class called Klass:

%include "std_unique_ptr.i"
%unique_ptr(Klass)

Support is currently limited to only returning a std::unique_ptr from a function.

2022-06-29: wsfulton
999 1044 Enhance SWIGTYPE "out" typemaps to use std::move when copying
objects, thereby making use of move semantics when wrapping a function returning
by value if the returned type supports move semantics.

Wrapping functions that return move only types 'by value' now work out the box
without having to provide custom typemaps.

The implementation removed all casts in the "out" typemaps to allow the compiler to
appropriately choose calling a move constructor, where possible, otherwise a copy
constructor. The implementation also required modifying SwigValueWrapper to
change a cast operator from:

SwigValueWrapper::operator T&() const;

to

if __cplusplus >=201103L
SwigValueWrapper::operator T&&() const;
else
SwigValueWrapper::operator T&() const;
endif

This is not backwards compatible for C++11 and later when using the valuewrapper feature
if a cast is explicitly being made in user supplied "out" typemaps. Suggested change
in custom "out" typemaps for C++11 and later code:

1. Try remove the cast altogether to let the compiler use an appropriate implicit cast.
2. Change the cast, for example, from static_cast<X &> to static_cast<X &&>, using the
__cplusplus macro if all versions of C++ need to be supported.

*** POTENTIAL INCOMPATIBILITY ***

2022-06-15: wsfulton
2039 Add move assignment operator to SwigValueWrapper used by the
valuewrapper feature.

2022-06-04: sethrj
Enhance $typemap to support typemap attributes.

$typemap(method:attribute, typepattern)

For example:

%typemap(cstype, out="object") XClass "XClass"
%typemap(cscode) BarClass %{
$typemap(cstype:out, XClass) bar() {
return null;
}

which expands to

object bar() {
return null;
}

2022-05-30: wsfulton
[C, D] Add new special variable expansion: $imfuncname.
Expands to the function name called in the intermediary class.

2022-05-30: LindleyF
[Java] 2042 Add new special variable expansion: $imfuncname.
Expands to the function name called in the intermediary class.

2022-05-28: jkuebart
[Java] On some versions of Android, specifically Android 6,
detaching the current thread from the JVM after every invocation
causes a memory leak.

Offer SWIG_JAVA_DETACH_ON_THREAD_END to configure a behaviour
where the JVM is only detached in the thread destructor.

See https://developer.android.com/training/articles/perf-jni#threads.

2022-05-27: xypron
[Python] 2277 Define PY_SSIZE_T_CLEAN macro before include "Python.h" as
recommended in Python 3.7 and later.

To avoid this macro definition, add the following to your interface file so
that SWIG_NO_PY_SSIZE_T_CLEAN is defined at the beginning of the C++ wrappers:

%begin %{
define SWIG_NO_PY_SSIZE_T_CLEAN
%}

2022-05-26: rokups
[C] 1323 Modify SwigDerivedClassHasMethod for a more efficient director
implementation when calling virtual methods that are not overridden.

2022-05-15: erezgeva, eiselekd
[Lua, Perl, Octave, PHP, Tcl] 2275 2276 2283 Add argcargv.i library containing
(int ARGC, char **ARGV) multi-argument typemaps.

Document this library in Typemaps.html.

2022-05-07: KrisThielemans
[Python] Fix "too many initializers for 'PyHeapTypeObject'" errors
using PyPy 3.8 and later.

2022-05-04: wsfulton
[C] Add C wchar_t * director typemaps

2022-04-20: cminyard
Fix an issue where newlines were not properly generated
for godirectorin typemaps. If you have a virtual function
not assigned to zero, in some cases it won't generate a
newline and you will see errors:
example.go:1508:3: expected ';', found swig_r
when compiling the go code.

Also add an example of using goin and godirectorin and add
a test for this situation.

2022-04-29: jason-daly, JerryJoyce, wsfulton
[C] 1233 Add wchar_t * and std::wstring Unicode string support on Linux.

2022-04-11: robinst
2257 Fix new Ruby 3.2 warning "undefining the allocator of T_DATA
class swig_runtime_data".

2022-04-07: olly
1750 SWIG now recognises and ignores Doxygen group commands `{` and `}`.

2022-04-06: wsfulton
./configure now enables C++11 and later C++ standards testing by default (when
running: 'make check').

The options to control this testing are the same:

./configure --enable-cpp11-testing
./configure --disable-cpp11-testing

But the former is now the default and the latter can be used to turn off C++11 and
later C++ standards testing.

2022-04-06: wsfulton
[Python] 1635 The "autodoc" feature no longer overrides Doxygen comments
in the generated docstring.

If a "docstring" feature is present it will still override a Doxygen comment.
If the "autodoc" feature is also present, the combined "autodoc" and "docstring"
will override the Doxygen comment. If no "docstring" is present then the
"autodoc" feature will not be generated when there is a Doxygen comment.

This way the "autodoc" feature can be specified and used to provide documentation
for 'missing' Doxygen comments.

*** POTENTIAL INCOMPATIBILITY ***

2022-04-01: olly
Remove undocumented and non-functional -browse command line option.

2022-03-26: eltoder
[Python] 1684 Use different capsule names with and without -builtin

Types generated with and without -builtin are not compatible. Mixing
them in a common type list leads to crashes. Avoid this by using
different capsule names: "type_pointer_capsule" without -builtin and
"type_pointer_capsule_builtin" with.

2022-03-25: wsfulton
The debug command line options that display parse tree nodes
(-debug-module, -debug-top, -debug-symtabs) now display previously hidden
linked list pointers which are useful for debugging parse trees.

Added new command line option -debug-quiet. This suppresses the display
of most linked list pointers and symbol table pointers in the parse tree nodes.

The keys in the parse tree node are now shown in alphabetical order.

2022-03-24: wsfulton
2244 Fix using declaration in derived class bugs when all the base
class's overloaded methods were overridden in the derived class -
fixes "multiply defined" errors.

2022-03-23: wsfulton
[Python] 1779 The -py3 option is deprecated and now has no effect on the
code generated. Use of this option results in a deprecated warning.
The related SWIGPYTHON_PY3 macro that this option defined is no longer generated.

Note that %pythonnondynamic feature generates a metaclass that works on both
Python 2 and Python 3.

2022-03-21: wsfulton
[Python] 1779 pyabc.i for abstract base classes now supports versions of
Python prior to 3.3 by using the collection module for these older versions.
Python-3.3 and later continue to use the collections.abc module.
The -py3 option no longer has any effect on the %pythonabc feature.

2022-03-21: jschueller, jim-easterbrook, wsfulton
[Python] 2137 C++ static member functions no longer generate a "flattened"
name in the Python module. For example:

s = example.Spam()
s.foo() Spam::foo() via an instance
example.Spam.foo() Spam::foo() using class method
example.Spam_foo() Spam::foo() "flattened" name

The "flattened" name is no longer generated, but can be generated
by using the new -flatstaticmethod option.

*** POTENTIAL INCOMPATIBILITY ***

2022-03-18: ianlancetaylor
[Go] 337 Implement %extend base methods in child classes.

2022-03-17: olly
[Python] 1779 SWIG's Python test-suite and examples are now
run with Python 3 by default. To run them with Python 2, set
PY2 to a non-empty value, e.g.:

make check-python-test-suite PY2=1

2022-03-16: olly
[Go] 683 -intgosize is now optional - if not specified the
generated C/C++ wrapper code will use ptrdiff_t for intgo and
size_t for uintgo.

2022-03-15: ianlancetaylor
[Go] Add typemaps for std::string*.

2022-03-15: ianlancetaylor
[Go] Don't convert arrays to pointers if there is a "gotype"
typemap entry.

2022-03-15: ianlancetaylor
[Go] Add documentation note about Go and C++ exceptions.

2022-03-12: wsfulton
1524 %interface family of macros no longer contain the getter/setter
methods for wrapping variables. The interface only contains
virtual and non-virtual instance methods, that is, no static methods.
Enums are also no longer added to the interface (affects Java only where
they were missing from the proxy class, C never had them in the interface).

*** POTENTIAL INCOMPATIBILITY ***

2022-03-12: wsfulton
1277 Fixes for the family of %interface macros, %interface,
%interface_impl and %interface_custom fixes for overloaded methods
in an inheritance chain.

When C++ methods are not able to be overloaded in a derived class,
such as when they differ by just const, or the target language
parameters types are identical even when the C++ parameter types
are different, SWIG will ignore one of the overloaded methods with
a warning. A %ignore is required to explicitly ignore one of the
overloaded methods to avoid the warning message. Methods added
in the derived classes due to one of the %interface macros are now
similarly ignored/not added to the derived class.

The methods added to the derived classes can now also be modified
via %feature and %rename.

2022-03-08: ianlancetaylor
[Go] Treat a nil argument as a NULL pointer.

2022-03-08: ianlancetaylor
[Go] Add documentation notes about thread local storage.

2022-03-08: olly
1006 SWIG now copes with an interface filename specified on the
command line which contains a closing parenthesis `)`, and more
generally with attributes to `%include` and `%import` which
are quoted and contain parentheses.

2022-03-07: Omar Medina
[Tcl] https://sourceforge.net/p/swig/bugs/1290/
Fix SWIG_AsWCharPtrAndSize() to actually assign to result
variable. It looks like SWIG/Tcl wide character handling is
currently fundamentally broken except on systems which use wide
characters as the system encoding, but this should fix wrapping
functions which take a wide string as a parameter on Microsoft
Windows.

2022-03-07: olly
[Javascript] 682 Fix handling of functions which take void*.

2022-03-06: olly
SWIG should now reliably exit with status 0 if the run was
successful and status 1 if there was an error (or a warning and
-Werror was in effect).

Previously in some situations SWIG would try to exit with the
status set to the number of errors encountered, but that's
problematic - for example if there were 256 errors this would
result in exit status 0 on most platforms. Also some error
statuses have special meanings e.g. those defined by <sysexits.h>.
Also SWIG/Javascript tried to exit with status -1 in a few places
(which typically results in exit status 255).

2022-03-05: wsfulton
1441 Fix using declaration in derived class incorrectly introducing a method
from a base class when the using declaration is declared before the method
declaration. Problem occurred when within a namespace and the parameter types
in the method signatures were not fully qualified.

2022-03-05: ianlancetaylor
[Go] Treat non-const references as pointers.

2022-03-05: ianlancetaylor
In SWIG Go testsuite, fail test if "go build" fails.

2022-03-03: olly
1901 2223 SWIG should now always exit cleanly if memory
allocation fails, including removing any output files created
during the current run.

Previously most places in the code didn't check for a NULL return
from malloc()/realloc()/calloc() at all, typically resulting in
undefined behaviour; some places used assert() to check for a NULL
return (which is a misuse of assert() and such checks disappear if
built with NDEBUG defined leaving us back with undefined
behaviour).

2022-03-03: olly
891 Report errors for typemap attributes without a value
(previously SWIG segfaulted) and for typemap types with a value
(previously the value was quietly ignored).

The old way of specifying a language name in the typemap attributes
is no longer supported (it has been deprecated for 16 years).

2022-03-02: geographika, wsfulton
[Python] 1951 Add Python variable annotations support.

Both function annotations and variable annotations are turned on using the
"python:annotations" feature. Example:

%feature("python:annotations", "c");

struct V {
float val;
};

The generated code contains a variable annotation containing the C float type:

class V(object):
val: "float" = property(_example.V_val_get, _example.V_val_set)
...

Python 3.5 and earlier do not support variable annotations, so variable
annotations can be turned off with a "python:annotations:novar" feature flag.
Example turning on function annotations but not variable annotations globally:

%feature("python:annotations", "c");
%feature("python:annotations:novar");

or via the command line:

-features python:annotations=c,python:annotations:novar

*** POTENTIAL INCOMPATIBILITY ***

2022-02-27: wsfulton
[Python] 735 1561 Function annotations containing C/C++ types are no longer
generated when using the -py3 option. Function annotations support has been
moved to a feature to provide finer grained control. It can be turned on
globally by adding:

%feature("python:annotations", "c");

or by using the command line argument:

-features python:annotations=c

Also see entry dated 2022-03-02, regarding variable annotations.

*** POTENTIAL INCOMPATIBILITY ***

2022-02-26: wsfulton
655 1840 Add new warning WARN_LANG_USING_NAME_DIFFERENT to warn when a
method introduced by a using declaration in a derived class cannot
be used due to a conflict in names.

2022-02-24: olly
1465 An invalid preprocessor expression is reported as a pair of
warnings with the second giving a more detailed message from the
expression evaluator. Previously SWIG prefixed the second message
with "Error:" - that was confusing as it's actually only a warning
by default so we've now dropped this prefix.

Before:

x.i:1: Warning 202: Could not evaluate expression '1.2'
x.i:1: Warning 202: Error: 'Floating point constant in preprocessor expression'

Now:

x.i:1: Warning 202: Could not evaluate expression '1.2'
x.i:1: Warning 202: Floating point constant in preprocessor expression

2022-02-23: olly
1384 Fix a preprocessor expression evaluation bug. A
subexpression in parentheses lost its string/int type flag and
instead used whatever type was left in the stack entry from
previous use. In practice we mostly got away with this because
most preprocessor expressions are integer, but it could have
resulted in a preprocessor expression incorrectly evaluating as
zero. If -Wextra was in use you got a warning:

Warning 202: Error: 'Can't mix strings and integers in expression'

2022-02-21: davidcl
[Scilab] Improve 5.5.2, 6.0.0 and 6.1.0 support.

For Scilab 5, long names are reduced to small names preserving the
class prefix and accessor suffix (get or set).

For Scilab 6, long names with the class prefix and accessor suffix
should be used on the user code.

The `-targetversion` option has been removed as the generated code
now detects the Scilab version in loader.sce or builder.sce.

*** POTENTIAL INCOMPATIBILITY ***

2022-02-20: wsfulton
Fix %warnfilter warning suppress for warning 315 SWIGWARN_PARSE_USING_UNDEF.

2022-02-17: olly
[PHP] https://sourceforge.net/p/swig/bugs/1211/
Fix to call cleanup code in exception situations and not to invoke
the freearg typemap twice in certain situations.

2022-02-15: olly
300 368 Improve parser handling of % followed immediately by
an identifier. If it's not a recognised directive the scanner
now emits MODULO and then rescans what follows, and if the parser
then gives a syntax error we report it as an unknown directive.
This means that `a%b` is now allowed in an expression, and that
things like `%std::vector<std::string>` now give an error rather
than being quietly ignored.

2022-02-11: adr26
[Python] 2154 Fix memory leak.

SWIG python objects were being freed after the corresponding SWIG
module information was destroyed in Python 3, causing leaks when as
a result the object destructor could not be invoked. To prevent this
misordering, SWIG python objects now obtain a reference to the
Python capsule wrapping the module information, so that the module
information is correctly destroyed after all SWIG python objects
have been freed (and corresponding destructors invoked).

2022-02-10: olly
[Tcl] https://sourceforge.net/p/swig/bugs/1207/
https://sourceforge.net/p/swig/bugs/1213/

Fix Tcl generic input typemap for std::vector.

2022-02-07: sethrj
2196 Add alternative syntax for specifying fragments in typemaps.

New syntax:
%typemap("in", fragment="frag1", fragment="frag2", fragment="frag3") {...}
which is equivalent to:
%typemap(in, fragment="frag1,frag2,frag3") {...}


2022-02-07: olly
1806 Remove support for the "command" encoder, which was mostly
intended for use in `%rename` - most uses can be achieved using
the "regex" encoder, so we recommend using that instead.

The "command" encoder suffers from a number of issues - as the
documentation for it admitted, "[it] is extremely slow compared to
all the other [encoders] as it involves spawning a separate process
and using it for many declarations is not recommended" and that it
"should generally be avoided because of performance
considerations".

But it's also not portable. The design assumes that `/bin/sh`
supports `<<<` but that's a bash-specific feature so it doesn't
work on platforms where `/bin/sh` is not bash - it fails on
Debian, Ubuntu and probably some other Linux distros, plus most
non-Linux platforms. Microsoft Windows doesn't even have a
/bin/sh as standard.

Finally, no escaping of the passed string is done, so it has
potential security issues (though at least with %rename the input
is limited to valid C/C++ symbol names).

2022-02-06: olly
2193 -DFOO on the SWIG command line now sets FOO to 1 for
consistency with C/C++ compiler preprocessors. Previously
SWIG set FOO to an empty value.

Existing invocations of SWIG with `-DFOO` where the empty value
matters can be updated to `-DFOO=` which should work with both
old and new releases of SWIG.

*** POTENTIAL INCOMPATIBILITY ***

2022-02-06: sethrj
2194 Classes that are non-assignable due to const data or const
reference members are now automatically detected.

2022-02-04: friedrichatgc
[Octave] 1672 Fix for isobject for Octave 4.4 - 6.0.

2022-02-03: olly
[C] 283 998 Fix memory leak in directorin typemap for
std::string.

2022-02-03: olly
[Python] 967 Make `self` parameter available to user typemaps.

2022-02-03: teythoon
[Python] 801 Fix -Wunused-parameter warnings with builtin,

2022-02-03: teythoon
801 Fix -Wstrict-prototypes warnings in generated pointer
functions.

2022-02-03: olly
660 https://sourceforge.net/p/swig/bugs/1081/
Default parameter values containing method calls are now parsed and
handled - e.g. `x->foo(3,4)` and `y.z()`.

2022-02-02: olly
[Ruby] https://sourceforge.net/p/swig/bugs/1136/ Fix remove of prefix
from method name to only remove it at the start.

2022-02-01: olly
231 Handle returning an object by reference in a C++ trailing
return type.

2022-02-01: davidcl
[Scilab] 745 use SWIG_<module>_Init() as a C module init function.

2022-02-01: olly
[OCaml] 2083 Fix to work when CAML_SAFE_STRING is on, which it is
by default in recent Ocaml releases.

2022-01-31: mreeez
https://sourceforge.net/p/swig/bugs/1147/
Fix copyToR() generated for a struct in a namespace.

2022-01-29: fschlimb
655 Better handling of using declarations.

2022-01-29: dontpanic92
[Go] 676 Fix code generated for a C++ class with a non-capitalised
name.

2022-01-26: trex58
1919 1921 1923 Various fixes for AIX portability.

2022-01-26: olly
1935 Don't crash on an unclosed HTML tag in a doxygen comment
when -doxygen is specified.

2022-01-25: olly
Constant expressions now support member access with `.` such as
`foo.bar`. Previous this only worked in a case like `x->foo.bar`.

2022-01-25: olly
2091 Support most cases of `sizeof` applied to an expression
in constant expressions. Previously there was only support for
`sizeof(<type>)` and expressions which syntactically look like a
type (such as `sizeof(foo)`).

2022-01-25: olly
80 635 https://sourceforge.net/p/swig/bugs/1139/
Add support for parsing common cases of `<` and `>` comparisons
in constant expressions. Adding full support for these seems hard
to do without introducing conflicts into the parser grammar, but in
fact all reported cases have had parentheses around the comparison
and we can support that with a few restrictions on the left side of
`<`.

2022-01-25: wsfulton
New warning 327 for extern templates, eg:

extern template class std::vector<int>;
extern template void Func<int>();

results in warning

example.i:3: Warning 327: Extern template ignored.
example.i:4: Warning 327: Extern template ignored.

Extern template classes previously resulted in warning 320.

2022-01-24: romintomasetti
2131 2157 C++11 extern function template parsing error fix.

2022-01-21: wsfulton
2120 2138 Replace legacy PCRE dependency with PCRE2.
This requires changes for building SWIG from source. See updated
html documentation in Preface.html and Windows.html. Updated
instructions are also shown when running ./configure if PCRE2 is not
found. Note that debian based systems can install PCRE2 using:

apt install libpcre2-dev

Note that https://github.com/swig/swig/wiki/Getting-Started also has
updated information for building from source.

2022-01-19: olly
[PHP] 2027 Automatically generate PHP type declarations for PHP 8.
The generate code still compiles for PHP 7.x, but without type
declarations since PHP 7.x has much more limited type declaration
support.

2022-01-18: olly
[Perl] 1629 Perl 5.8.0 is now the oldest version we aim to support.

2022-01-14: wsfulton
[Python] Fix %callback and specifying the callback function as a
static member function using Python staticmethod syntax, such as
Klass.memberfunction instead of Klass_memberfunction when using
-builtin and -fastproxy.

2022-01-11: wsfulton
[Python] Accept keyword arguments accessing static member functions when
using -builtin and kwargs feature and Python class staticmethod syntax.
The missing keyword argument support was only when using the
class staticmethod syntax, such as Klass.memberfunction, and not when
using the flat static method syntax, such as Klass_memberfunction.

2022-01-04: juierror
[Go] 2045 Add support for std::array in std_array.i.

2021-12-18: olly
[PHP] Add PHP keyword 'readonly' (added in 8.1) to the list SWIG
knows to automatically rename. This keyword is special in that PHP
allows it to be used as a function (or method) name.

2021-12-07: vstinner
[Python] 2116 Python 3.11 support: use Py_SET_TYPE()

2021-12-05: rwf1
[Octave] 2020 1893 Add support for Octave 6 up to and including 6.4.
Also add support for compiling with -Bsymbolic which is used by default
by mkoctfile.

2021-12-02: jsenn
[Python] 2102 Fixed crashes when using embedded Python interpreters.

2021-11-12: wsfulton
[Javascript] v8 and node only. Fix mismatched new char[] and free()
when wrapping C code char arrays. Now calloc is now used instead of
new char[] in SWIG_AsCharPtrAndSize.

2021-10-03: ajrh1
[Perl] 2074: Avoid -Wmisleading-indentation in generated code
when using gcc11.

2021-10-03: jschueller
[CMake] 2065: Add option to enable or disable PCRE support.

2021-09-16: ianlancetaylor
[Go] Improved _cgo_panic implementation.

2021-09-16: ianlancetaylor
[Go] Don't use crosscall2 for panicking. Instead rely on documented
and exported interfaces.

2021-09-14: ianlancetaylor
[Go] Remove -no-cgo option (long unsupported in Go)

2021-05-04: olly
[PHP] 2014 Throw PHP exceptions instead of using PHP errors

PHP exceptions can be caught and handled if desired, but if they
aren't caught then PHP exits in much the same way as it does for a
PHP error.

In particular this means parameter type errors and some other cases
in SWIG-generated wrappers now throw a PHP exception, which matches
how PHP's native parameter handling deals with similar situations.

`SWIG_ErrorCode()`, `SWIG_ErrorMsg()`, `SWIG_FAIL()` and `goto thrown;`
are no longer supported (these are really all internal implementation
details and none are documented aside from brief mentions in CHANGES
for the first three). I wasn't able to find any uses in user interface
files at least in FOSS code via code search tools.

If you are using these:

Use `SWIG_PHP_Error(code,msg);` instead of `SWIG_ErrorCode(code);
SWIG_ErrorMsg(msg);` (which will throw a PHP exception in SWIG >= 4.1
and do the same as the individual calls in older SWIG).

`SWIG_FAIL();` and `goto thrown;` can typically be replaced with
`SWIG_fail;`. This will probably also work with older SWIG, but
please test with your wrappers if this is important to you.

*** POTENTIAL INCOMPATIBILITY ***

2021-05-17: adr26
[Python] 1985 Fix memory leaks:

1. Python object references were being incorrectly retained by
SwigPyClientData, causing swig_varlink_dealloc() never to run / free
memory. SwigPyClientData_New() / SwigPyClientData_Del() were updated
to fix the object reference counting, causing swig_varlink_dealloc()
to run and the memory swig_varlink owns to be freed.

2. SwigPyClientData itself was not freed by SwigPyClientData_Del(),
causing another heap leak. The required free() was added to
SwigPyClientData_Del()

3. Fix reference counting/leak of python cached type query

4. Fix reference counting/leak of SwigPyObject dict (-builtin)

5. Python object reference counting fixes for out-of-memory
scenarios were added to: SWIG_Python_RaiseOrModifyTypeError(),
SWIG_Python_AppendOutput(), SwigPyClientData_New(),
SwigPyObject_get___dict__() and SwigPyObject_format()

6. Add error handling for PyModule_AddObject() to
SWIG_Python_SetModule() (failure could be caused by OOM or a name
clash caused by malicious code)

2021-05-13: olly
[UFFI] 2009 Remove code for Common Lisp UFFI. We dropped support
for it in SWIG 4.0.0 and nobody has stepped forward to revive it in
over 2 years.

2021-05-13: olly
[S-EXP] 2009 Remove code for Common Lisp S-Exp. We dropped
support for it in SWIG 4.0.0 and nobody has stepped forward to
revive it in over 2 years.

2021-05-13: olly
[Pike] 2009 Remove code for Pike. We dropped support for it in
SWIG 4.0.0 and nobody has stepped forward to revive it in over 2
years.

2021-05-13: olly
[Modula3] 2009 Remove code for Modula3. We dropped support for it
in SWIG 4.0.0 and nobody has stepped forward to revive it in over 2
years.

2021-05-13: olly
[CLISP] 2009 Remove code for GNU Common Lisp. We dropped support
for it in SWIG 4.0.0 and nobody has stepped forward to revive it in
over 2 years.

2021-05-13: olly
[Chicken] 2009 Remove code for Chicken. We dropped support for it
in SWIG 4.0.0 and nobody has stepped forward to revive it in over 2
years.

2021-05-13: olly
[Allegrocl] 2009 Remove code for Allegro Common Lisp. We dropped
support for it in SWIG 4.0.0 and nobody has stepped forward to
revive it in over 2 years.

2021-05-04: olly
[PHP] 1982 1457 https://sourceforge.net/p/swig/bugs/1339/
SWIG now only use PHP's C API to implement its wrappers, and no
longer generates PHP code to define classes. The wrappers should
be almost entirely compatible with those generated before, but
faster and without some previously hard-to-fix bugs.

The main notable difference is SWIG no longer generates a .php
wrapper at all by default (only if %pragma(php) code=... or
%pragma(php) include=... are specified in the interface file).
This also means you need to load the module via extension=...
in php.ini, rather than letting the dl() in the generated
.php wrapper load it (but dl() has only worked for command-line
PHP for some years now).

*** POTENTIAL INCOMPATIBILITY ***

2021-04-30: olly
1984 Remove support for $source and $target.
These were officially deprecated in 2001, and attempts to use them have
resulted in a warning (including a pointer to what to update them to)
for most if not all of that time.

2021-04-27: wsfulton
1987 [Java] Fix %interface family of macros for returning by const
pointer reference.

2021-04-19: olly
Fix use of uninitialised variable in the generated code for an
empty typecheck typemap, such as the dummy one we include for
std::initializer_list.

2021-04-12: olly
1777 [Python] Specifying -py3 now generates a check for Python
version >= 3.0.

2021-03-26: olly
[PHP] Add PHP keywords 'fn' (added in 7.4) and 'match' (added in
8.0) to the list SWIG knows to automatically rename.

2021-03-23: wsfulton
1942 [Python] Fix compilation error in wrappers when using -builtin
and wrapping varargs in constructors.

2021-03-22: goto40
1977 Fix handling of template template parameters.

2021-03-21: olly
1929, 1978 [PHP] Add support for PHP 8.

2021-03-19: wsfulton
1610 Remove -ansi from default compilation flags.

2021-03-19: dot-asm
1934 [Java] Clean up typemaps for long long arrays.

2021-03-19: olly
1527 [PHP] Improve PHP object creation in directorin case.
Reportedly the code we were using in this case gave segfaults in
PHP 7.2 and later - we've been unable to reproduce these, but the
new approach is also simpler and should be bit faster too.

2021-03-18: olly
1655 [PHP] Fix char* typecheck typemap to accept PHP Null like the
corresponding in typemap does.

2021-03-18: olly
1900, 1905 [PHP] Fix wrapping of overloaded directed methods with
non-void return.

2021-03-11: murillo128
1498 [Javascript] Support type conversion.

2021-03-06: nshmyrev
872 [Javascript] Various typemap issues in arrays_javascript.i fixed.

2021-03-03: vaughamhong
577 [Javascript] Implemented SetModule/GetModule for JSC to allow type sharing
across modules.

2021-03-01: xantares, Oliver Buchtala, geographika
1040 Add support for building SWIG with CMake. See documentation in Windows.html.

2021-03-01: vadz
1952 Fix incorrect warning "Unknown Doxygen command: ."

2021-02-28: p2k
969 [Javascript] v8/node - prevent crash calling a constructor without new keyword.

2021-02-28: alecmev
405 1121 [Javascript] Fix OUTPUT typemaps on methods that don't return void.
The output value is appended to the return value.

2021-02-26: murillo128, wsfulton
1269 [Javascript] Fix handling of large positive unsigned long and
unsigned long long values.

2021-02-24: tomleavy, yegorich, tungntpham
1746 [Javascript] Add support for Node v12, v14 and v16.
SWIG support for Node is now for v6 and later only.

2020-02-09: ZackerySpytz
1872 Fix typos in attribute2ref macros.

2020-10-10: wsfulton
[Javascript] Fix so that ccomplex.i interface to file can be used.

2020-10-10: wsfulton
252 complex can now be used as a C identifier and doesn't give a syntax error.

2020-10-10: lpsinger
1770 Correct C complex support.
_Complex is now parsed as a keyword rather than complex as per the C99 standard.
The complex macro is available in the ccomplex.i library file along with other
complex number handling provided by the complex.h header.

2020-10-07: ZackerySpytz
[Python] 1812 Fix the error handling for the PyObject_GetBuffer() calls in
pybuffer.i.

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 by removing an
incorrect space in the function name (for example, operator= = is now operator==).

4.0.2

==========================

2020-06-07 vigsterkr
[Ruby] 1717 Nil fix mangling strings

2020-06-07 vadz
1748 Fix doxygen comments quoting issue

2020-06-07 munoah
1800 Escape spaces in file paths for dependencies (-M -MM etc)

2020-06-06 andreas-schwab
[Ruby] 1801 Fix encoding on big endian systems when wrapping std::wstring.

2020-05-31 kwwette
[Octave] 1789 error handling improvements and return error code on exit for SWIG wrapped modules.

2020-05-30 msteinbeck
[D] 1593 Replace broken imports when using newer versions of D.

2020-05-29: ZackerySpytz
[Python] 1716 Performance improvements when converting strings when using Python >= 3.3.

2020-05-28: ZackerySpytz
1776 Quite dramatically decrease run times when generating very large interface files by changing
some internal memory pool sizes.

2020-05-28: mcfarljm
1788 Fix handling of Doxygen \endlink command.

2020-05-24: vapier
[Javascript] 1796 Fix pkg-config invocation in configure.

2020-04-30: kwwette
[Octave] Fix exception raising for newer Octave versions
Since (at least) Octave 5.1.0, the Octave error() function now raises a C++ exception,
which if uncaught immediately exits a SWIG wrapper function, bypassing any cleanup code
that may appear after a "fail:" label. This patch adds a "try { ... } catch(...) { }"
block around the contents of SWIG wrapper functions to first execute the cleanup code
before rethrowing any exception raised. It is backward compatible with earlier versions
of Octave where error() does not raise an exception, which will still branch to the
"fail:" block to execute cleanup code if an error is encountered.

Note that the new "try { ... } catch(...) { }" block will localise any local variables
used in typemaps that were NOT declared through SWIG's %typemap(...) syntax, so it's
possible this could break existing SWIG wrappers which were implicitly sharing local
variables between typemaps. This can be fixed, however, by declaring local variables
which need to be shared between typemaps through SWIG's %typemap(...) syntax.

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 The Python C API functions PyBytes_AsStringAndSize() and
PyString_AsStringAndSize() are now checked for failure.

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

4.0.1

===========================

2019-08-20: TekuConcept
[Javascript] 1535 Add %native support to Javascript.

2019-08-20: bkotzz
[Java] 1616 Add SWIG_JavaIllegalStateException to support throwing
java.lang.IllegalStateException from JNI code.

2019-08-19: sjml
[Lua] 1596 tostring output changes to show the underlying C/C++ pointer.

2019-08-08: rokups
[C, Java] 1601 Fix invalid code generated for "%constant enum EnumType.

2019-08-07: wsfulton
[Python] Fix method overloading of methods that take STL containers of different
types. The following usage (using std::vector) would fail when using -builtin:

%include <std_string.i>
%include <std_vector.i>

%inline %{
struct X {};
%}

%template(VectorX) std::vector<X>;
%template(VectorInt) std::vector<int>;

%inline %{
using namespace std;
string VectorOverload(vector<X> v);
string VectorOverload(vector<int> v);
%}

The following would incorrectly fail:

s = VectorOverload([1, 2, 3])

With:

Traceback (most recent call last):
File "runme3.py", line 20, in <module>
ret = VectorOverload([1, 2, 3])
TypeError: Wrong number or type of arguments for overloaded function 'VectorOverload'.
Possible C/C++ prototypes are:
VectorOverload(std::vector< Number,std::allocator< Number > >)
VectorOverload(std::vector< int,std::allocator< int > >)

The problem was due to some error handling that was not cleared during typechecking.
In this case an error was not cleared when the elements in the list failed the
typecheck for converting to X. Only occurs in Python 3+.

In some combinations of overloaded methods, the following type of error message would
occur:

RuntimeError: in sequence element 0

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "runme3.py", line 23, in <module>
check(VectorOverload(v), "vector<X>")
SystemError: <built-in function VectorOverload> returned a result with an error set

2019-08-01: wsfulton
1602 Fix regression in 4.0.0 where a template function containing a parameter
with the same name as the function name led to the parameter name used in the
target language being incorrectly modified.

2019-07-29: wsfulton
Remove all generated files on error. Previously generated files were not removed,
potentially breaking Makefiles using file dependencies, especially when -Werror
(warnings as errors) was used.

2019-07-23: smithx
[C] 1530 1532 Fix marshalling of std::wstring to C.

2019-07-18: gicmo
[Python] 1587 Python 3.8 support - remove use of deprecated PyObject_GC_UnTrack.

2019-07-18: cher-nov
[Python] 1573 Generated Python code uses consistent string quoting style - double
quotes.

2019-07-16: geefr
[C] 616 1576 Fix C bool INPUT[], bool OUTPUT[], bool INOUT[] typemaps to marshall
as 1-byte.

2019-07-12: vadz
[C, Java] 1568 1583 Fix std::set<> typemaps for primitive types.

2019-07-12: vadz
1566 1584 Regression in 4.0.0 - fix missing value for first item of enums with
trailing comma.

2019-07-11: mcfarljm
1548 1578 Fix segfault in Doxygen parser parsing empty lines in some commands like
\code.

2019-07-09: IsaacPascual
[C, Java] 1570 Fix name of generated C/Java classes for %interface macros
in swiginterface.i when wrapping nested C++ classes.

2019-07-05: wsfulton
[Python] 1547 Whitespace fixes in Doxygen translated comments into pydoc comments
for Sphinx compatibility.

2019-06-28: wsfulton
[MzScheme, OCaml] 1559 $arg and $input were incorrectly substituted in the
argout typemap when two or more arguments were present.

2019-06-24: wsfulton
[Python, Ruby] 1538 Remove the UnknownExceptionHandler class in order to be
C++17 compliant as it uses std::unexpected_handler which was removed in C++17.
This class was intended for director exception handling but was never used by
SWIG and was never documented.

*** POTENTIAL INCOMPATIBILITY ***

2019-06-06: bkotzz
[Java] 1552 Improve performance in Java std::vector constructor wrapper that takes
a native Java array as input.

2019-06-03: olly
[Python] Fix regression in implicit_conv handling of tuples,
introduced in SWIG 4.0.0. Fixes 1553, reported by Alexandre
Duret-Lutz.

2019-05-24: wsfulton
[Octave] Fix detection of Octave on MacOS.

2019-05-24: opoplawski
[Octave] 1522 Adapt OCTAVE_LDFLAGS for Octave 5.1.

2019-05-22: ferdynator
[PHP] 1528 Don't add a closing '?>' PHP tag to generated files.
PSR-2 says it MUST be omitted for files containing only PHP.

Page 1 of 13

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.