-
Notifications
You must be signed in to change notification settings - Fork 71
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
Windows support #125
Comments
Hiya, just FYI I am beginning to try this on Windows. I managed to build the library with the
fails with
Fix is probably easy (just ignore signals?) but anyway, I don't think you should run to fix this one issue; I am planning to experiment a bit more and will report back (adding to this issue). |
Ah, great! Yes, it probably just needs this disabled: Line 28 in 8beda18
( |
BTW what do you use for testing? The files in |
Yes.
|
Unfortunately they rely on |
Ah, is this because of different line-endings? It should be possible to configure Git to check the files out with Unix line endings, for testing. It looks like we're not using any shell blocks, so that should be OK. |
I'm looking into getting Eio working on Windows. I was just able to reproduce the signal issue:
|
Some progress on Windows: After removing the I plan to continue with trying to get mdx working on Windows for running tests. There also appears to be at least one |
That's excellent progress! BTW, there are now some examples you can run that will test libuv and don't need MDX (though getting MDX working so we can run the tests is still important, of course):
|
I was wondering if it might be useful to have a more substantial set of tests that don't rely on MDX? There are two (related) uses cases for them in my mind:
If there's a desire for this I can open a separate issue, just saw this comment so replied here. |
Yes, it would be nice if MDX made debugging easier! It does have As a work-around, I sometimes indent the bit of the file I don't want to test with 4 spaces, so MDX ignores it. Or use I guess it would be fairly easy to get MDX to generate stand-alone expect tests from the .md files. |
Just noting some progress here. First of all a PR was reverted in I've also made some progress towards making it possible to use |
It increasingly looks like we'll switch away from luv (on all platforms: #434), and support Windows directly using iocp. Is this a good time to modify this issue to reflect that, and to get a status update on where we stand with iocp support? The first step is to release direct bindings to iocp, the latest branch of which is with @djs55: https://github.com/djs55/ocaml-iocp/commits/bench and are pretty stable. |
Good idea. I've updated the summary. @polytypic has been working on iocp recently too. |
@polytypic, glad to hear you've been hacking on iocp too. It would be useful to compare notes with what your trees and modifications look like with the one I posted above. |
We distribute a Flow binary for Flow and support building for Windows from source. I'm interested in a reliable Windows concurrency library to replace our current usage of Lwt. Currently, we use Lwt with a select-based backend, not luv, but a IOCP-based implementation which is well-tested would be fantastic. We'd happily switch to Eio for it. |
Thanks @samwgoldman, that's in scope for what we're doing with Eio for the first version. I was a little worried there would be a need for Win32 GUI libraries and such, but a CLI tool should be entirely possible to replace Lwt->Eio with (and potentially even speed things up). |
An update: I'm continuing to clean up the IOCP bindings in https://github.com/avsm/ocaml-iocp/tree/main/src (now with working CI!). There were two approaches to handling buffers in the branch I took up work on, and there still remains some integration that needs to happen there before it can be integrated with eio (specifically, deciding between using uring's Heap vs the static array of Overlapping buffers). I'm travelling till the 10th April, so won't make any progress until after then. I estimate it's just a day or two's work to get the bindings into suitable shape to have a Eio_windows backend (for simple filesystem/networking). If anyone wants to take over in the next few weeks, feel free; I'll catch up when back! |
Incidentally, I don't have any views on "Make sure the cross-platform API is OK for windows", so #124 would be an excellent topic for anyone interested in advancing Windows to give input/PRs on, @samwgoldman (and others). |
I might take a look at bringing my old |
I’ve not had the time to look at eio so far but I’m keen to try anything you come up with! |
I can also test an eio_iocp backend out pretty quickly -- I have a Windows/OCaml dev environment available again. |
At the moment, the |
Sorry, wrong discussion thread. 😅 |
There are some TODOs from the ecosystem point of view:
|
Noting here that the "symlinks" test was failing on my Windows machine although I could create symlinks from the command line. Looking at the symlink creation code in the ocaml/otherlibs, I noticed that it uses |
Hello, how should I report missing function in I have an error when using eio in windows ( |
I don't think they particularly need reporting - it's easy to find the unimplemented stubs in |
Yep thanks @polytypic ! This us related to #759 :)) |
Eio needs to support Windows. It was somewhat working with the libuv backend, but the other platforms have stopped using that now (see #434).
The current plan is:
eio_windows
backend based on eio_posix (Posix-based windows implementation #497).eio_main
working with Windows. Get the CI to run one of the examples./C:/foo/bar
?) and converting from native paths (Improve handling of Windows paths #762).Later, we could convert the backend to use IOCP, but that's not ready yet.
The text was updated successfully, but these errors were encountered: