matt-42 / lithium

Easy to use C++17 HTTP Server with no compromise on performances. https://matt-42.github.io/lithium
https://matt-42.github.io/lithium
MIT License
1.25k stars 90 forks source link

[offtopic] How should one compare C++ frameworks? #63

Open SamuelMarks opened 3 years ago

SamuelMarks commented 3 years ago

For the database layer, I am currently weighing up ODB, Oat++, SOCI, cppdb, and sqlpp11 [if sqlpp adds support for CREATE TABLE]. Also drogon seem to have its own ORM layer, but with only PostgreSQL and MySQL support I'm a little worried from a testing and server-less perspective (really would be nice to see support for an embedded database like SQLite). lithium (here) looks good, but the lack of Windows support is a turnoff (you mention you're waiting for a bugfix in MSVC, link? - Maybe I'll try fixing?).

For the REST API layer I haven't started investigating, although I do remember actix being dethroned and the drogon C++ framework taking its place. Lithium (here) winning overall.


I am planning to use LLVM (clang, libclang, libtooling) to synchronise [bidirectionally] OpenAPI with C++ code. I've done the same in Python, and WiP for Rust, Swift, Java, Kotlin, and TypeScript.

With my compiler driven approach, I expect people to be able to rapidly produce REST API + db backends with full test and doc coverage, and be able to immediately translate the interfaces across language boundaries (e.g., to frontends, or to rewrite a slow-performing Python backend in C++ or Rust).

Currently focussing on the non-Turing-complete as aspect of this, translating just the interfaces, tests, docs, defaults, and types.


I am writing tools to allow engineers to develop faster, and with higher quality. Will only target one ORM and one REST API layer for C++, at least in the short-term.

So my question is, and I understand that posting here will provide a heavily biased answer, how do I decide between the various C++ frameworks?

Thanks

matt-42 commented 3 years ago

Hi @SamuelMarks ,

Here a my answers/questions:

Hope this help.

Cheers, Matthieu

SamuelMarks commented 3 years ago

Hi @matt-42,

Thanks for responding so quickly.