// the find
jdah/archimedes
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.