Hello all, today I wanted to share Mummy, my new multithreaded HTTP + WebSocket 
server written entirely in Nim.

[GitHub link for Mummy](https://github.com/guzba/mummy)

I started writing Mummy because I wanted an alternative to async. There are 
very good historical reasons for async (refc + threadlocal heaps making 
multithreaded stuff extra challenging), however ORC / ARC and Nim 2.0 coming 
very soon have really opened the door to another option: threads.

Mummy takes what I think a pretty modern approach to threads and IO. The 
general model for Mummy goes like this: multiplex socket IO on one thread and 
dispatch ready-to-go requests to a pool of worker threads. This keeps worker 
threads far away from client sockets while still enabling the pleasant inline 
blocking boring Nim code that makes me a very happy programmer.

I see enormous value in simple blocking code and would be willing to make some 
performance sacrifice to have it. It turns out, though, that I don't have to.

Mummy is able to outperform AsyncHttpServer, as well as Node and Go. Mummy even 
outperforms HttpBeast, though [this may be due to a 
bug](https://github.com/dom96/httpbeast/issues/84).

You can confirm the results yourself by looking at the 
[benchmarks](https://github.com/guzba/mummy#benchmarks), the code behind them, 
and running them yourself.

Mummy basically offers the maximum performance potential while also enabling 
you to write the simplest code. This is a dream combo.

Please check out the [Mummy README](https://github.com/guzba/mummy#readme) if 
you want to learn more.

Reply via email to