First technical comment: Probing file format for zlib may not work, as there is not real header. 0x1f 0x8b will only probe for gzip compressed archive, but zlib might rather start with 0x78 with the next byte the compression. Simutrans used all kinds of compressions over the years, and it can be set in simuconf.tab. See here the "headers":
https://stackoverflow.com/questions/9050260/what-does-a-zlib-header-look-like That is why Simutrans first checks for ZSTD and BZip2, and then tries to open the file with zlib (which also read normal uncompressed files). So classify as zip is not needed, all remaining files should be read via zlib.
Sending files directly makes not much sense because the game must be saved to be reloaded anyway.
My fear is always that introducing a big change might potentially introduce new errors in parts that were more or less proven. And in the past I ended up debuging code I did not know just because of change. So with my limited time, I tend to be cautious. But when coding, I admid I am very conservative, and as such may be not the most open person to such kind of patches.
Thus I would prefer to hear what the other contributors say to it.
This is now getting a little offtopic, but actually adding zstd was not very time consuming, thank you, you speak to the person who added it. Most difficult is usually the documentation around and the libraries. Also why calling files "streams" is beyond me. My data should stay, not float away. I have never heard of a "Stream manager". Those are files for users, so I would call them files. Modren programmer may call them what they like, but somehow I fail to see a stream for that.
So I appreciate the effort, am a little cautious thinking of my workload, but I will listen to the others.