Hello, I have been looking on Nim for couple of months now, and I have to say that I'm very intrigued.
I'm currently working for a company that is mainly using python. Our core application is almost entirely written in it (some small parts are written in cython). It is quite large (close to 100k lines of python).
Lately we have been having some difficulties with performance (we usually resort to horizontal scaling), but also with mypy (static typing).
We are using asyncio heavily, basically our entire application is asynchronus. We are utilizing static type annotations (mypy) extensively so our code sometimes comes close to Nim syntax (if you ignore usage of class hierarchies).
There are some parts that could be rewritten easily, but I'm afraid that we would inevitably run into limitations of missing support for async.
I'm aware of nimpy and I was wondering if there is any way to write asynchronous Nim code that would be await-able in python. I'm guessing that general solution that would automagically allow usage of Nim async procedures to be run in python event loop would be to much to ask. But I was thinking that there might be something that can be implemented for specific use-cases.
Do you have any idea what it would entail? I was searching online and I think I found something analogues for rust lang, but I cannot find it now.
The similarity to python was the thing that brought me to Nim in the first place. So I would really like some more effort put towards interoperability with python. I think that many company's that are using python for something other than Django applications, would appreciated it. I think that there are a lot of potential Nim customers.
I know that it is possible to ask epoll to let you know when another epoll FD is ready to be polled. Python should allow you to add arbitrary FDs to its event loop in order to receive readable/writeable events on it, you can then grab Nim's asyncdispatcher's FD and ask Python to tell when it should be polled. Then simply poll it. I take this approach in my HTTP server: https://github.com/dom96/httpbeast/blob/master/src/httpbeast.nim#L168-L171.
Happy to help further if you're interested in pursuing this.