Z.Haskell project announced

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

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
wrote: Dear Haskellers:
After having a discussion with HF guys, I decide to announce [Z.Haskell](http://z.haskell.world/ 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/ https://netty.io/) for java or [nodejs](https://nodejs.org/ 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 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.

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%20Mu...), 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
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
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.
participants (2)
-
Dong Han
-
YueCompl