The original idea of letting xud-launcher to run any branch of xud-docker is that we delegate the setup logic to the xud-docker Python launcher. And this requires to setup a separated Python runtime on Linux, macOS and Windows. And on Windows there is no Python preinstalled, so we need to download a ~8MB embeded python for the user.
Back to the "interrupt" issue on Windows, I cannot find an easy solution for this after few hours researching. So the best solution I can see is dropping Python in xud-docker launcher and replace it with Golang binary one.
Pros:
Don't need to setup a Python runtime
Better Windows support than Python
Smaller than embeded python + other dependencies (~3MB zip)
Cons:
Rewriting required
Cannot easily run from source code (need to compile but thanks to Github actions artifacts, we could use this to run any branch without compiling source locally)
This PR was created beause we cannot interrupt Python thread.join() on Windows (https://mail.python.org/pipermail/python-dev/2017-August/148800.html). This is a huge blocker to run original Python xud-docker launcher on major platforms.
The original idea of letting xud-launcher to run any branch of xud-docker is that we delegate the setup logic to the xud-docker Python launcher. And this requires to setup a separated Python runtime on Linux, macOS and Windows. And on Windows there is no Python preinstalled, so we need to download a ~8MB embeded python for the user.
Back to the "interrupt" issue on Windows, I cannot find an easy solution for this after few hours researching. So the best solution I can see is dropping Python in xud-docker launcher and replace it with Golang binary one.
Pros:
Cons: