{"action":"created","issue":{"url":"https://api.github.com/repos/merijn/posix-pty/issues/8","labels_url":"https://api.github.com/repos/merijn/posix-pty/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/merijn/posix-pty/issues/8/comments","events_url":"https://api.github.com/repos/merijn/posix-pty/issues/8/events","html_url":"https://github.com/merijn/posix-pty/issues/8","id":69453284,"number":8,"title":"Why is Pty abstract?  I would like to access the underlying Fd.","user":{"login":"tomjaguarpaw","id":1951567,"avatar_url":"https://avatars.githubusercontent.com/u/1951567?v=3","gravatar_id":"","url":"https://api.github.com/users/tomjaguarpaw","html_url":"https://github.com/tomjaguarpaw","followers_url":"https://api.github.com/users/tomjaguarpaw/followers","following_url":"https://api.github.com/users/tomjaguarpaw/following{/other_user}","gists_url":"https://api.github.com/users/tomjaguarpaw/gists{/gist_id}","starred_url":"https://api.github.com/users/tomjaguarpaw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomjaguarpaw/subscriptions","organizations_url":"https://api.github.com/users/tomjaguarpaw/orgs","repos_url":"https://api.github.com/users/tomjaguarpaw/repos","events_url":"https://api.github.com/users/tomjaguarpaw/events{/privacy}","received_events_url":"https://api.github.com/users/tomjaguarpaw/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-04-19T18:52:39Z","updated_at":"2015-05-15T13:35:42Z","closed_at":null,"body":"Is there a good reason `Pty` is abstract?  I would like to access the underlying `Fd` to, for example, run `select` on it."},"comment":{"url":"https://api.github.com/repos/merijn/posix-pty/issues/comments/102398933","html_url":"https://github.com/merijn/posix-pty/issues/8#issuecomment-102398933","issue_url":"https://api.github.com/repos/merijn/posix-pty/issues/8","id":102398933,"user":{"login":"merijn","id":663022,"avatar_url":"https://avatars.githubusercontent.com/u/663022?v=3","gravatar_id":"","url":"https://api.github.com/users/merijn","html_url":"https://github.com/merijn","followers_url":"https://api.github.com/users/merijn/followers","following_url":"https://api.github.com/users/merijn/following{/other_user}","gists_url":"https://api.github.com/users/merijn/gists{/gist_id}","starred_url":"https://api.github.com/users/merijn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/merijn/subscriptions","organizations_url":"https://api.github.com/users/merijn/orgs","repos_url":"https://api.github.com/users/merijn/repos","events_url":"https://api.github.com/users/merijn/events{/privacy}","received_events_url":"https://api.github.com/users/merijn/received_events","type":"User","site_admin":false},"created_at":"2015-05-15T13:35:42Z","updated_at":"2015-05-15T13:35:42Z","body":"@tomjaguarpaw that select package would generally be a bad idea, because select() doesn't scale that well with large numbers of `Fd`'s, additionally you'd be fighting the thread management done by the GHC runtime. It would be better to use the `threadWaitRead` and `threadWaitWrite` primitives in GHC.Conc.IO, or their STM versions if you want to poll, as these hook directly into GHC's thread management. I'm adding a way to work with those.\r\n\r\n@proger Right now I'm working on making the C code work cross-platform on FreeBSD and OSX, I'll look into how I can fit the linux code into that afterwards. I don't think I will merge the pull request as-is, since I'm against hardcoding constants like that, but the the API should end up closer to what your fork currently has."}}