# getml/reflect-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]

Repository: https://github.com/getml/reflect-cpp
Canonical: https://ross.abutalabs.com/products/reflect-cpp
Homepage: https://rfl.getml.com
Language: C++
License: MIT
License Family: permissive
Last push: 2026-08-25T21:07:10+00:00

## Health v2 (maintenance only)
Score: 85/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 72, longevity 76
- inputs: {"age_days": 1071, "days_push": 8, "days_rel": 109, "gap_med": 43.0, "n_releases_24m": 11}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1927, forks 191 (observed 2026-08-28T04:05:55.691012+00:00)

## What it is
reflect-cpp is a C++20/C++26 library for fast serialization, deserialization, and validation using reflection, comparable to pydantic or serde. It supports many formats out of the box including JSON, YAML, TOML, Avro, Parquet, msgpack, CBOR, and BSON, and also provides CLI argument parsing.

## Use cases
- serialize C++ structs to JSON and back
- parse and validate configuration files in YAML or TOML
- read and write Parquet or CSV tabular data
- deserialize API responses into typed C++ structs
- parse command line arguments into structs
- reduce boilerplate for data exchange between C++ components

## When to choose
- you need pydantic/serde-style serialization in modern C++
- you want one library supporting many serialization formats
- you need type-safe validation with clear error messages
- you want fast serialization performance

## When to avoid
- you are stuck on pre-C++20 compilers
- you need a minimal JSON-only parser with no reflection overhead
- your compiler is not GCC 11+, Clang 14+, or MSVC 17.8+

## Facets
- artifact type: library
- maturity: active
- function: serialization, form-handling, parser, cli, developer-tools
- domain: developer-tools, files, apis, backend
- platform: cpp, cross-platform, windows
- tags: reflection, c-plus-plus-20, yaml, msgpack, avro, parquet, toml, cbor, data-validation, serde-like, linux, macos

## Member repositories
- getml/reflect-cpp (main) score 85

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:55.691012+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:09:09.576338+00:00, confidence not recorded.
  - readme: https://github.com/getml/reflect-cpp (fetched 2026-08-28T04:05:55.691012+00:00, sha 11e9d96a9fe6)
  - homepage: https://rfl.getml.com (fetched 2026-08-29T10:48:37.411822+00:00, sha 3fe5fb69c8ff)
  - site_page: https://rfl.getml.com/install (fetched 2026-08-29T10:48:37.421082+00:00, sha 27f72072726a)
  - site_page: https://rfl.getml.com/docs-readme (fetched 2026-08-29T10:48:37.423122+00:00, sha 57646b4cca49)
- Data as of 2026-08-30T08:39:29.467469+00:00.
