1. Fix negative octals. Currently not handled correctly by `-py3`
(unusual case, but incorrect).
2. Fix arguments of type "octal + something" (e.g. `0640 | 04`).
Currently drops everything after the first octal. Nasty!
3. Fix bool arguments "0 + something" (e.g. `0 | 1`) are always
"False" (unusual case, but incorrect).
4. Remove special handling of "TRUE" and "FALSE" from
`convertValue` since there's no reason these have to match
"true" and "false".
5. Remove the Python 2 vs. Python 3 distinction based on the
`-py3` flag. Now the same python code is produced for default
arguments for Python 2 and Python 3. For this, octal default
arguments, e.g. 0644, are now wrapped as `int('644', 8)`. This
is required, as Python 2 and Python 3 have incompatible syntax
for octal literals.
Fixes #707
196 lines
8.3 KiB
Text
196 lines
8.3 KiB
Text
Below are the changes for the current release.
|
|
See the CHANGES file for changes in older releases.
|
|
See the RELEASENOTES file for a summary of changes in each release.
|
|
Issue # numbers mentioned below can be found on Github. For more details, add
|
|
the issue number to the end of the URL: https://github.com/swig/swig/issues/
|
|
|
|
Version 4.0.0 (in progress)
|
|
===========================
|
|
|
|
2017-06-23: m7thon
|
|
[Python] fix and improve default argument handling:
|
|
|
|
1. Fix negative octals. Currently not handled correctly by `-py3`
|
|
(unusual case, but incorrect).
|
|
2. Fix arguments of type "octal + something" (e.g. `0640 | 04`).
|
|
Currently drops everything after the first octal. Nasty!
|
|
3. Fix bool arguments "0 + something" (e.g. `0 | 1`) are always
|
|
"False" (unusual case, but incorrect).
|
|
4. Remove special handling of "TRUE" and "FALSE" from
|
|
`convertValue` since there's no reason these have to match
|
|
"true" and "false".
|
|
5. Remove the Python 2 vs. Python 3 distinction based on the
|
|
`-py3` flag. Now the same python code is produced for default
|
|
arguments for Python 2 and Python 3. For this, octal default
|
|
arguments, e.g. 0644, are now wrapped as `int('644', 8)`. This
|
|
is required, as Python 2 and Python 3 have incompatible syntax
|
|
for octal literals.
|
|
|
|
Fixes #707
|
|
|
|
2017-06-19: wsfulton
|
|
[Python] Fix handling of rich comparisons when wrapping overloaded operators:
|
|
|
|
operator< operator<= operator> operator>= operator== operator!=
|
|
|
|
Previously a TypeError was always thrown if the type was not correct. NotImplemented
|
|
is now returned from these wrapped functions if the type being compared with is
|
|
not correct. The subsequent behaviour varies between different versions of Python
|
|
and the comparison function being used, but is now consistent with normal Python
|
|
behaviour. For example, for the first 4 operator overloads above, a TypeError
|
|
'unorderable types' is thrown in Python 3, but Python 2 will return True or False.
|
|
NotImplemented should be returned when the comparison cannot be done, see PEP 207 and
|
|
https://docs.python.org/3/library/constants.html#NotImplemented
|
|
|
|
Note that the bug was only present when overloaded operators did not also have a
|
|
function overload.
|
|
|
|
Fixes SF bug #1208 (3441262) and SF patch #303.
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2017-06-17: fabrice102
|
|
[Go] Fix Go callback example. Fixes github #600, #955, #1000.
|
|
|
|
2017-06-16: wsfulton
|
|
Make sure warning and error messages are not split up by other processes writing to
|
|
stdout at the same time.
|
|
|
|
2017-06-16: wsfulton
|
|
[R] Fix wrapping function pointers containing rvalue and lvalue reference parameters.
|
|
|
|
2017-06-13: olly
|
|
[Perl] Fix testsuite to work without . in @INC - it was removed in
|
|
Perl 5.26 for security reasons, and has also been removed from
|
|
older versions in some distros. Fixes
|
|
https://github.com/swig/swig/issues/997 reported by lfam.
|
|
|
|
2017-06-03: wsfulton
|
|
Fix %import on a file containing a file scope %fragment forced inclusion to not
|
|
generate the fragment contents as %import should not result in code being generated.
|
|
The behaviour is now the same as importing code insertion blocks.
|
|
Wrapping FileC.i in the following example will result in no generated code, whereas
|
|
previously "#include <limits.h>" was generated:
|
|
|
|
// FileA.i
|
|
%fragment("<limits.h>", "header") %{
|
|
#include <limits.h>
|
|
%}
|
|
|
|
%{
|
|
#include <stdio.h>
|
|
%}
|
|
%fragment("<limits.h>");
|
|
|
|
// FileC.i
|
|
%import "FileA.i"
|
|
|
|
*** POTENTIAL INCOMPATIBILITY ***
|
|
|
|
2017-05-26: Volker Diels-Grabsch, vadz
|
|
[Java] #842 Extend from java.util.AbstractList<> and implement java.util.RandomAccess for
|
|
std::vector wrappers. This notably allows to iterate over wrapped vectors in a natural way.
|
|
2017-05-30: davidcl
|
|
[Scilab] #994 Undefined symbol error when loading in Scilab 6
|
|
|
|
2017-05-25: asibross
|
|
[Java] #370 #417 Missing smart pointer handling in Java director extra methods
|
|
swigReleaseOwnership() and swigTakeOwnership().
|
|
|
|
2017-05-23: wsfulton
|
|
[Java] #230 #759 Fix Java shared_ptr and directors for derived classes java compilation
|
|
error.
|
|
|
|
For shared_ptr proxy proxy classes, add a protected method swigSetCMemOwn for modifying
|
|
the swigCMemOwn and swigCMemOwnDerived member variables which are used by various other
|
|
methods for controlling memory ownership.
|
|
|
|
2017-05-21: Sghirate
|
|
[Java, C#, D] #449 Remove unnecessary use of dynamic_cast in directors to enable
|
|
non-RTTI compilation.
|
|
|
|
2017-05-21: wsfulton
|
|
[Python] #993 Fix handling of default -ve unsigned values, such as:
|
|
void f(unsigned = -1U);
|
|
|
|
2017-05-20: jschueller
|
|
[Python] #991 Fix E731 PEP8 warning: do not assign a lambda expression
|
|
|
|
2017-05-16: nihal95
|
|
[PHP] Add %pragma version directive to allow the version of the
|
|
extension to be set. Patch #970, fixes #360.
|
|
|
|
2017-05-13: yag00
|
|
Patch #975 - Add support for noexcept on director methods.
|
|
|
|
2017-04-27: redbrain
|
|
Issue #974, Patch #976 - Fix preprocessor handling of macros with commas in a comment.
|
|
|
|
2017-04-25: jleveque
|
|
[Lua] #959 - Fix Visual Studio C4244 conversion warnings in Lua wrappers.
|
|
|
|
2017-04-21: tamuratak
|
|
[Ruby] #964 - Add shared_ptr director typemaps.
|
|
|
|
2017-04-20: wsfulton
|
|
[Ruby] #586, #935 Add assert for invalid NULL type parameter when calling SWIG_Ruby_NewPointerObj.
|
|
|
|
2017-04-20: tamuratak
|
|
[Ruby] #930, #937 - Fix containers of std::shared_ptr.
|
|
Upcasting, const types (eg vector<shared_ptr<const T>>) and NULL/nullptr support added.
|
|
|
|
2017-04-12: smarchetto
|
|
[Scilab] New parameter targetversion to specify the Scilab target version (5, 6, ..) for code generation
|
|
With Scilab 6 target specified, identifier names truncation is disabled (no longer necessary)
|
|
|
|
2017-03-24: tamuratak
|
|
[Ruby] Fix #939 - Wrapping std::vector<bool> fix due to incorrect null checks
|
|
on VALUE obj.
|
|
|
|
2017-03-17: vadz
|
|
[C#] #947 Add support for std::complex<T>
|
|
|
|
2017-03-17: wsfulton
|
|
[Go] Fix handling of typedef'd function pointers and typedef'd member function pointers
|
|
such as:
|
|
|
|
typedef int (*FnPtr_td)(int, int);
|
|
int do_op(int x, int y, FnPtr_td op);
|
|
|
|
2017-03-16: wsfulton
|
|
Add support for member const function pointers such as:
|
|
|
|
int fn(short (Funcs::* parm)(bool)) const;
|
|
|
|
Also fix parsing of references/pointers and qualifiers to member
|
|
pointers such as:
|
|
|
|
int fn(short (Funcs::* const parm)(bool));
|
|
int fn(short (Funcs::* & parm)(bool));
|
|
|
|
2017-03-10: wsfulton
|
|
Extend C++11 alternate function syntax parsing to support const and noexcept, such as:
|
|
|
|
auto sum1(int x, int y) const -> int { return x + y; }
|
|
auto sum2(int x, int y) noexcept -> int { return x + y; }
|
|
|
|
2017-02-29: tamuratak
|
|
[Ruby] #917 - Add Enumerable module to all container class wrappers. It was missing
|
|
for std::list, std::multiset, std::unordered_multiset and std::unordered_map.
|
|
|
|
2017-02-27: assambar
|
|
[C++11] Extend parser to support throw specifier in combination
|
|
with override and/or final.
|
|
|
|
2017-02-10: tamuratak
|
|
[Ruby] #883 - Add support for C++11 hash tables:
|
|
std::unordered_map
|
|
std::unordered_set
|
|
std::unordered_multimap
|
|
std::unordered_multiset
|
|
|
|
2017-02-08: jcsharp
|
|
[C#] #887 Improve std::vector<T> wrapper constructors -
|
|
Replace constructor taking ICollection with IEnumerable and also add IEnumerable<T>
|
|
constructor to avoid the boxing and unboxing overhead of the original constructor,
|
|
when the type parameter is a value type.
|