-
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
Eio 1.0 progress tracking #388
Comments
I'd really like to see if we can get @patricoferris' GCD backend integrated for a 1.0 as well. |
What’s Lwt_async? |
I have a much better understanding of Eio and concurrency/async IO now, so I'll see if I can bring this backend into shape and see how it's performance is.
Possibly a typo :)) and was supposed to be |
Yes! Fixed :-) |
js_of_ocaml is is merged now. What would js_of_ocaml support look like? |
I think there are two backends that would be needed for good jsoo support, one for node and one for the browser. For a quick win in the browser, I think just taking the mock backend's scheduler might be a good place to start and adding whatever things from the standard environment make sense e.g. jsoo has a notion of a fake filesystem which could be the backend for the For node, we just need to wrap the node bindings which are basically libuv. I made a start over here: https://github.com/patricoferris/eio/tree/node/lib_eio_js |
Yep (actually, this is a good place to start for any backend).
Excellent! BTW, you might want to rebase your node backend on Eio 0.7, as there have been quite a few changes to the error handling since the commit it's based on. |
Is it practical to hand-roll node bindings using jsoo ffi directly nowadays? ts2ocaml can generate bindings out of TypeScript definitions. Bindings will use gen_js_api to actually compile to something that will work on jsoo. For simple libraries ts2ocaml can produce compileable bindings that you can use straight away. For more complex ones like Node API it can save you 80% of work. How fast can jsoo be with effects? So far the consensus is that it's slow and as an optimization they suggest to avoids CPS transformaton for code that does not use effects. Will Eio code (that is 100% on effects) run fast enough on jsoo to be practical to be used anywhere in production? |
It's a fair point, but yes I think it is still practical as there's not that many. I am also firmly in the camp of hand-rolling a bit even if you eventually automate (like hand-writing C stubs before reaching for ctypes) so you are in full control over the bindings to avoid hard to debug problems (e.g. for effects to work the calling convention must use the underlying
See the latest PR ocsigen/js_of_ocaml#1384. As an update for this thread, there's a PR open for the browser backend. #405 |
Status of major features needed for Eio 1.0 (a tick means would be OK to ship in its current state):
Backends:
Non-essential backends (but would be good to check that the cross-platform API works for them before 1.0 if possible):
Features:
Lock-free waiters. Should be faster, and also needed to handle signals correctly.
Sharing OS resources with other domains.
File-systems: Mostly working, but API is incomplete.
Signal handlers.
Spawning processes.
High-level domain pools API.
Integrations:
Testing:
tests
directory).bench
directory).stress
directory; currently semaphore only).Stress tests for OS access.
fuzz
directory).The text was updated successfully, but these errors were encountered: