|
12 | 12 |
|
13 | 13 |  |
14 | 14 |
|
15 | | -**reflect-cpp** is a C++-20 library for **fast serialization, deserialization and validation** using reflection, similar to [pydantic](https://github.com/pydantic/pydantic) in Python, [serde](https://github.com/serde-rs) in Rust, [encoding](https://github.com/golang/go/tree/master/src/encoding) in Go or [aeson](https://github.com/haskell/aeson/tree/master) in Haskell. |
| 15 | +**reflect-cpp** is a C++-20/C++-26 library for **fast serialization, deserialization and validation** using reflection, similar to [pydantic](https://github.com/pydantic/pydantic) in Python, [serde](https://github.com/serde-rs) in Rust, [encoding](https://github.com/golang/go/tree/master/src/encoding) in Go or [aeson](https://github.com/haskell/aeson/tree/master) in Haskell. |
| 16 | + |
| 17 | +reflect-cpp supports C++-26 reflection, but most of the functionality is also available in C++-20, except where explicitly noted otherwise. |
16 | 18 |
|
17 | 19 | Moreover, reflect-cpp is the basis for [sqlgen](https://github.com/getml/sqlgen), a **modern, type-safe ORM and SQL query generator** for C++20, inspired by Python's SQLAlchemy/SQLModel and Rust's Diesel. It provides a fluent, composable interface for database operations with compile-time type checking and SQL injection protection. |
18 | 20 |
|
@@ -62,17 +64,17 @@ reflect-cpp provides a unified reflection-based interface across different seria |
62 | 64 |
|
63 | 65 | The following table lists the serialization formats currently supported by reflect-cpp and the underlying libraries used: |
64 | 66 |
|
65 | | -| Format | Library | Version | License | Remarks | |
66 | | -|--------------|------------------------------------------------------|--------------|------------| -----------------------------------------------------| |
67 | | -| JSON | [yyjson](https://github.com/ibireme/yyjson) | >= 0.8.0 | MIT | out-of-the-box support, included in this repository | |
68 | | -| Avro | [avro-c](https://avro.apache.org/docs/1.11.1/api/c/) | >= 1.11.3 | Apache 2.0 | Schemaful binary format | |
| 67 | +| Format | Library | Version | License | Remarks | |
| 68 | +|---------------------|------------------------------------------------------|--------------|------------| -----------------------------------------------------| |
| 69 | +| JSON | [yyjson](https://github.com/ibireme/yyjson) | >= 0.8.0 | MIT | out-of-the-box support, included in this repository | |
| 70 | +| Avro | [avro-c](https://avro.apache.org/docs/1.11.1/api/c/) | >= 1.11.3 | Apache 2.0 | Schemaful binary format | |
69 | 71 | | Boost.Serialization | [Boost.Serialization](https://www.boost.org/doc/libs/release/libs/serialization/) | >= 1.74.0 | BSL 1.0 | Streaming binary format with archive interop | |
70 | | -| BSON | [libbson](https://github.com/mongodb/mongo-c-driver) | >= 1.25.1 | Apache 2.0 | JSON-like binary format | |
71 | | -| Cap'n Proto | [capnproto](https://capnproto.org) | >= 1.0.2 | MIT | Schemaful binary format | |
72 | | -| CBOR | [jsoncons](https://github.com/danielaparker/jsoncons)| >= 0.176.0 | BSL 1.0 | JSON-like binary format | |
73 | | -| cli | *(none)* | *(none)* | MIT | Command line interface | |
74 | | -| env | *(none)* | *(none)* | MIT | Environment variables | |
75 | | -| Cereal | [Cereal](https://uscilab.github.io/cereal/) | >= 1.3.2 | BSD | C++ serialization library with multiple formats | |
| 72 | +| BSON | [libbson](https://github.com/mongodb/mongo-c-driver) | >= 1.25.1 | Apache 2.0 | JSON-like binary format | |
| 73 | +| Cap'n Proto | [capnproto](https://capnproto.org) | >= 1.0.2 | MIT | Schemaful binary format | |
| 74 | +| CBOR | [jsoncons](https://github.com/danielaparker/jsoncons)| >= 0.176.0 | BSL 1.0 | JSON-like binary format | |
| 75 | +| cli | *(none)* | *(none)* | MIT | Command line interface | |
| 76 | +| env | *(none)* | *(none)* | MIT | Environment variables | |
| 77 | +| Cereal | [Cereal](https://uscilab.github.io/cereal/) | >= 1.3.2 | BSD | C++ serialization library with multiple formats | |
76 | 78 | | CSV | [Apache Arrow](https://arrow.apache.org/) | >= 21.0.0 | Apache 2.0 | Tabular textual format | |
77 | 79 | | flexbuffers | [flatbuffers](https://github.com/google/flatbuffers) | >= 23.5.26 | Apache 2.0 | Schema-less version of flatbuffers, binary format | |
78 | 80 | | msgpack | [msgpack-c](https://github.com/msgpack/msgpack-c) | >= 6.0.0 | BSL 1.0 | JSON-like binary format | |
@@ -666,11 +668,14 @@ Finally, it is very easy to extend full support to your own classes, refer to th |
666 | 668 |
|
667 | 669 | ## Installation |
668 | 670 |
|
669 | | -The following compilers are supported: |
| 671 | +The following compilers are supported for C++-20: |
670 | 672 | - GCC 11.4 or higher |
671 | 673 | - Clang 14.0 or higher |
672 | 674 | - MSVC 17.8 (19.38) or higher |
673 | 675 |
|
| 676 | +The following compilers are supported for C++-26: |
| 677 | +- GCC 16.2 or higher |
| 678 | +
|
674 | 679 | ### Using vcpkg |
675 | 680 |
|
676 | 681 | https://vcpkg.io/en/package/reflectcpp |
|
0 commit comments