-
Notifications
You must be signed in to change notification settings - Fork 111
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
Swig 4.0 makes incompatible changes to MMCoreJ API (and also fails build) #37
Comments
May I ask how it is going with Swig 4.0? |
Let me try to at least make a to-do list for this. Below are the relevant changes (swig <4 to swig 4) that we need to deal with (generated using japicmp and filtered). As far as I can tell, they result from 3 changes to SWIG's Java support (from the changelog linked above):
Of the API changes, we can accept the ones labeled NEW INTERFACE, MODIFIED SUPERCLASS (from Among the backward-incompatible changes, there is not much we can do about the MODIFIED METHODs, where the return value of That leaves us with the REMOVED CONSTRUCTORs and REMOVED METHODs. More about these in my next comment.
|
Here are the changes that we probably want to avoid (and probably can) (extracted and reordered from above):
So the remaining job is to reintroduce the above constructors and methods by editing |
For anybody seeing this before we fix the above API issues: please continue to build using SWIG 3.x for the time being. |
Something I do not address above is whether the API is equivalent between a Windows build and macOS/Linux build. This should also be checked. |
Not sure why this never occurred to me before, but we should investigate if simply replacing On the C++ side, The problem we are having is that C++ We don't need to consider pymmcore because Python just has arbitrary-precision integers. So replacing (almost) all |
I believe the other issue is with StrVector and friends. If I remember correctly, Swig 4.0 maps those into native Java classes (much nicer, but will need extensive changes to the Java code. |
Right. But I think we can solve the
|
This is a continuation of micro-manager/micro-manager#838.
Quoting from the Swig Changelog, in 4.0.0 there is the following entry:
This suggests that it might be possible to have code that works across Swig versions.
The text was updated successfully, but these errors were encountered: