Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. C/C++
  3. Refureku

Refureku

MITC++v2.2.0

A cross-platform C++17 runtime reflection library with a code generator and dynamic library API.

Visit WebsiteGitHubGitHub
253 stars25 forks0 contributors

What is Refureku?

Refureku is a cross-platform C++17 runtime reflection library that provides dynamic introspection capabilities for C++ applications. It solves the problem of manual, error-prone reflection by automating code generation through its Kodgen module, allowing developers to inspect and manipulate types, fields, methods, and classes at runtime. The library enables features like instantiating objects without static type knowledge, calling reflected methods, and attaching custom metadata via a property system.

Target Audience

C++ developers working on large-scale projects requiring runtime reflection, such as game engines, tools with plugin systems, or applications needing dynamic type inspection and serialization. It is particularly suited for teams prioritizing automation and flexibility in their reflection setup.

Value Proposition

Developers choose Refureku for its automated, file-change-driven code generation that eliminates manual reflection efforts, its customizable macro syntax that integrates seamlessly into any codebase, and its extensible property system inspired by C# attributes. Its design for cross-platform compatibility and support for dynamic libraries makes it a robust choice for complex C++ projects.

Overview

Cross-platform C++17 Runtime Reflection Library

Use Cases

Best For

  • Adding runtime reflection to C++ game engines for editor tools and scripting
  • Building plugin systems that require dynamic loading and inspection of classes
  • Implementing serialization/deserialization systems that work with unknown types
  • Creating debugging or inspection tools that need to analyze object structures at runtime
  • Developing data-driven systems where types and behaviors are defined externally
  • Enabling reflection in projects with heavy template usage or multiple inheritance

Not Ideal For

  • Projects prioritizing zero runtime overhead and needing compile-time reflection only
  • Teams with minimal build systems that cannot integrate external code generation tools like Kodgen
  • Applications that avoid dynamic library loading/unloading due to complexity or platform constraints
  • Codebases stuck on C++ standards older than C++17

Pros & Cons

Pros

Automated Code Generation

Incremental regeneration only when source files change eliminates manual reflection efforts and reduces errors, as highlighted in the design goals.

Customizable Reflection Syntax

Users define their own macros for marking entities, allowing seamless integration into any project without imposed third-party syntax.

Comprehensive Entity Coverage

Supports reflection of namespaces, classes, methods, fields, enums, templates, and multiple inheritance, making it versatile for complex C++ codebases.

Dynamic Library Handling

Manages reflection for runtime-loaded/unloaded libraries, essential for plugin systems and game engine development as per the design goals.

Cons

Compiler-Specific Bugs

MSVC has known issues with template template parameters and nested class templates, which can break reflection in certain scenarios as noted in the README.

Build System Complexity

Requires integrating and maintaining the Kodgen code generator, adding setup overhead and potential dependency management challenges.

Runtime Performance Overhead

As a runtime reflection library, it introduces costs for type lookups, method invocations, and field access compared to compile-time alternatives.

Frequently Asked Questions

Quick Stats

Stars253
Forks25
Contributors0
Open Issues2
Last commit2 years ago
CreatedSince 2020

Tags

#cplusplus-17#cpp17#runtime-reflection#cmake#game-development#metadata#cplusplus#cross-platform#reflection#attributes#code-generation#game-engine#cpp#type-introspection

Built With

C
C++17

Links & Resources

Website

Included in

C/C++70.6k
Auto-fetched 21 hours ago

Related Projects

Magic EnumMagic Enum

Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code

Stars6,242
Forks571
Last commit12 days ago
RTTRRTTR

C++ Reflection Library

Stars3,486
Forks487
Last commit2 years ago
NameofNameof

Nameof operator for modern C++, simply obtain the name of a variable, type, function, macro, and enum

Stars2,368
Forks127
Last commit1 day ago
reflect-cppreflect-cpp

A C++20 library for fast serialization, deserialization and validation using reflection. Supports JSON, Avro, Boost Serialization, BSON, Cap'n Proto, CBOR, Cereal, Command line interfaces, CSV, Environment variables, flexbuffers, msgpack, parquet, TOML, UBJSON, XML, YAML, yas / msgpack.org[C++20]

Stars1,961
Forks196
Last commit4 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub