Show HN: Lightweight C++23 S3 client with no extra deps (just curl and OpenSSL)

Posted by ggcr 3 days ago

Counter5Comment5OpenOriginal

Attached is my attempt at making a small toy S3 client without any other dependency besides libcurl and OpenSSL. Was tested mainly on MinIO (RIP) locally, so I would expect some bugs when using it against AWS, although I was able to play with it on some open access buckets

Be aware that I am not a C++ programmer and this project was indeed done to learn a bit of C++ myself :')

Feedback on any of the code, either on gtest, or the benchmarking section or the core itself is welcome!

Comments

Comment by cherryteastain 3 days ago

You may want to look into coroutines so that the data can be fetched asynchronously.

Comment by ggcr 3 days ago

Yep! I'd also like to explore C++26 reflection for the XML FSM parser I currently have

Everything so far is synchronous. In our toy benchmarks I've found out Go to be quite performant, perhaps it's using go-routines behind the scenes (?) Haven't explored their internals yet but I was surprised

Comment by bitbasher 3 days ago

“Just” curl and openssl. Those are not small and do a ton of lifting… easily adds 2-3mb to a static binary.

Comment by ggcr 3 days ago

Fair point. Should've titled it "minimal dependencies" perhaps

Since C++ has no HTTP client in its std lib, I really had no other choice but to use curl. Same with OpenSSL. It'd be quite naïve of me to re-implement the whole HTTP stack and SHA256 from scratch =)

Comment by vrighter 3 days ago

a lightweight car kit that comes with everything you need to build a fully working car! All you need to add is a working engine (sold separately).