finds.dev← search

// the find

jdah/archimedes

★ 647 · C++ · MIT · updated Oct 2022

C++20 reflection via code generation

Archimedes adds runtime reflection to C++ by running a Clang plugin during compilation that serializes type metadata into object files linked alongside your program. You get field enumeration, function invocation, enum string conversion, and vtable layout — all without macros or annotations. It's for C++ devs who need scripting-layer access to native types, serialization, or plugin architectures.

The approach of piggybacking on Clang's already-instantiated ASTs is sound — you get template reflection for free on anything the compiler actually used, no manual registration needed. The breadth of what's reflected is impressive: vtable layout, private members, constructors/destructors as callable handles, type aliases. The test suite is genuinely thorough — 40+ focused test files covering edge cases like `decl_in_macro`, `parameter_pack`, `ptr_in_template`, and `local_struct` that most reflection libs quietly don't handle. Metadata is serialized as byte arrays and deserialized at startup rather than baked into code, which keeps compile-time impact lower than codegen-heavy alternatives.

Abandoned in October 2022 with an explicit 'alpha/hot garbage' warning from the author — this isn't a temporary hiatus, the repo has 26 forks and no sign of a successor maintainer. Clang-only with no path to GCC or MSVC, so it's a hard blocker for anything that needs cross-compiler CI. Build system is a raw Makefile with no CMake or package manager support, meaning integration into a real project requires manual wiring that the README leaves as an exercise. No documentation beyond 'read the tests' — fine for a proof of concept, painful for anyone who hits a corner case in the plugin.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →