So far GuildenStern has been a bit of an experimental project, but with Nim 2 and this major rewrite, I hope I have nailed it, and the API stays more stable for the future generations to come. Please try it out and send bug reports. After those ease off, I am inclined to call this production-ready.
Hope this helps.
Multi-threaded servers address the crashy-ness of my previous attempts with nim async servers/frameworks, but low ram file upload and serving has been missing. It looks like Guildenstern addresses the upload so far. I would like to use one base for all my web projects, and am not low level enough to write my own http+websocket server or contribute this feature to an existing one at this time. I would rather focus on my apps' business logic, really. :)
5. Now that you reveal a bit more info about your intended use case, it comes to mind that there are also protocols that are especially designed for sharing large files. Check at least: https://github.com/status-im/nim-libp2p and https://github.com/sergiotapia/torrentinim
Anyway, GuildenStern is a good platform for developing customized services that are optimized for particular use cases, thanks to its modularity that allows easy replacement of components, and architecture, that allows different kinds of servers to co-exist serving different ports. GuildenStern is not (just) a web server, it is a web server construction kit. With it, you will never paint yourself into the corner.
Thanks for all the info.