-
Stay up-to-date with everything C++! Content directly fetched from the subreddit just for you. Join our group for discussions : @programminginc Powered by : @r_channels
Here is a minimalist tickle for your fancy ...
... stripped from an old project (hope I got formatting right).
# -*- mode: Makefile; -*-
OSNAME := $(shell uname)
WARNFLAGS =
CXXFLAGS = -g -O -std=c++23 $(WARNFLAGS)
CPPFLAGS = -I. -I..
LDFLAGS =
LIBS =
DEPENDDIR = ./.deps
DEPENDFLAGS = -M
SRCS := $(wildcard *.cc)
OBJS := $(patsubst %.cc,%.o,$(SRCS))
TARGETS = someprog
all: $(TARGETS)
DEPS = $(patsubst %.o,$(DEPENDDIR)/%.d,$(OBJS))
-include $(DEPS)
$(DEPENDDIR)/%.d: %.cc $(DEPENDDIR)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(DEPENDFLAGS) $< >$@
$(DEPENDDIR):
@[ ! -d $(DEPENDDIR) ] && mkdir -p $(DEPENDDIR)
%: $(OBJS)
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
%.o: $(SRCS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
%: %.cc
.PHONY: clean
clean:
rm -rf $(OBJS) $(TARGETS) $(DEPENDDIR)
https://redd.it/1ne847u
@r_cpp
Good Library for a 2D RPG game?
I want to start learning how to make an actual game with the windows and stuff with C++. What libraries do I need to make it on VS Code?
Also, I have made a fairly simple game before on Java, if there is anything similar to it.
https://redd.it/1ne26g3
@r_cpp
C++ Language Updates in MSVC Build Tools v14.50
https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/
https://redd.it/1ndfmvk
@r_cpp
C++ Day 2025: Agenda & Free Tickets
Hi all!
The agenda for C++ Day 2025 is now live (all talks will be in English), and (free) tickets are available!
When & where: October 25, in Pavia (northern Italy)
What: a half-day of C++ talks + networking
Organized by the Italian C++ Community together with SEA Vision (our host & main sponsor). Two more sponsors are already confirmed, with others in the pipeline.
Check out the agenda & grab your ticket: http://italiancpp.org/cppday25
See you there!
Marco
https://redd.it/1nd7y1f
@r_cpp
announced their schedule for ADC 2025 which you can find at [https://conference.audio.dev/schedule/adc25/](https://conference.audio.dev/schedule/adc25/)
* **ACCU on Sea Registration Is Now Open** – You can buy super early bird tickets at [https://accuconference.org/booking](https://accuconference.org/booking) with discounts available for ACCU members.
Finally anyone who is coming to a conference in the UK such as C++ on Sea or ADC from overseas **may now be required to obtain Visas to attend**. Find out more including how to get a VISA at [https://homeofficemedia.blog.gov.uk/electronic-travel-authorisation-eta-factsheet-january-2025/](https://homeofficemedia.blog.gov.uk/electronic-travel-authorisation-eta-factsheet-january-2025/)
https://redd.it/1nclmuz
@r_cpp
Visual Studio 2026 Insiders is here! - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/visual-studio-2026-insiders-is-here/
https://redd.it/1ncpb0b
@r_cpp
When maps map iterators are invalidated after insert.
This issue surprised me today and it is related to reverse iterators.
On the emplace reference page it is fairly clear:
> No iterators or references are invalidated.
Same with insert, with a caveat relating to node handles.
But apparently, this does not apply to rend():
https://godbolt.org/z/zeTznKq6K
Perhaps I am just ignorant of how map reverse iterators work but I've never picked up on this before. It was actually debugging in MSVC which led me to it and wouldn't allow the comparison ritr == map.rend() at all, so is it actually UB?
https://redd.it/1ncn921
@r_cpp
Clang 16 on Ubuntu 22.04 fails to run (missing libtinfo.so.5) — need a solution without upgrading or installing libtinfo5
Hey folks,
I’m maintaining a C++ project that currently builds with inbuilt Clang 16. We tried upgrading to Clang 21, but there are way too many build errors, so upgrading isn’t an option right now.
The issue is that when running Clang 16 on Ubuntu 22.04, I get this error (clang: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory).
Ubuntu 22.04 only ships libtinfo6, and my client doesn’t want to install the older libtinfo5 package on their build machine.
I need to keep Clang 16 but also make it work without installing libtinfo5.
Has anyone solved this cleanly?
Thanks in advance!
https://redd.it/1ncelpd
@r_cpp
Why the hate for memory safety?
Hi, I'm coming from rust and I just recently heard the news about how C++ is considering memory safety, yet from my observation c++ doesn't want it. I'm a little perplexed by this, isn't the biggest ( probably dangerous) feature of c++ is the danger of memory leaks and such. Wouldn't that fix or make c++ objective better?
https://redd.it/1nbzpj3
@r_cpp
Entry Level Jobs
Hi, I’m a final-year bachelor’s student from India, and I’m trying to figure out how to look for entry-level C++ roles. My C++ knowledge is decent for a college student, though I know I still have a lot to improve. I’m learning and practicing every day, but I feel stuck when it comes to finding jobs or internships.
https://redd.it/1nbnaem
@r_cpp
Seq Library v2 release
Hi everyone,
The version 2 of the seq library has been released at https://github.com/Thermadiag/seq
Seq is a (now header-only) C++17 library providing original STL-like containers and related tools like:
\- seq::flat_set/map: An ordered flat map similar to std::flat_map or boost::container::flat_map, but with fast insertion/deletion of single elements.
\- seq::radix_set/map: ordered map using a Burst Trie derivative with (usually) very fast performances for all types of workload.
\- seq::radix_hash_set/map: radix-based hash map with incremental rehash and low memory footprint.
\- seq::ordered_set/map: hash map that preserves insertion order with stable references/iterators.
\- seq::concurrent_set/map: highly scalable concurrent hash map with an interface similar to boost::concurrent_flat_map (and increased performances according to my benchmarks).
\- Random-access containers: seq::devector and seq::tiered_vector.
\- seq::tiny_string: relocatable string-like class with customizable SSO.
Feel free to try/share/comment/correct!
Bests
https://redd.it/1nbiwie
@r_cpp
Meson modules support: initial modules support with Clang and example project. Dependency resolution, partitions and import std.
Hello everyone,
I have been working in modules support for Meson build system lately in a branch. I am focusing on Clang support as a first step (gcc should follow). Tested in Homebrew Clang 19, feedback is welcome.
I have reached a point where the branch can:
- 'import std' and use it.
- generate all dependencies via clang-scan-deps and do correct resolution.
The targets are used as usual (a library target, etc.)
PR is here: https://github.com/mesonbuild/meson/pull/14989
## What it does currently.
clang-scan-deps does a bulk scan of the whole compilecommands.json database file and determines which file provides and requires each module, globally.
Resolution order works by adding ninja build rules and dyndep resolution (except if you find any bugs or corner cases, but at least for my project it has worked correctly so far).
## How you can try it
You can download the latest commit of your branch.
Note that clang-scan-deps must be installed and found in your path and you need Clang >= 17, though Clang 19 is what I tested and recommend.
Your target should have a flat structure inside your directory as of now, and relies on the following conventions:
- your primary interface unit for your module should always
be called 'module.cppm'. It should export module 'target-name'.
- your interface partitions can have any name supported by a module.
For example: MyThings.cppm. The interface partition
should declare 'export module target-name:MyThings'.
- Your importable interface implementation units should end with
'Impl.cppm'. For example 'MyThingsImpl.cppm'. This should
'module target-name:MyThings' (without export).
- Your non-importable implementation can have any name with an
extension .cpp, not a .cppm, since implementation units are
not importable. It is highly recommended, though, that if you
have a single implementation file, it is called moduleImpl.cpp.
It must do 'module target-name;'
- You can have regular (non-module) translation unit file
without any module declarations in your target and can
include files as usual, etc. incrementally, but for modules side
of things the conventions are as above.
There is also a project you can play with at the top-level comment attached, at the beginning.
Here is an example target with project as an example of how you should use it. Please, use a flat file structure inside your directory for your target, it is the convention for now:
Meson.build example (cppimportstd compiles the std module and implicitly adds the dependency to c++ targets):
```
project('Your project', 'cpp',
defaultoptions: 'cpp_std=c++23',
'buildtype=release',
'cpp_import_std=true',
version: '0.1')
# The directory does not need to have the name of the module,
# only the target itself
subdir('src/mymod')
meson.build in src/mymod
I made a custom container. Is this a good idea? (A smart_seq container)
https://github.com/illegal-instruction-co/smart_seq
https://redd.it/1nb8q9c
@r_cpp
Simulating stuff in C++
Hello guys, i’m a beginner in learning c++ and i am using a book called “Jumping into C++” by Alex Allain. In some practice problems I need to simulate some stuff like a visual tic-tac-toe game (with the square brackets) where you can play with 2 players, but the book doesn’t seem to tell me how I can make these brackets or how to turn input like a ‘X’ or ‘O’ in the output so that you can see the brackets with either X or O’s in them. Does anyone know anything about how to make such games (or know a good video about it)? Thanks in advance
https://redd.it/1mxam8k
@r_cpp
Heterogeneous Message Handler
https://biowpn.github.io/bioweapon/2025/08/20/heterogeneous-message-handler.html
https://redd.it/1mx4nyr
@r_cpp
Modern C++23 Makefile for new projects
This is a modern makefile that I came up with for new projects that use the latest standard, with very very strict warnings to make sure your code is in good shape.
Just wanted to share because people keep saying that C++ is unsafe and that's BS, you just need to get your warnings right.
CXX := g++
WARNINGS := \
-Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wshadow \
-Wdouble-promotion -Wformat=2 -Wundef -Wcast-qual -Wcast-align=strict \
-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Wnull-dereference \
-Wunused -Wuninitialized -Winit-self -Wswitch-enum -Wredundant-decls \
-Wsuggest-override -Wimplicit-fallthrough=5 -Walloca -Werror
DEBUG_FLAGS := -O0 -g3 -fsanitize=address,undefined -fno-omit-frame-pointer
RELEASE_FLAGS := -O3 -march=native -DNDEBUG -flto
SRC_DIR := src
BUILD_DIR := build
BIN_DIR := bin
TARGET := myprogram
SRC := $(wildcard $(SRC_DIR)/*.cpp)
OBJ := $(SRC:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/$(MODE)/%.o)
all: release
debug: MODE := debug
debug: CXXFLAGS = $(DEBUG_FLAGS) $(WARNINGS) -std=c++23
debug: dirs $(BIN_DIR)/$(TARGET)
release: MODE := release
release: CXXFLAGS = $(RELEASE_FLAGS) $(WARNINGS) -std=c++23
release: dirs $(BIN_DIR)/$(TARGET)
$(BIN_DIR)/$(TARGET): $(OBJ)
$(CXX) $(CXXFLAGS) $^ -o $@
$(BUILD_DIR)/$(MODE)/%.o: $(SRC_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
dirs:
@mkdir -p $(BUILD_DIR)/debug $(BUILD_DIR)/release $(BIN_DIR)
clean:
rm -rf $(BUILD_DIR) $(BIN_DIR)
.PHONY: all debug release clean dirs
https://redd.it/1ne4fu5
@r_cpp
Pointers and References as Parameters and Arguments in Functions
Hey guys, I was working on a project for a class of mine, and I wanted to make sure that I could properly explain myself. This is for Computer Science 2, so I don't need it to be overly technical. I was working with a function that required one of the arguments to be a pointer, but it worked when I was passing a variable with the address-of operator (&). This seems kind of odd to me without some sort of explanation of datatype decay/conversion or something because a pointer holds an address, but isn't *exactly* an address. Could I get some explanations?
https://redd.it/1ndlz7n
@r_cpp
Sourcetrail (Fork) 2025.9.9 released
Hi everybody,
Sourcetrail 2025.9.9, a fork of the C++/Java source explorer, has been released with these changes:
C/C++: Add indexing of `auto` return types
GUI: Allow tab closing with middle mouse click
GUI: Improve layout of license window content
GUI: Add Open to context menu of start window
https://redd.it/1nd9o10
@r_cpp
I feel that I lack the logical thinking ability needed for programming. What should I do?
https://redd.it/1nd6bkn
@r_cpp
Latest News From Upcoming C++ Conferences (2025-09-09)
This Reddit post will now be a roundup of any **new** news from upcoming conferences with then the full list being available at [https://programmingarchive.com/upcoming-conference-news/](https://programmingarchive.com/upcoming-conference-news/)
**EARLY ACCESS TO YOUTUBE VIDEOS**
The following conferences are offering Early Access to their YouTube videos:
* **ACCU Early Access Now Open (£35 per year) –** Access all 91 YouTube videos from the 2025 Conference through the Early Access Program. In addition, gain additional benefits such as the journals, and a discount to the yearly conference by joining ACCU today. Find out more about the membership including how to join at [https://www.accu.org/menu-overviews/membership/](https://www.accu.org/menu-overviews/membership/)
* Anyone who attended the ACCU 2025 Conference who is NOT already a member will be able to claim free digital membership.
**OPEN CALL FOR SPEAKERS**
No Open Calls For Speakers
**OTHER OPEN CALLS**
* **ADC25 Call For Posters Now Open** – Anyone interested in submitting a poster can submit
* **A Virtual Poster** which will be shown online at ADC25 – [https://docs.google.com/forms/d/e/1FAIpQLSeJkXEzb–rWX-LBUErWA0gyfUX\_CXBCUYF5fwg\_agDwMppeQ/viewform?usp=dialog](https://docs.google.com/forms/d/e/1FAIpQLSeJkXEzb--rWX-LBUErWA0gyfUX_CXBCUYF5fwg_agDwMppeQ/viewform?usp=dialog)
* **A Physical Poster** which will be shown in-person at ADC25 – [https://docs.google.com/forms/d/e/1FAIpQLScI4gxxwkQNiyANMuluaCSE39C1ZhQOES3424YW8jK9tA291A/viewform?usp=dialog](https://docs.google.com/forms/d/e/1FAIpQLScI4gxxwkQNiyANMuluaCSE39C1ZhQOES3424YW8jK9tA291A/viewform?usp=dialog)
* **ADC Call For Online Volunteers Now Open** – Anyone interested in volunteering online for ADC 2025 on Monday 10th – Wednesday 12th November have until October 1st to apply. Find out more here [https://docs.google.com/forms/d/e/1FAIpQLScpH\_FVB-TTNFdbQf4m8CGqQHrP8NWuvCEZjvYRr4Vw20c3wg/viewform?usp=dialog](https://docs.google.com/forms/d/e/1FAIpQLScpH_FVB-TTNFdbQf4m8CGqQHrP8NWuvCEZjvYRr4Vw20c3wg/viewform?usp=dialog)
**TICKETS AVAILABLE TO PURCHASE**
The following conferences currently have tickets available to purchase
* **CppCon** – **Last chance to buy tickets** to attend CppCon 2025 in-person at Aurora, Colorado which starts next week. Visit [https://cppcon.org/registration/](https://cppcon.org/registration/) for more information.
* **ADCx Gather** – You can attend ADCx Gather for free. Find out how at [https://audio.dev/adcx-gather-info/](https://audio.dev/adcx-gather-info/)
* **C++ Under The Sea** – You can now buy tickets to attend C++ Under The Sea 2025 at Breda, Netherlands at [https://store.ticketing.cm.com/cppunderthesea2025/step/4f730cc9-df6a-4a7e-b9fe-f94cfdf8e0cc](https://store.ticketing.cm.com/cppunderthesea2025/step/4f730cc9-df6a-4a7e-b9fe-f94cfdf8e0cc)
* **\[NEW\] C++Day** – You can attend C++Day in-person for free by visiting [https://italiancpp.github.io/cppday25/#reservation](https://italiancpp.github.io/cppday25/#reservation)
* **ADC** – **Last chance to buy early bird tickets** to attend ADC 2025 online or in-person at Bristol, UK at [https://audio.dev/tickets/](https://audio.dev/tickets/).
* Early bird pricing for in-person tickets will end on September 15th.
* **Meeting C++** – You can buy online or in-person tickets at [https://meetingcpp.com/2025/](https://meetingcpp.com/2025/)
* **ACCU on Sea** – You can buy super early bird tickets at [https://accuconference.org/booking](https://accuconference.org/booking) with discounts available for ACCU members.
**OTHER NEWS**
* **\[NEW\] C++Day Schedule Announced** – View the schedule for the free one day in-person event at [https://italiancpp.github.io/cppday25/#agenda](https://italiancpp.github.io/cppday25/#agenda)
* **ADCx Gather 25 Schedule Announced** – View the schedule for the free one day online event at [https://conference.audio.dev/schedule/adcxgather25/](https://conference.audio.dev/schedule/adcxgather25/)
* **ADC 2025 Schedule Announced** – ADC have
MV: A real time memory visualization tool for C++
Hey everyone,
I wanted to share a tool I’ve been working on that helps beginners visualize how C++ code interacts with memory (stack and heap) in real time. This proof of concept is designed to make understanding memory management more intuitive.
**Key Features:**
* Instantly see how variables affect the stack and the heap
* Visualize heap allocations and pointers with arrows
* Detect memory leaks and dangling pointers
This tool isn’t meant to replace platforms like PythonTutor, it’s a real time learning aid for students. To maintain this experience, I intentionally did not add support nor plan to support certain C++ features
Test out the tool and let me know what you think!
There may be bugs, so approach it with a beginner’s mindset and do let me know if you have any suggestions
The main application is a desktop app built with Tauri, and there’s also a web version using WASM:
* **GitHub Repo:** [https://github.com/humblepenguinn/mv](https://github.com/humblepenguinn/mv)
* **Web App:** [https://humblepenguinn.github.io/mv/](https://humblepenguinn.github.io/mv/)
P.S: I can't upload a video here, but you can find a demo of the tool in the repo README.
https://redd.it/1ncnqvz
@r_cpp
Practical CI-friendly Performance Tests
https://solidean.com/blog/2025/practical-performance-tests/
https://redd.it/1nclq2t
@r_cpp
Why we need C++ Exceptions
https://abuehl.github.io/2025/09/08/why-exceptions.html
https://redd.it/1ncb3qy
@r_cpp
New C++ Conference Videos Released This Month - September 2025
**C++Now**
2025-09-01 - 2025-09-07
* How to Build a Flexible Robot Brain One Bit at a Time - Ramon Perez - [https://youtu.be/akJznI1eBxo](https://youtu.be/akJznI1eBxo)
* Zngur - Simplified Rust/C++ Integration - David Sankel - [https://youtu.be/k\_sp5wvoEVM](https://youtu.be/k_sp5wvoEVM)
* Advanced Ranges - Writing Modular, Clean, and Efficient Code with Custom Views - Steve Sorkin - [https://youtu.be/5iXUCcFP6H4](https://youtu.be/5iXUCcFP6H4)
**ACCU Conference**
2025-09-01 - 2025-09-07
* The Hidden Techical Debt Crisis: When Non-Engineers Write Code - Felix Aldam-Gates - [https://youtu.be/VXb4n8FjcrE](https://youtu.be/VXb4n8FjcrE)
* The 10 Essential Features for the Future of C++ Libraries - Mateusz Pusz - [https://youtu.be/K-uzaG9S8bg](https://youtu.be/K-uzaG9S8bg)
* An Introduction To Go - Dom Davis - [https://youtu.be/l36Wqmw2JZo](https://youtu.be/l36Wqmw2JZo)
**C++ on Sea**
2025-09-01 - 2025-09-07
* Welcome to v1.0 of the meta::\[\[verse\]\]! - Inbal Levi - [https://youtu.be/Wbe09UFDvvY](https://youtu.be/Wbe09UFDvvY)
* To Err is Human - Robust Error Handling in C++26 - Sebastian Theophil - [https://youtu.be/A8arWLN54GU](https://youtu.be/A8arWLN54GU)
* The 10 Essential Features for the Future of C++ Libraries - Mateusz Pusz - [https://youtu.be/TJg37Sh9j78](https://youtu.be/TJg37Sh9j78)
**ADC**
2025-09-01 - 2025-09-07
* Current Approaches and Future Possibilities for Inter Audio Plugin Communication - Janos Buttgereit - [https://youtu.be/YHWdDLi6jgc](https://youtu.be/YHWdDLi6jgc)
* Keynote: Sonic Cartography - Navigating the Abstract Space-Time of Sound - Carla Scaletti - [https://youtu.be/iq75B8EkLv4](https://youtu.be/iq75B8EkLv4)
https://redd.it/1nbrhjg
@r_cpp
MapLibre Native (C++ SDK) now supports embedding into Slint apps
Thanks to yuiseki, there's now an official Slint integration available for MapLibre Native, the open-source C++ library for displaying maps. This means you can now embed MapLibre rendering directly into Slint based native GUI apps. The integration captures MapLibre Native rendered frames and presents them inside Slint UI components. The current MapLibre + Slint integration includes platform support for Windows, macOS, and Linux. Check out the GitHub repo - https://github.com/maplibre/maplibre-native-slint
https://redd.it/1nbn2hl
@r_cpp
Building C++ projects with the pixi package manager
https://prefix.dev/blog/pixi-build-for-cmake-projects
https://redd.it/1nbivvl
@r_cpp
Coming from Python, this is my first time learning C++. I know python fairly good till intermediate level. How should I start learning C++ ?
https://redd.it/1nbc6xp
@r_cpp
Allow Copilot to browse large C++ codebases intelligently and efficiently
Hey folks! I work with a really huge C++ codebase for work (think thousands of cpp files), and github copilot often struggles to find functions, or symbols and ends up using a combination of find and grep to look. Plus, we use the clangd server and not the cpp default intellisense, so there’s no way for copilot to use clangd. I created an extension that allows copilot to use the language server exposed by VS Code. When you press Ctrl+P and type in # with the symbol you’re searching for, Copilot can do it now using my extension. Also, it can now find all references, declaration or definition for any symbol. In a single query, it can use all of these tools.
I can’t add images in this post, but on the Marketplace webpage, there is an example how it works, and why it’s better than letting copilot search through the codebase.
Here’s the extension: https://marketplace.visualstudio.com/items?itemName=sehejjain.lsp-mcp-bridge
Here’s the source code: https://github.com/sehejjain/Language-Server-MCP-Bridge
Here are all the tools copilot can now use:
`lsp_definition` \- Find symbol definitions lsp\_definition
lsp_references \- Find all references to a symbol
`lsp_hover` \- Get symbol information and documentation
lsp_completion \- Get code completion suggestions
`lsp_workspace_symbols` \- Search symbols across the workspace
lsp_document_symbols \- Get document structure/outline
`lsp_rename_symbol` \- Preview symbol rename impact
lsp_code_actions \- Get available quick fixes and refactorings
`lsp_format_document` \- Preview document formatting
lsp_signature_help \- Get function signature and parameter help
https://redd.it/1nb2fib
@r_cpp
Preparation for interview
Hi guys, I'm 20(M). I am about to have an interview for an Intern C++ Developer position in about 2 days. This is my first interview related to C++ because I was working more with C# (Unity).
I want to ask if there are anything that I need to worry about? What are some of things that I need to practice before the interview? In some of bug fixing or performance fixes questions, what should I do while testing or finding the error?
Thanks for reply and sorry for my bad English =)
https://redd.it/1mx8om3
@r_cpp
A Post-Mortem on Optimizing a C++ Text Deduplication Engine for LLM: A 100x Speedup and 4 Hellish Bugs (OpenMP, AVX2, stringview, Unicode, Vector Database)
Hey r/cpp,
I wanted to share a story from a recent project that I thought this community might appreciate. I was tasked with speeding up a painfully slow Python script for deduplicating a massive text dataset for an ML project. The goal was to rewrite the core logic in C++ for a significant performance boost.
What I thought would be a straightforward project turned into a day-long, deep dive into some of the most classic (and painful) aspects of high-performance C++. I documented the whole journey, and I'm sharing it here in case the lessons I learned can help someone else.
The final C++ core (using OpenMP, Faiss, Abseil, and AVX2) is now **50-100x faster** than the original Python script and, more importantly, it's actually correct.
Here's a quick rundown of the four major bugs I had to fight:
**1. The "Fake Parallelism" Bug (OpenMP):** My first attempt with #pragma omp parallel for looked great on htop (all cores at 100%!), but it was barely faster. Turns out, a single global lock in the inner loop was forcing all my threads to form a polite, single-file line. **Lesson:** True parallelism requires lock-free designs (I switched to a thread-local storage pattern).
**2. The "Silent Corruption" Bug (AVX2 SIMD):** In my quest for speed, I wrote some AVX2 code to accelerate the SimHash signature generation. It was blazingly fast... at producing complete garbage. I used the \mm256_blendv_epi8 instruction, which blends based on 8-bit masks, when I needed to blend entire 32-bit integers based on their sign bit. A nightmare to debug because it fails silently. Lesson: Read the Intel Intrinsics Guide. Twice.
3. The "std::string_view Betrayal" Bug (Memory Safety): To avoid copies, I used std::string_view everywhere. I ended up with a classic case of returning views that pointed to temporary std::string objects created by substr. These views became dangling pointers to garbage memory, which later caused hard-to-trace Unicode errors when the data was passed back to Python. Lesson: string_view doesn't own data. You have to be paranoid about the lifetime of the underlying string, especially in complex data pipelines.
4. The "Unicode Murder" Bug (Algorithm vs. Data): After fixing everything else, I was still getting Unicode errors. The final culprit? My Content-Defined Chunking algorithm. It's a byte-stream algorithm, and it was happily slicing multi-byte UTF-8 characters right down the middle. Lesson: If your algorithm operates on bytes, you absolutely cannot assume it will respect character boundaries. A final UTF-8 sanitization pass was necessary.
I wrote a full, detailed post-mortem with code snippets and more context on my Medium blog. If you're into performance engineering or just enjoy a good debugging war story, I'd love for you to check it out:
conanhujinming/how-i-optimized-a-c-deduplication-engine-from-a-10x-to-a-100x-speedup-my-day-long-battle-with-4-5b10dd40e97b">**conanhujinming/how-i-optimized-a-c-deduplication-engine-from-a-10x-to-a-100x-speedup-my-day-long-battle-with-4-5b10dd40e97b" rel="nofollow">https://medium.com/@conanhujinming/how-i-optimized-a-c-deduplication-engine-from-a-10x-to-a-100x-speedup-my-day-long-battle-with-4-5b10dd40e97b**
I've also open-sourced the final tool:
GitHub Repo: https://github.com/conanhujinming/text\_dedup
Happy to answer any questions or discuss any of the techniques here!
https://redd.it/1mx00a5
@r_cpp