-
Notifications
You must be signed in to change notification settings - Fork 25
-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generating the interface code for all versions of GSL from a single version is problematic #150
Comments
This is causing another failure mode when additional routines in a GSL module are added in a later version of GSL. For example, the sparse matrix support in GSL v 2.2.1 added new routines. Code generated for v 2.0 and v 2.1 now contains wrappers for the new routines which do not exist in those versions, causing runtime undefined symbol errors (see https://travis-ci.org/leto/math--gsl/jobs/446986667) |
Nope, that failure is caused by ver2func not being updated. Documentation is definitely needed for this part! |
Deprecated functions are handled via PR #158 |
After working with the codebase for a while, I now understand the tradeoffs better. The existing approach makes it easy to share code across multiple versions of GSL, at the cost of needing to keep track of which features are available in which version. Other than some hackery needed to handle changes in C |
Currently a single version of the GSL headers is used to generate the SWIG interface code for all of the versions of GSL supported.
This is problematic, as there is a mismatch between the API's of the different versions. In later versions deprecated functions may be removed. If we use those headers, earlier versions will lose functionality.
Instead, I think that we should use the GSL headers for each specific version and commit those to the repository. We may need to regenerate them if we add missing functionality, but at the least we don't have to worry about incompatible API's.
The text was updated successfully, but these errors were encountered: