Puppy's origin story is "I want to make easy cross-platform HTTP requests without -d:ssl and without extra stuff on Windows". Not really server-focused but it certainly works there.
Curly's origin story is "my server needs a good way to do lots of low-latency HTTPS RPC calls". This was a harder requirement. Imo these are pretty different origins which makes a difference at least to where they stand today. Also when I worked a bit on Puppy I knew a lot less about all of these ways of solving the HTTPS problem so there's that. I think the APIs are moving closer together but there is one fundamental difference--Curly is a libcurl-centric thing which means it'll always need a DLL on Windows. Puppy uses OS APIs on Windows to avoid this. These differences kind of don't matter but kind of do. I've not thought enough about it but a revisit of Puppy is due with the knowledge gained over the past couple years. There is no reason it shouldn't have similar batching support etc. Long vague answer but yeah Puppy has its niche imo and can improve too.
