-
Notifications
You must be signed in to change notification settings - Fork 2
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
feat: discover dynamically linked backends at runtime #69
base: main
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #69 +/- ##
===========================================
- Coverage 75.72% 59.37% -16.35%
===========================================
Files 17 21 +4
Lines 828 1253 +425
Branches 154 341 +187
===========================================
+ Hits 627 744 +117
- Misses 136 477 +341
+ Partials 65 32 -33 ☔ View full report in Codecov by Sentry. |
@cmalinmayor and @funkey ... how would you guys feel about not supporting windows 😂 i swear to god... i usually get something working pretty quickly for macos and linux ... (and this PR would be a step towards allowing this all to ship on conda forge). but then it takes forever to try various things to get windows working, and it still doesn't work. I'm honestly not entirely sure that gurobi ever worked on windows? @cmalinmayor, do you have any sense for how many windows users you have? Any definitely important users or use cases? |
@AnniekStok Do you have any windows users in the lab? Yes, right? |
After chatting with Jan yesterday, we've got a dramatically new possible strategy, which is to statically link scip, and use gurobipy (instead of our c code here). That's a significant rewrite, but would make it much easier to distribute (and build). So, windows users have no fear :) |
We are mostly MacOS users, but the shared workstations and virtual desktop system are (mostly) running on Windows. So we would be very happy with Windows support if possible :) |
This PR converts the backends to shared libraries that are dynamically linked and discovered at runtime, rather than at compile time. This will make it easier to distribute (won't require that gurobi is present to use scip for example)
summary of changes:
ilpy
directory in the root folder during development without having installed and built the package)SolverFactory.cpp
, which now does all the work of dynamically loading a backend wrapper, and calling it'screateSolverBackend
functioncreateSolverBackend
require a directory in which the dlls should be found, so that that can be more easily done on the python side at runtime. might be a better way to do this ...