// wro.cpp · established 2021

Modern C++
from Wrocław.

Modern C++ for production. Safety, performance, security, and the tooling that makes C++ ship in cars, trading systems, and hospitals. Flagship posts in English; community chat in Polish, over on Slack.

posts 86flagship 28short 58reflection-series 12/18events 24slack wrocpp.slack.com · meetup wro-cpp
01Latest posts
all posts →
/flagship/concurrent-io 08/18

Thread-safe is not reentrant, and the difference bites

The Qt handler contract asked for a reentrant function, not just a thread-safe one, and a std::mutex gives you the second without the first. A demo shows a thread-safe counter and a reentrant recursion that needs a recursive_mutex. The precise taxonomy: reentrant implies thread-safe, never the reverse. Episode 8 of the concurrent I/O series.

  • #concurrency
  • #reentrancy
  • #threads
  • #signals
/flagship

Who gets to say a feature is not ready

Contracts are in the C++26 working draft. The committee voted against removing them, decisively. Bjarne Stroustrup and four co-authors are asking again anyway, before the final ballot, on the grounds that counting votes is the wrong way to settle whether a foundational feature is finished. Both cases, from the papers.

  • #wg21
  • #contracts
  • #standardization
  • #safety
/flagship/ctre 02/18

The C++20 feature that gave CTRE its interface

Writing ctre::match<"[a-z]+"> requires a string literal to be a template argument, which C++20 allowed and every earlier standard did not. The older spelling still works and still compiles under C++17, so the two sit side by side and show exactly what the feature bought.

  • #regex
  • #ctre
  • #cpp20
  • #templates
/flagship/verification 05/18

The hottest line is often not the one worth optimizing

A sampling profiler tells you where time is spent, which is not the same as where speeding things up would help. Causal profiling answers the second question directly, and it routinely disagrees with the first. A tour of the profilers worth knowing in 2026: Coz, Tracy, poop, samply, and plain perf.

  • #profiling
  • #performance
  • #tooling
  • #verification
/flagship/verification 04/18

You can see the dependency chain without running anything

Before reaching for a profiler, read what the compiler already produced. Two loops that add the same floats compile to eight adds into one register versus four independent accumulators, and llvm-mca will predict the throughput difference from that assembly without executing a single instruction. Episode 4 of the verification series.

  • #performance
  • #assembly
  • #llvm-mca
  • #optimization
/flagship/verification 03/18

RealtimeSanitizer checks the promise that a function never blocks

Mark a function [[clang::nonblocking]] and RealtimeSanitizer verifies at runtime that nothing inside it allocates, locks, or makes a syscall. It is the sanitizer for audio callbacks, control loops, and any deadline-bound code where a hidden malloc is a dropped frame. Episode 3 of the verification series.

  • #sanitizers
  • #realtime
  • #audio
  • #embedded
02What to expect
wednesday · flagship

Long-form technical posts

Hands-on deep dives with runnable code: C++26 reflection, language features, patterns, case studies from local shops.

monday · short

"C++ This Fortnight"

Curated news, tool spotlights, conference talk picks, tiny patterns worth sharing.

monthly · events

Meetups & talks

Monthly online meetups streamed on YouTube + quarterly in-person at local venues in Wrocław.

evergreen · toolset

Reference + recipes

Compiler support, AI agents, local LLMs, sanitizers, profiling, hardened stdlib, qualified compilers. Premium open-source first;browse the hub.