In 2019, we announced that Crystal had multi-threading support. Since then, users wanting to squeeze a bit of those cores have the possibility to compile the app with the -Dpreview_mt
flag and have access to parallel processing. However, five years later, the situation has not advanced much, with a working implementation that remains a preview feature.
84codes’s flag-ship product LavinMQ, strives to be the most efficient messaging queue server. To optimize server capabilities, 84codes has decided to financially support the significant task of introducing full multi-threading support in the compiler and stdlib. The RFC is currently under scrutiny, and development has already started, as seen in several recent PRs on the topic of concurrency.
We know this task is not easy and will take time. However, the expected outcome is promising: not only are we working to have better performance, we are also aiming to make the API flexible enough to accommodate the needs of the different applications.
If you are facing difficulties with your Crystal application, you are welcome to reach out to crystal@manas.tech. Manas can help you crack that hard nut, and the solution might end up enriching the Crystal ecosystem.