You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: cppcon2025/proposal.md
+23-3Lines changed: 23 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,21 +4,41 @@
4
4
For example, "My Adventures With Boost.Asio: return to Sender"*
5
5
6
6
7
+
Reflection-based JSON in C++ at Gigabytes per Second
8
+
7
9
## Abstract
8
10
9
11
*As it should appear in the program. About one to three paragraphs. This is your pitch to both the Program Committee and to potential attendees about why they should see your presentation. (Use the 'Comments' field below for remarks intended only for the PC.)
10
12
Try to answer the reader's questions, What will I learn? and Why is this important to me? To facilitate a double-blind review process, please avoid statements that remove all uncertainty about who you are*
11
13
14
+
JSON, or JavaScript Object Notation, has become a cornerstone for storing and exchanging data. Its appeal lies in its simplicity—human-readable text that elegantly captures structured data through attribute-value pairs and arrays: {"age": 5, "name": "Daniel", "toys": ["wooden dog", "little car"]}. JSON is intuitive yet powerful. But ingesting and producing JSON can turn into a performance choke point. In C++, it can be a tedious, error-prone task. Programmers wrestle with unexpected content, manually mapping data to and from native structures, all while striving for speed and safety.
15
+
16
+
With languages like Java, C#, Zig, Rust, or Python, JSON serialization and deserialization typically requires far less work. In particular, Rust's serde library blends convenience with high speed. We wish for a C++ library to automatically handle JSON production and consumption, seamlessly tied to native data structures. It is not merely to simplify life for developers; it is also about crafting code that is both fast and solid, generated at compile time by a battle-tested library.
17
+
18
+
Thankfully, C++ might soon be getting reflective metaprogramming. Leveraging the experimental Bloomberg LLVM fork with reflective metaprogramming, we have built a full-fledged implementation—complete with tests, benchmarks, and documentation. Our goal is production-ready code the moment mainstream compilers catch up. The results speak for themselves: we are parsing JSON directly into C++ structures at gigabytes per second, outpacing even mature heavyweights like Rust's serde. Better yet, the conversion between C++ data structures and JSON is fully automated, thanks to metaprogramming. It has to be the potential to be a leap forward for C++ in the data-driven age. Unfortunately, there are still problems and limitations: we present them and provide some solutions.
19
+
12
20
13
21
## Outline
14
22
15
23
*You'll not be held to this—we understand that this is a snapshot in time.*
@@ -39,7 +59,7 @@ Try to answer the reader's questions, What will I learn? and Why is this importa
39
59
40
60
*If this session will have one or more additional presenters please add their email address(es) here, separated by commas if more than one*
41
61
42
-
**I use the email address daniel@lemire.me, franciscogthiesen@gmail.com**
62
+
daniel@lemire.me, franciscogthiesen@gmail.com
43
63
44
64
## Target track
45
65
@@ -79,7 +99,7 @@ For additional information, see our tagging guide.
79
99
## Session Material
80
100
*List material that you will submit to the public conference repository: (slides, source code, etc.)*
81
101
82
-
All of the source code is available publicly as open source. The slides as well as our notes will be made available online.
102
+
All of the source code is available publicly as open source (using a business friendly licence). The slides as well as our notes will be made freely available.
0 commit comments