SWIG 4.0 Development
SWIG 4.0 Development
This page is for adding ideas for improvements to the next major SWIG release (SWIG-4.0). SWIG is a volunteer project, so if you have an idea, please volunteer to implement it or find a contributor who can, otherwise it is unlikely to be coded up.
The list of improvements earmarked for SWIG-4.0 are labelled with the swig-4.0 milestone. These are issues or pull requests that introduce too much change for the 3.0.x release series.
The major features for swig-4.0 are covered below.
Doxygen support was merged into master on 2018-06-07.
Minimum Python version support
The minimum version of Python to be supported is Python 2.7 and Python >= 3.2 (as discussed in #701).
Simplifying Python options
There are over 50 command line options for the Python module, many of which are essentially undocumented. The plan is to drastically reduce these, and to ensure that the remaining options are actually properly documented. A lot of the reduction will be possible by removing the minimum version of Python supported. The default set of options could be the same as when the optimization flag,
-O, is used in swig-3.0.x. The first step towards making this work requires the Python test-suite to support
-O in swig-3.0.x.
Support for -O in python test-suite
This branch: https://github.com/mromberg/swig/tree/optimize contains all the pull requests for getting -O to pass all tests. The individual fixes are done as separate pull requests (which have comments and discussion). The pull requests are:
- #724 - merged in for swig-3.0.11 release
- #721 - superceded by 86fd5c and merged in for swig-3.0.11
- #718 - fixed for swig-4.0.0
- #711 - superceded by #730 (see below)
- #730 - merged in for swig-3.0.11 release
- #1293 - fixed for swig-4.0.0
This work was completed on 10 Aug 2018 when #1298 was fixed.
Python command line options
#1340 is tracking the progress of all the Python options and whether they should be removed.
This work was completed on 18 Dec 2018 when #1340 was fixed.
Better standard containers typemaps for Java
std::vector<> conform to standard Java containers interface, notably allowing convenient iteration over it using the for-each loop: done in #842.
-cgo is required since Go 1.5, which is two years old now (Go 1.9 is the current release). Ian says we should make
-cgo the default in SWIG 4.0 (https://github.com/swig/swig/issues/1055).