Hi Compl,

Thanks for your blessing, and we're happy to answer your questions. We have published a paper about how did we combine libuv's event loop with GHC lightweight threads, it's on the old [repo](https://github.com/ZHaskell/stdio/blob/master/docs/A%20High-Performance%20Multicore%20IO%20Manager%20Based%20on%20libuv%20(Experience%20Report).pdf), which is somehow a little bit outdated, but the design is mainly the same.

> does it touch the internals of GHC RTS scheduler?

No, the concurrency primitives in base(`MVar`, `forkIO`, `yield`, etc) are enough.  

 > Seems libuv would have to be deeply integrated, how is that done?

Basically, it consists of three parts:

1. Start an IO manager thread per capability, which is responsible for polling libuv's eventloop.
2. Write bindings to libuv's async functions and wait for the IO manager.
3. Manage memory allocations and how data passing across FFI.

 Cheers~
Dong

On Wed, Apr 7, 2021 at 2:58 PM YueCompl <compl.yue@icloud.com> wrote:
Congratulations and thanks for the public release!

Wish Z a fast growth and wide adoption.

At a glance I'm especially curious how 

M GHC lightweight threads scale on N event loops

is achieved, does it touch the internals of GHC RTS scheduler? Seems libuv would have to be deeply integrated, how is that done?

Sincerely,
Compl

On 2021-04-07, at 12:13, Dong Han <winterland1989@gmail.com> wrote:

Dear Haskellers:

After having a discussion with HF guys, I decide to announce [Z.Haskell](http://z.haskell.world/) project, It's available on Hackage and very much usable now, the document is also pretty adequate.

To recap the document from Z.Haskell, Z.Haskell provides:

+ Array, vector(array slice), sorting, searching
+ Text based UTF-8, basic Unicode manipulating, regex
+ FFI utilities
+ Fast parsing and building monad
+ JSON encoding and decoding
+ IO resource management, resource pool
+ File system operations
+ Network: DNS, TCP, UDP and IPC
+ Buffered input and output
+ Process management
+ Environment settings
+ High performance logger
+ High performance low-resolution timer

The project's goal is not to compete with the base, but to provide an alternative engineering toolkit, which is more suitable for writing practical network/storage services. Similar to [netty](https://netty.io/) for java or [nodejs](https://nodejs.org/) for javascript. Welcome to join Z.Haskell if you have a similar use case. Currently, we're heading with the following roadmap:

+ Crypto library based on [botan](https://github.com/ZHaskell/z-botan).
+ TLS network stack.
+ HTTP framework.
+ Distributed system algorithms.

Happy hacking!
Z.Haskell Contributors
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.