Exploring macro-free testing in modern C++
Some time ago I wrote about a basic C++ unit-testing library I made that aimed to use no macros. I got some great feedback after that and decided to improve the library and release it as a standalone project. It's not intended to stand up to the giants, but is more of a fun little experiment on what a library like this could look like.
Library: https://github.com/anupyldd/nmtest
Blogpost: https://outdoordoor.bearblog.dev/exploring-macro-free-testing-in-modern-cpp/
https://redd.it/1pmflde
@r_cpp
Some time ago I wrote about a basic C++ unit-testing library I made that aimed to use no macros. I got some great feedback after that and decided to improve the library and release it as a standalone project. It's not intended to stand up to the giants, but is more of a fun little experiment on what a library like this could look like.
Library: https://github.com/anupyldd/nmtest
Blogpost: https://outdoordoor.bearblog.dev/exploring-macro-free-testing-in-modern-cpp/
https://redd.it/1pmflde
@r_cpp
GitHub
GitHub - anupyldd/nmtest: Macro-free unit-testing framework in modern C++
Macro-free unit-testing framework in modern C++. Contribute to anupyldd/nmtest development by creating an account on GitHub.
C++ Module Packaging Should Standardize on .pcm Files, Not Sources
Some libraries, such as fmt, ship their module sources at install time. This approach is problematic for several reasons:
If a library is developed using a modules-only approach (i.e., no headers), this forces the library to declare and ship every API in module source files. That largely defeats the purpose of modules: you end up maintaining two parallel representations of the same interface—something we are already painfully familiar with from the header/source model.
It is often argued that pcm files are unstable. But does that actually matter? Operating system packages should not rely on C++ APIs directly anyway, and how a package builds its internal dependencies is irrelevant to consumers. In a sane world, everything except
I believe pcm files should be the primary distribution format for C++ module dependencies, and consumers should be aware of the compiler flags used to build those dependencies. Shipping sources is simply re-introducing headers in a more awkward form—it’s just doing headers again, but worse
https://redd.it/1pmh814
@r_cpp
Some libraries, such as fmt, ship their module sources at install time. This approach is problematic for several reasons:
If a library is developed using a modules-only approach (i.e., no headers), this forces the library to declare and ship every API in module source files. That largely defeats the purpose of modules: you end up maintaining two parallel representations of the same interface—something we are already painfully familiar with from the header/source model.
It is often argued that pcm files are unstable. But does that actually matter? Operating system packages should not rely on C++ APIs directly anyway, and how a package builds its internal dependencies is irrelevant to consumers. In a sane world, everything except
libc and user-mode drivers would be statically linked. This is exactly the approach taken by many other system-level languages.I believe pcm files should be the primary distribution format for C++ module dependencies, and consumers should be aware of the compiler flags used to build those dependencies. Shipping sources is simply re-introducing headers in a more awkward form—it’s just doing headers again, but worse
https://redd.it/1pmh814
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Blog: Why C++ project setup is still painful in 2025 (and my attempt to fix it)
https://cpx-dev.vercel.app/blog#blog/why-i-built-this
https://redd.it/1pmmm5g
@r_cpp
https://cpx-dev.vercel.app/blog#blog/why-i-built-this
https://redd.it/1pmmm5g
@r_cpp
cool-vcpkg: A CMake module to automate Vcpkg away.
https://github.com/XJ-0461/cool-vcpkg
https://redd.it/1pmp0x2
@r_cpp
https://github.com/XJ-0461/cool-vcpkg
https://redd.it/1pmp0x2
@r_cpp
GitHub
GitHub - XJ-0461/cool-vcpkg: A CMake module that integrates Vcpkg tooling in a more idiomatic/ergonomic/native CMake style.
A CMake module that integrates Vcpkg tooling in a more idiomatic/ergonomic/native CMake style. - XJ-0461/cool-vcpkg
Building GCC on Windows
I want to test GCC reflection in my setup outside of Compiler Explorer, but trying to build it with MSYS2 seems extremely cumbersome, even with AI, which couldn't help much with all the errors and edge cases due to Windows. What's the expected path for me to do this?
https://redd.it/1pmtq1j
@r_cpp
I want to test GCC reflection in my setup outside of Compiler Explorer, but trying to build it with MSYS2 seems extremely cumbersome, even with AI, which couldn't help much with all the errors and edge cases due to Windows. What's the expected path for me to do this?
https://redd.it/1pmtq1j
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Recent comments regarding Microsoft's support for C++
Under the recent posting "C++26 Reflection appreciation post", u/STL made some very interesting statements regarding Microsoft's support for C++.
I wouldn't myself expect to find such comments inside a discussion about Reflection, but alas, this is reddit.
I do appreciate these insights a lot and I am convinced that these comments deserve to be highlighted in a separate posting. This is my second try at doing this. Let's see how this one goes.
u/bizwig asked:
>Does Microsoft still support C++? There was some press reporting implying MS was going to stop further development on non-proprietary development tools and concentrate on C#.
u/STL responded:
>Yes. The compiler (front-end, back-end, static analysis), standard library, and Address Sanitizer are being actively developed by what I believe is still the largest single team of C++ toolset engineers employed by any one company.
(emphasis mine)
u/STL gave a number of other interesting insights into the state of affairs re C++ at Microsoft. I recommend to read his comments at the posting linked at the top.
Please note that u/STL is not making statements on behalf of Microsoft (as I understand it), but he is a highly respected member of r/cpp, a moderator of this subreddit and the implementer of the MSVC C++ Standard Library.
I'm not related to Microsoft in any way (other than being a user of their products and their C++ toolchain) and I'm not interested in collecting reddit karma (as someone suspected at my last try).
Thank you for not reporting this posting as SPAM (it clearly isn't).
https://redd.it/1pn3a6t
@r_cpp
Under the recent posting "C++26 Reflection appreciation post", u/STL made some very interesting statements regarding Microsoft's support for C++.
I wouldn't myself expect to find such comments inside a discussion about Reflection, but alas, this is reddit.
I do appreciate these insights a lot and I am convinced that these comments deserve to be highlighted in a separate posting. This is my second try at doing this. Let's see how this one goes.
u/bizwig asked:
>Does Microsoft still support C++? There was some press reporting implying MS was going to stop further development on non-proprietary development tools and concentrate on C#.
u/STL responded:
>Yes. The compiler (front-end, back-end, static analysis), standard library, and Address Sanitizer are being actively developed by what I believe is still the largest single team of C++ toolset engineers employed by any one company.
(emphasis mine)
u/STL gave a number of other interesting insights into the state of affairs re C++ at Microsoft. I recommend to read his comments at the posting linked at the top.
Please note that u/STL is not making statements on behalf of Microsoft (as I understand it), but he is a highly respected member of r/cpp, a moderator of this subreddit and the implementer of the MSVC C++ Standard Library.
I'm not related to Microsoft in any way (other than being a user of their products and their C++ toolchain) and I'm not interested in collecting reddit karma (as someone suspected at my last try).
Thank you for not reporting this posting as SPAM (it clearly isn't).
https://redd.it/1pn3a6t
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Computer vision for code: What PVS-Studio saw in OpenCV
https://pvs-studio.com/en/blog/posts/cpp/1321/
https://redd.it/1pn7m1q
@r_cpp
https://pvs-studio.com/en/blog/posts/cpp/1321/
https://redd.it/1pn7m1q
@r_cpp
PVS-Studio
Computer vision for code: What PVS-Studio saw in OpenCV
What do computer vision and static analysis have in common? Both seek meaning in data. OpenCV finds images among millions of pixels, while PVS-Studio finds errors among thousands of code lines. This...
[ANN] Boost.OpenMethod overview — open multi‑methods in Boost 1.90
https://www.boost.org/outreach/program_page/openmethod/
https://redd.it/1pn8zqj
@r_cpp
https://www.boost.org/outreach/program_page/openmethod/
https://redd.it/1pn8zqj
@r_cpp
New C++ Conference Videos Released This Month - December 2025 (Updated To Include Videos Released 08/12/25 - 14/12/25)
**CppCon**
2025-12-08 - 2025-12-14
* Back to Basics: How to Refactor C++ Code - Amir Kirsh - [https://youtu.be/jDpvZtdGpj8](https://youtu.be/jDpvZtdGpj8)
* Is The Future of C++ Refactoring Declarative? - Andy Soffer - [https://youtu.be/NuzWd3HAUko](https://youtu.be/NuzWd3HAUko)
* Can C++ Data Oriented Design Be ONE MILLION Times Faster? - [https://youtu.be/IO7jl1rjRvA](https://youtu.be/IO7jl1rjRvA)
* The Declarative Programming SECRETS to More Readable C++ - Richard Powell - [https://youtu.be/xu4pI72zlO4](https://youtu.be/xu4pI72zlO4)
* Crafting the Code You Don’t Write: Sculpting Software in an AI World - Daisy Hollman - [https://youtu.be/v6OyVjQpjjc](https://youtu.be/v6OyVjQpjjc)
2025-12-01 - 2025-12-07
* Optimize Automatic Differentiation Performance in C++ - Steve Bronder - [https://youtu.be/\_YCbGWXkOuo](https://youtu.be/_YCbGWXkOuo)
* Is Your C++ Code Leaking Memory? Discover the Power of Ownership-Aware Profiling - Alecto Irene Perez - [https://youtu.be/U23WkMWIkkE](https://youtu.be/U23WkMWIkkE)
* The Dangers of C++: How to Mitigate Them and Write Safe C++ - Assaf Tzur-El - [https://youtu.be/6eYCMcOYbYA](https://youtu.be/6eYCMcOYbYA)
* Implementing Your Own C++ Atomics - Ben Saks - CppCon 2025 - [https://youtu.be/LtwQ7xZZIF4](https://youtu.be/LtwQ7xZZIF4)
* Building Secure C++ Applications: A Practical End-to-End Approach - Chandranath Bhattacharyya & Bharat Kumar - [https://youtu.be/GtYD-AIXBHk](https://youtu.be/GtYD-AIXBHk)
**C++Now**
2025-12-08 - 2025-12-14
* Lightning Talk: Printf in 1ns Using the Lightweight Logging Library - Greg Law - [https://youtu.be/nH1YT1mrPt0](https://youtu.be/nH1YT1mrPt0)
* Lightning Talk: C++ Rvalue Ranges Aren’t Always Yours - Robert Leahy - C++Now 2025 - [https://youtu.be/\_WiP71KPnU8](https://youtu.be/_WiP71KPnU8)
* Lightning Talk: Implementing an Observable with Friend Injection in C++ - Patrick Roberts - C++Now 2025 - [https://youtu.be/APtmRDBem20](https://youtu.be/APtmRDBem20)
2025-12-01 - 2025-12-07
* Lightning Talk: I Now Maybe Understand C++ Hazard Pointers - Denis Yaroshevskiy - [https://youtu.be/VKbfinz6D04](https://youtu.be/VKbfinz6D04)
* Lightning Talk: constexpr Copyright - Ben Deane - [https://youtu.be/WHgZIC-lsiU](https://youtu.be/WHgZIC-lsiU)
* Lightning Talk: Replace Git With JJ - Your New Version Control & DevOps Solution - Matt Kulukundis - [https://youtu.be/mbK8szLJ-2w](https://youtu.be/mbK8szLJ-2w)
**ACCU**
2025-12-08 - 2025-12-14
* Agentic Debugging Using Time Travel - Greg Law - ACCU York - [https://youtu.be/Hn7vihunjSk](https://youtu.be/Hn7vihunjSk)
* Automate! - Gail Ollis - ACCU 2025 Short Talks - [https://youtu.be/XZUsX6SeA5I](https://youtu.be/XZUsX6SeA5I)
* Do Something: Mindfulness & Mental Health for Software Engineers - Patrick Martin - ACCU Short Talks - [https://youtu.be/zl4HVtkO\_II](https://youtu.be/zl4HVtkO_II)
* Can You Use AWS To Deploy a Serverless Function in Under an Hour? - Paul Grenyer - ACCU York - [https://youtu.be/yK1UpigHU8s](https://youtu.be/yK1UpigHU8s)
* UB Forte - Hilarious Programming Humor - Chris Oldwood - ACCU 2025 Short Talks - [https://youtu.be/hBYWiQfG4Gs](https://youtu.be/hBYWiQfG4Gs)
2025-12-01 - 2025-12-07
* Programming Puzzles - Programming Challenge - Pete Goodliffe - ACCU 2025 Short Talks - [https://youtu.be/jq\_dJPSi\_3M](https://youtu.be/jq_dJPSi_3M)
* C++20 Ranges - The Stuff of Science Fiction - Stewart Becker - ACCU 2025 Short Talks - [https://youtu.be/Key-bfvDHcE](https://youtu.be/Key-bfvDHcE)
* C++ Keywords Speak for Themselves - Jon Kalb - ACCU 2025 Short Talks - [https://youtu.be/zv9eTr1dCU0](https://youtu.be/zv9eTr1dCU0)
**C++ on Sea**
2025-12-08 - 2025-12-14
* Lightning Talk: Naming is Hard - A Field Study - Tina Ulbrich - C++ on Sea 2025 - [https://youtu.be/PPTLeZhuB1E](https://youtu.be/PPTLeZhuB1E)
* Lightning Talk: It Is a Pipe, but Should It Be? (Sorry Magritte) - Björn Fahller - C++ on Sea 2025 - [https://youtu.be/XKVyoWvPCCw](https://youtu.be/XKVyoWvPCCw)
* Lightning
**CppCon**
2025-12-08 - 2025-12-14
* Back to Basics: How to Refactor C++ Code - Amir Kirsh - [https://youtu.be/jDpvZtdGpj8](https://youtu.be/jDpvZtdGpj8)
* Is The Future of C++ Refactoring Declarative? - Andy Soffer - [https://youtu.be/NuzWd3HAUko](https://youtu.be/NuzWd3HAUko)
* Can C++ Data Oriented Design Be ONE MILLION Times Faster? - [https://youtu.be/IO7jl1rjRvA](https://youtu.be/IO7jl1rjRvA)
* The Declarative Programming SECRETS to More Readable C++ - Richard Powell - [https://youtu.be/xu4pI72zlO4](https://youtu.be/xu4pI72zlO4)
* Crafting the Code You Don’t Write: Sculpting Software in an AI World - Daisy Hollman - [https://youtu.be/v6OyVjQpjjc](https://youtu.be/v6OyVjQpjjc)
2025-12-01 - 2025-12-07
* Optimize Automatic Differentiation Performance in C++ - Steve Bronder - [https://youtu.be/\_YCbGWXkOuo](https://youtu.be/_YCbGWXkOuo)
* Is Your C++ Code Leaking Memory? Discover the Power of Ownership-Aware Profiling - Alecto Irene Perez - [https://youtu.be/U23WkMWIkkE](https://youtu.be/U23WkMWIkkE)
* The Dangers of C++: How to Mitigate Them and Write Safe C++ - Assaf Tzur-El - [https://youtu.be/6eYCMcOYbYA](https://youtu.be/6eYCMcOYbYA)
* Implementing Your Own C++ Atomics - Ben Saks - CppCon 2025 - [https://youtu.be/LtwQ7xZZIF4](https://youtu.be/LtwQ7xZZIF4)
* Building Secure C++ Applications: A Practical End-to-End Approach - Chandranath Bhattacharyya & Bharat Kumar - [https://youtu.be/GtYD-AIXBHk](https://youtu.be/GtYD-AIXBHk)
**C++Now**
2025-12-08 - 2025-12-14
* Lightning Talk: Printf in 1ns Using the Lightweight Logging Library - Greg Law - [https://youtu.be/nH1YT1mrPt0](https://youtu.be/nH1YT1mrPt0)
* Lightning Talk: C++ Rvalue Ranges Aren’t Always Yours - Robert Leahy - C++Now 2025 - [https://youtu.be/\_WiP71KPnU8](https://youtu.be/_WiP71KPnU8)
* Lightning Talk: Implementing an Observable with Friend Injection in C++ - Patrick Roberts - C++Now 2025 - [https://youtu.be/APtmRDBem20](https://youtu.be/APtmRDBem20)
2025-12-01 - 2025-12-07
* Lightning Talk: I Now Maybe Understand C++ Hazard Pointers - Denis Yaroshevskiy - [https://youtu.be/VKbfinz6D04](https://youtu.be/VKbfinz6D04)
* Lightning Talk: constexpr Copyright - Ben Deane - [https://youtu.be/WHgZIC-lsiU](https://youtu.be/WHgZIC-lsiU)
* Lightning Talk: Replace Git With JJ - Your New Version Control & DevOps Solution - Matt Kulukundis - [https://youtu.be/mbK8szLJ-2w](https://youtu.be/mbK8szLJ-2w)
**ACCU**
2025-12-08 - 2025-12-14
* Agentic Debugging Using Time Travel - Greg Law - ACCU York - [https://youtu.be/Hn7vihunjSk](https://youtu.be/Hn7vihunjSk)
* Automate! - Gail Ollis - ACCU 2025 Short Talks - [https://youtu.be/XZUsX6SeA5I](https://youtu.be/XZUsX6SeA5I)
* Do Something: Mindfulness & Mental Health for Software Engineers - Patrick Martin - ACCU Short Talks - [https://youtu.be/zl4HVtkO\_II](https://youtu.be/zl4HVtkO_II)
* Can You Use AWS To Deploy a Serverless Function in Under an Hour? - Paul Grenyer - ACCU York - [https://youtu.be/yK1UpigHU8s](https://youtu.be/yK1UpigHU8s)
* UB Forte - Hilarious Programming Humor - Chris Oldwood - ACCU 2025 Short Talks - [https://youtu.be/hBYWiQfG4Gs](https://youtu.be/hBYWiQfG4Gs)
2025-12-01 - 2025-12-07
* Programming Puzzles - Programming Challenge - Pete Goodliffe - ACCU 2025 Short Talks - [https://youtu.be/jq\_dJPSi\_3M](https://youtu.be/jq_dJPSi_3M)
* C++20 Ranges - The Stuff of Science Fiction - Stewart Becker - ACCU 2025 Short Talks - [https://youtu.be/Key-bfvDHcE](https://youtu.be/Key-bfvDHcE)
* C++ Keywords Speak for Themselves - Jon Kalb - ACCU 2025 Short Talks - [https://youtu.be/zv9eTr1dCU0](https://youtu.be/zv9eTr1dCU0)
**C++ on Sea**
2025-12-08 - 2025-12-14
* Lightning Talk: Naming is Hard - A Field Study - Tina Ulbrich - C++ on Sea 2025 - [https://youtu.be/PPTLeZhuB1E](https://youtu.be/PPTLeZhuB1E)
* Lightning Talk: It Is a Pipe, but Should It Be? (Sorry Magritte) - Björn Fahller - C++ on Sea 2025 - [https://youtu.be/XKVyoWvPCCw](https://youtu.be/XKVyoWvPCCw)
* Lightning
YouTube
Back to Basics: How to Refactor C++ Code - Amir Kirsh
https://cppcon.org
---
Back to Basics: How to Refactor C++ Code - Amir Kirsh - CppCon 2025
---
Writing C++ code is one thing, keeping it clean, readable and maintainable over time is another. In this talk, we'll review the basics of refactoring C++ code…
---
Back to Basics: How to Refactor C++ Code - Amir Kirsh - CppCon 2025
---
Writing C++ code is one thing, keeping it clean, readable and maintainable over time is another. In this talk, we'll review the basics of refactoring C++ code…
Talk: From Wide to Wrong - Spotting Dangerous Conversions in C++ - Nico Eichhorn - C++ on Sea 2025 - [https://youtu.be/-Qx7L5iv8Hw](https://youtu.be/-Qx7L5iv8Hw)
2025-12-01 - 2025-12-07
* Lightning Talk: Pólya Performance Thinking - Andrew Drakeford - [https://youtu.be/qZPBr\_jhE1o](https://youtu.be/qZPBr_jhE1o)
* Lightning Talk: Teaching the NES - What 6502 Assembly Reveals About Modern C++ - Tom Tesch - [https://youtu.be/gCM5t0Txf8U](https://youtu.be/gCM5t0Txf8U)
* Lightning Talk: Terminating Your Bugs With Time Travel and AI - Rashmi Khetan - [https://youtu.be/-OrJyN2Mw7s](https://youtu.be/-OrJyN2Mw7s)
**Meeting C++**
2025-12-08 - 2025-12-14
* Meet Qt - Ganesh Rengasamy - Meeting C++ 2025 Lightning talks - [https://www.youtube.com/watch?v=dVwQG2zS4zE](https://www.youtube.com/watch?v=dVwQG2zS4zE)
* Start teaching C++ (to beginners!) - Hannah Lenk - Meeting C++ 2025 lighning talks - [https://www.youtube.com/watch?v=f6fEB2N1i00](https://www.youtube.com/watch?v=f6fEB2N1i00)
2025-12-01 - 2025-12-07
* Our Most Treacherous Adversary - James McNellis - Meeting C++ 2025 lightning talks - [https://www.youtube.com/watch?v=zC\_uwGqSLqQ](https://www.youtube.com/watch?v=zC_uwGqSLqQ)
* Let them eat cake - Rahel Natalie Engel - Meeting C++ 2025 lightning talks - [https://www.youtube.com/watch?v=gQ6grpbhW8k](https://www.youtube.com/watch?v=gQ6grpbhW8k)
* Vector to Array - Robin Savonen Söderholm - Meeting C++ 2025 - [https://www.youtube.com/watch?v=TdL2rvtOGos](https://www.youtube.com/watch?v=TdL2rvtOGos)
https://redd.it/1pner3w
@r_cpp
2025-12-01 - 2025-12-07
* Lightning Talk: Pólya Performance Thinking - Andrew Drakeford - [https://youtu.be/qZPBr\_jhE1o](https://youtu.be/qZPBr_jhE1o)
* Lightning Talk: Teaching the NES - What 6502 Assembly Reveals About Modern C++ - Tom Tesch - [https://youtu.be/gCM5t0Txf8U](https://youtu.be/gCM5t0Txf8U)
* Lightning Talk: Terminating Your Bugs With Time Travel and AI - Rashmi Khetan - [https://youtu.be/-OrJyN2Mw7s](https://youtu.be/-OrJyN2Mw7s)
**Meeting C++**
2025-12-08 - 2025-12-14
* Meet Qt - Ganesh Rengasamy - Meeting C++ 2025 Lightning talks - [https://www.youtube.com/watch?v=dVwQG2zS4zE](https://www.youtube.com/watch?v=dVwQG2zS4zE)
* Start teaching C++ (to beginners!) - Hannah Lenk - Meeting C++ 2025 lighning talks - [https://www.youtube.com/watch?v=f6fEB2N1i00](https://www.youtube.com/watch?v=f6fEB2N1i00)
2025-12-01 - 2025-12-07
* Our Most Treacherous Adversary - James McNellis - Meeting C++ 2025 lightning talks - [https://www.youtube.com/watch?v=zC\_uwGqSLqQ](https://www.youtube.com/watch?v=zC_uwGqSLqQ)
* Let them eat cake - Rahel Natalie Engel - Meeting C++ 2025 lightning talks - [https://www.youtube.com/watch?v=gQ6grpbhW8k](https://www.youtube.com/watch?v=gQ6grpbhW8k)
* Vector to Array - Robin Savonen Söderholm - Meeting C++ 2025 - [https://www.youtube.com/watch?v=TdL2rvtOGos](https://www.youtube.com/watch?v=TdL2rvtOGos)
https://redd.it/1pner3w
@r_cpp
YouTube
Lightning Talk: From Wide to Wrong - Spotting Dangerous Conversions in C++ - Nico Eichhorn
https://cpponsea.uk
---
Lightning Talk: From Wide to Wrong - Spotting Dangerous Conversions in C++ - Nico Eichhorn - C++ on Sea 2025
---
Detecting narrowing for functor calls
---
Sponsored by Bloomberg: https://www.bloomberg.com/company/values/tech-at…
---
Lightning Talk: From Wide to Wrong - Spotting Dangerous Conversions in C++ - Nico Eichhorn - C++ on Sea 2025
---
Detecting narrowing for functor calls
---
Sponsored by Bloomberg: https://www.bloomberg.com/company/values/tech-at…
[Open Source] IACore: A battery-included C++20 foundation library (IPC, Async, HTTP, Logging) to escape dependency hell.
Hey friends,
Like many of you, I grew tired of "C++ Dependency Hell".. Every time I started a new project (specifically game engines and dev tools), I found myself wasting days setting up the same glue code: finding an HTTP library, setting up a job system, wrestling with platform-specific IPC, and configuring a logger.
I wanted a "bedrock" library—something I could drop into any project and immediately have the essentials working, without linking 50 different `.lib` files manually.
So I built **IACore**. It started as the internal core library for my work at **IASoft**, but I realized it solves a problem almost every C++ dev faces. I’ve cleaned it up, added tests, and I'm open-sourcing it under GPLv3 today.
**What's inside?** It wraps "best-in-class" dependencies into a unified, coherent C++20 API. It manages its own deps via CMake `FetchContent`, so you don't need to install anything manually.
* **⚡ IPC:** High-performance shared-memory ring buffers (wait-free SPSC).
* **🧵 Async:** A work-stealing job scheduler (High/Normal priority queues).
* **🌐 Networking:** A clean wrapper around `cpp-httplib` that handles Zlib/Gzip compression automatically.
* **📂 IO:** Memory-mapped file operations and optimized binary stream readers/writers.
* **🛠️ Modern:** Uses `std::span`, `tl::expected`, and C++20 concepts throughout.
**Where to get it:** [https://github.com/I-A-S/IACore](https://github.com/I-A-S/IACore)
Any and all feedback & questions are welcome! (Even the rude ones—I know how r/cpp can be sometimes 😆 ).
# Examples
**1. Async Tasks**
C++
#include <IACore/AsyncOps.hpp>
// Initialize worker threads (hardware_concurrency - 2)
IACore::AsyncOps::InitializeScheduler();
// Schedule a task
auto* mySchedule = new IACore::AsyncOps::Schedule();
IACore::AsyncOps::ScheduleTask([](auto workerID) {
printf("Running on worker %d\n", workerID);
}, 0, mySchedule);
// Wait for completion
IACore::AsyncOps::WaitForScheduleCompletion(mySchedule);
**2. HTTP Request**
C++
#include <IACore/HttpClient.hpp>
IACore::HttpClient client("https://api.example.com");
auto res = client.JsonGet<MyResponseStruct>("/data", {});
if (res) {
std::cout << "Data: " << res->value << "\n";
} else {
std::cerr << "Error: " << res.error() << "\n";
}
**3. IPC (Shared Memory Ring Buffer)**
*Manager:*
C++
#include <IACore/IPC.hpp>
// Spawns a child process and connects via Shared Memory
auto nodeID = manager.SpawnNode("MyChildNodeExe");
manager.WaitTillNodeIsOnline(*nodeID);
// Send data with zero-copy overhead
String msg = "Hello Node";
manager.SendPacket(*nodeID, 100, {(PCUINT8)msg.data(), msg.size()});
*Node:*
C++
#include <IACore/IPC.hpp>
class Node : public IACore::IPC_Node {
public:
void OnSignal(uint8_t signal) override {
// Handle signals
}
void OnPacket(uint16_t packetID, std::span<const uint8_t> payload) override {
// Handle packets
}
};
int main(int argc, char* argv[]) {
// The connection string is passed as the first argument by the Manager
if (argc < 2) return -1;
Node node;
// Connect back to the manager via Shared Memory
if (!node.Connect(argv[1])) return -1;
while(true) {
node.Update();
}
return 0;
}
https://redd.it/1pni3y8
@r_cpp
Hey friends,
Like many of you, I grew tired of "C++ Dependency Hell".. Every time I started a new project (specifically game engines and dev tools), I found myself wasting days setting up the same glue code: finding an HTTP library, setting up a job system, wrestling with platform-specific IPC, and configuring a logger.
I wanted a "bedrock" library—something I could drop into any project and immediately have the essentials working, without linking 50 different `.lib` files manually.
So I built **IACore**. It started as the internal core library for my work at **IASoft**, but I realized it solves a problem almost every C++ dev faces. I’ve cleaned it up, added tests, and I'm open-sourcing it under GPLv3 today.
**What's inside?** It wraps "best-in-class" dependencies into a unified, coherent C++20 API. It manages its own deps via CMake `FetchContent`, so you don't need to install anything manually.
* **⚡ IPC:** High-performance shared-memory ring buffers (wait-free SPSC).
* **🧵 Async:** A work-stealing job scheduler (High/Normal priority queues).
* **🌐 Networking:** A clean wrapper around `cpp-httplib` that handles Zlib/Gzip compression automatically.
* **📂 IO:** Memory-mapped file operations and optimized binary stream readers/writers.
* **🛠️ Modern:** Uses `std::span`, `tl::expected`, and C++20 concepts throughout.
**Where to get it:** [https://github.com/I-A-S/IACore](https://github.com/I-A-S/IACore)
Any and all feedback & questions are welcome! (Even the rude ones—I know how r/cpp can be sometimes 😆 ).
# Examples
**1. Async Tasks**
C++
#include <IACore/AsyncOps.hpp>
// Initialize worker threads (hardware_concurrency - 2)
IACore::AsyncOps::InitializeScheduler();
// Schedule a task
auto* mySchedule = new IACore::AsyncOps::Schedule();
IACore::AsyncOps::ScheduleTask([](auto workerID) {
printf("Running on worker %d\n", workerID);
}, 0, mySchedule);
// Wait for completion
IACore::AsyncOps::WaitForScheduleCompletion(mySchedule);
**2. HTTP Request**
C++
#include <IACore/HttpClient.hpp>
IACore::HttpClient client("https://api.example.com");
auto res = client.JsonGet<MyResponseStruct>("/data", {});
if (res) {
std::cout << "Data: " << res->value << "\n";
} else {
std::cerr << "Error: " << res.error() << "\n";
}
**3. IPC (Shared Memory Ring Buffer)**
*Manager:*
C++
#include <IACore/IPC.hpp>
// Spawns a child process and connects via Shared Memory
auto nodeID = manager.SpawnNode("MyChildNodeExe");
manager.WaitTillNodeIsOnline(*nodeID);
// Send data with zero-copy overhead
String msg = "Hello Node";
manager.SendPacket(*nodeID, 100, {(PCUINT8)msg.data(), msg.size()});
*Node:*
C++
#include <IACore/IPC.hpp>
class Node : public IACore::IPC_Node {
public:
void OnSignal(uint8_t signal) override {
// Handle signals
}
void OnPacket(uint16_t packetID, std::span<const uint8_t> payload) override {
// Handle packets
}
};
int main(int argc, char* argv[]) {
// The connection string is passed as the first argument by the Manager
if (argc < 2) return -1;
Node node;
// Connect back to the manager via Shared Memory
if (!node.Connect(argv[1])) return -1;
while(true) {
node.Update();
}
return 0;
}
https://redd.it/1pni3y8
@r_cpp
GitHub
GitHub - I-A-S/IACore
Contribute to I-A-S/IACore development by creating an account on GitHub.
Pseudo Reflection in C++20
I discovered constexpr member pointers somewhere when looking at c++20. You can use them as compile time annotations to enable full reflection in c++20.
I got tired of playing with BOOST and nholman and wanted a better solution to reflection and had a lot of fun doing this.
Your mileage may vary
https://github.com/johnagrillo/meta\_h/tree/main
https://redd.it/1pnm5a3
@r_cpp
I discovered constexpr member pointers somewhere when looking at c++20. You can use them as compile time annotations to enable full reflection in c++20.
I got tired of playing with BOOST and nholman and wanted a better solution to reflection and had a lot of fun doing this.
Your mileage may vary
https://github.com/johnagrillo/meta\_h/tree/main
https://redd.it/1pnm5a3
@r_cpp
GitHub
GitHub - johnagrillo/meta_h
Contribute to johnagrillo/meta_h development by creating an account on GitHub.
Writing a blatant Telegram clone using Qt, QML and Rust. And C++.
https://kemble.net/blog/provoke/
https://redd.it/1po0t2s
@r_cpp
https://kemble.net/blog/provoke/
https://redd.it/1po0t2s
@r_cpp
Kemble Software
Writing a blatant Telegram clone using Qt, QML and Rust. And C++.
This was a fun project for a couple of days, but I will probably shelve it for now so I can continue what I was already working on before. Read on to follow along with my journey.
Spoilers: I didn’t get very far.
Spoilers: I didn’t get very far.
Possible GCC reflection error
Playing with GCC I got a situation like this:
#include <algorithm>
#include <array>
#include <print>
#include <meta>
consteval auto Name(const int integer){
return std::meta::displaystringof(^^integer);
}
consteval auto Name(const std::meta::info meta){
return std::meta::displaystringof(meta);
}
// <source>:21:28: error: call to consteval function 'Name(^^int)' is not a constant expression
// 17 | std::println("{}", Name(^^int));
// | ~~~~^~~~~~~
// But removing const fix it!! (works in Clang P2996)
int main(){
std::println("{}", Name(3));
std::println("{}", Name(^^int));
return 0;
}
I think that this is not the expected behaviour, but is it a known bug to be patched?
https://redd.it/1po9oz2
@r_cpp
Playing with GCC I got a situation like this:
#include <algorithm>
#include <array>
#include <print>
#include <meta>
consteval auto Name(const int integer){
return std::meta::displaystringof(^^integer);
}
consteval auto Name(const std::meta::info meta){
return std::meta::displaystringof(meta);
}
// <source>:21:28: error: call to consteval function 'Name(^^int)' is not a constant expression
// 17 | std::println("{}", Name(^^int));
// | ~~~~^~~~~~~
// But removing const fix it!! (works in Clang P2996)
int main(){
std::println("{}", Name(3));
std::println("{}", Name(^^int));
return 0;
}
I think that this is not the expected behaviour, but is it a known bug to be patched?
https://redd.it/1po9oz2
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Use GWP-ASan to detect exploits in production environments
https://blog.trailofbits.com/2025/12/16/use-gwp-asan-to-detect-exploits-in-production-environments/
https://redd.it/1pod1jh
@r_cpp
https://blog.trailofbits.com/2025/12/16/use-gwp-asan-to-detect-exploits-in-production-environments/
https://redd.it/1pod1jh
@r_cpp
The Trail of Bits Blog
Use GWP-ASan to detect exploits in production environments
GWP-ASan is a sampling-based memory error detection tool that catches critical bugs like use-after-free and buffer overflows in production environments with near-zero performance overhead, unlike AddressSanitizer which is too resource-intensive for deployment.
Do C++ developers exist?
Howdy folks! 🤠
I’ve been running an open-source project that turns images into colour-by-number templates. The JS side of things is doing great and I’ve got contributors for that, and they’re awesome.
Getting someone to touch the C++ core is like trying to find a unicorn. Seriously, it’s like C++ is the Black Plague to these people.🧟♂️ Everyone wants to work on the fun JS stuff, the frontend & React Hook WebAssembly bridge… but when it comes to the heavy-lifting C++, suddenly it’s “too hard” or “nah, I’ll pass.”
I get it, C++ can be a beast, but this is literally the heart of the project. Without it, none of the clustering or image processing magic even works. It’s like asking someone to play Jenga with bricks instead of sticks: still fun, but way more painful!
So here I am, ranting to the void. You're my last hope. Help me find the only other C++ developers on this earth.😁
If you know of someone who secretly enjoys fighting with C++ memory management and optimization, you are my hero. The JS folks are doing great, but we need some brave souls to dive into the C++ trenches with me so we can help the JS guys continue enjoying life.
Does anyone else feel this pain in OSS projects? Or am I just cursed to be the only one hunting for C++ contributors forever?
https://redd.it/1pofyma
@r_cpp
Howdy folks! 🤠
I’ve been running an open-source project that turns images into colour-by-number templates. The JS side of things is doing great and I’ve got contributors for that, and they’re awesome.
Getting someone to touch the C++ core is like trying to find a unicorn. Seriously, it’s like C++ is the Black Plague to these people.🧟♂️ Everyone wants to work on the fun JS stuff, the frontend & React Hook WebAssembly bridge… but when it comes to the heavy-lifting C++, suddenly it’s “too hard” or “nah, I’ll pass.”
I get it, C++ can be a beast, but this is literally the heart of the project. Without it, none of the clustering or image processing magic even works. It’s like asking someone to play Jenga with bricks instead of sticks: still fun, but way more painful!
So here I am, ranting to the void. You're my last hope. Help me find the only other C++ developers on this earth.😁
If you know of someone who secretly enjoys fighting with C++ memory management and optimization, you are my hero. The JS folks are doing great, but we need some brave souls to dive into the C++ trenches with me so we can help the JS guys continue enjoying life.
Does anyone else feel this pain in OSS projects? Or am I just cursed to be the only one hunting for C++ contributors forever?
https://redd.it/1pofyma
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Using std::generator in practice - Nicolai Josuttis - Meeting C++ 2025
https://www.youtube.com/watch?v=Qpj9fVOoVAk
https://redd.it/1poh9n6
@r_cpp
https://www.youtube.com/watch?v=Qpj9fVOoVAk
https://redd.it/1poh9n6
@r_cpp
YouTube
C++23: using std::generator in practice - Nicolai Josuttis - Meeting C++ 2025
An introduction into std::generator in C++23 by Nico Josuttis at Meeting C++ 2025
Slides: https://slides.meetingcpp.com
C++20 introduced coroutines, which are functions that can be subspended and later resumed (in the same or a different context). As a consequence…
Slides: https://slides.meetingcpp.com
C++20 introduced coroutines, which are functions that can be subspended and later resumed (in the same or a different context). As a consequence…