Skip to content
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 #10

Closed
carllerche opened this issue Sep 22, 2014 · 13 comments
Closed

Windows support #10

carllerche opened this issue Sep 22, 2014 · 13 comments

Comments

@carllerche
Copy link
Member

No description provided.

@Noxivs
Copy link

Noxivs commented Dec 7, 2014

I'm wondering if someone started to work on it ? And what is the plan? (nix-rust wrapper for windows ?)

@carllerche
Copy link
Member Author

Hi, nobody has started on windows support yet. I have a high level plan for windows but haven't thought through the details yet. The general idea is to use IOCP and to have a shim layer that matches the IOCP API w/ the mio API.

Anyway, if you are interested in attempting it, we should chat on IRC or something to get on the same page.

@Noxivs
Copy link

Noxivs commented Dec 8, 2014

Hi,
I could be interested but I am not really familiar with all this low level stuff. I will first look some docs about the IOCP API & the rust FFI.

@siriux
Copy link

siriux commented Dec 15, 2014

This thread in reddit can be very interesting: http://www.reddit.com/r/rust/comments/2kv3y5/async_io/

Specifically on this post, it's shown that IOCP can be efficient on modern windows, and they provide a link to a minimal implementation http://www.reddit.com/r/rust/comments/2kv3y5/async_io/clqr8my

I think this can be helpful when implementing the windows part.

@rrichardson
Copy link
Contributor

Can someone just try to implement the WSASelector method first, to measure
speed?

It would be 100 times easier to match to the mio flow, since it's already
select based. My guess is that it would work for most use cases.

It probably won't scale to managing 10,000 connections, but if someone
wants that they should be running Linux :)
On Dec 15, 2014 5:39 AM, "Pablo Guerrero Rosel" notifications@github.com
wrote:

This thread in reddit can be very interesting:
http://www.reddit.com/r/rust/comments/2kv3y5/async_io/

Specifically on this post, it's shown that IOCP can be efficient on modern
windows, and they provide a link to a minimal implementation
http://www.reddit.com/r/rust/comments/2kv3y5/async_io/clqr8my

I think this can be helpful when implementing the windows part.


Reply to this email directly or view it on GitHub
#10 (comment).

@rrichardson
Copy link
Contributor

http://msdn.microsoft.com/en-us/library/windows/desktop/ms741669%28v=vs.85%29.aspx
On Dec 15, 2014 7:54 AM, "Rick Richardson" rick.richardson@gmail.com
wrote:

Can someone just try to implement the WSASelector method first, to measure
speed?

It would be 100 times easier to match to the mio flow, since it's already
select based. My guess is that it would work for most use cases.

It probably won't scale to managing 10,000 connections, but if someone
wants that they should be running Linux :)
On Dec 15, 2014 5:39 AM, "Pablo Guerrero Rosel" notifications@github.com
wrote:

This thread in reddit can be very interesting:
http://www.reddit.com/r/rust/comments/2kv3y5/async_io/

Specifically on this post, it's shown that IOCP can be efficient on
modern windows, and they provide a link to a minimal implementation
http://www.reddit.com/r/rust/comments/2kv3y5/async_io/clqr8my

I think this can be helpful when implementing the windows part.


Reply to this email directly or view it on GitHub
#10 (comment).

@siriux
Copy link

siriux commented Dec 15, 2014

Apparently, the trick found on the provided link allows to use IOCP in the same way as select, but it's much faster. They use select as a fallback for unsupported systems (< Vista ???).

Anyway, it's not crear if the API used is supported, the code is WIP, and there is no license on the repo.

But it might be worth it to have a look, because it can provide a fast and simple way to have windows support. Also, it's possible to implement the fallback with select first, and leave the optimization for future versions.

https://github.com/piscisaureus/epoll_windows

@toqueteos
Copy link

Might be interesting: https://github.com/cyderize/rust-iocp

@Noxivs
Copy link

Noxivs commented Jan 11, 2015

I saw it few days ago but i think it will be harder to implement IOCP on a epoll based io library (than vice versa).
We can "simulate" it with a loop but we need at least a direct access to the file descriptor.

@carllerche
Copy link
Member Author

Ok, this is a "won't fix". I think the best strategy is to dedicate mio to readiness based platforms and punt windows support to a higher level IO library (I am working on one, but it is still in the early stages).

@SirVer
Copy link

SirVer commented Aug 3, 2015

The readme still mentions windows support as 'eventually'. Should that be removed then?

@carllerche
Copy link
Member Author

Ah, sorry, Windows support came back w/ #155 and is in progress: https://github.com/carllerche/mio/tree/windows-wip

@SirVer
Copy link

SirVer commented Aug 4, 2015

🎆 Hooray!!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants