This period

2026-09-09 → 2026-10-09 · rolling 30 days

Articles

51 this period

If one anti-malware software is good, does that make two better?

This article discusses the complications that arise when two different anti-malware programs are installed on the same system, leading to conflicts and potential system failures. It uses an analogy of security companies to illustrate the issues of software detours and interactions.

Not specified | The Old New Thing | 2026-10-08 | 5 min

C++ and AI at CppCon: We have to use agents - more or less?!

This article discusses the intersection of C++ and artificial intelligence, particularly in the context of the CppCon conference. It explores the necessity of using agents in AI applications developed with C++.

Sandor Dargo | Sandor Dargo's Blog | 2026-10-07 | 5 min

How can undefined opcodes ud0 and ud1 have parameters? How undefined were they?

This article discusses the nature of undefined opcodes ud0 and ud1, explaining how they can have parameters despite being undefined. It delves into the intricacies of instruction decoding and the historical context of these opcodes.

The Old New Thing | The Old New Thing | 2026-10-07 | 5 min

Why does the compiler sometimes use ud2 and sometimes int 3 for code that shouldn’t execute?

This article explains the differences between the int 3 and ud2 opcodes used by x86 compilers to indicate unreachable code. It discusses their purposes and implications for debugging.

The Old New Thing | The Old New Thing | 2026-10-06 | 5 min

If somebody tries to hot-patch an already-hot-patched function, how do they avoid conflicts?

This article discusses the challenges of hot-patching functions in Windows, particularly when a function has already been patched. It highlights the potential issues that arise when unauthorized patching occurs and the implications for system stability.

Not specified | The Old New Thing | 2026-10-05 | 5 min

The complement of true is true, except when it's false

Archive Search About The complement of true is true, except when it's false 1 October 2026 · Matthew Taylor | Edit Table of Contents Putting it together When it’s false Unscoped enums, promotion, and undefined behaviour Avoiding this in…

aw1621107 | Lobsters | 2026-10-04

Why is there no Windows hot-patching support for other architectures like 32-bit ARM and MIPS?

This article discusses the reasons behind the lack of Windows hot-patching support for certain architectures such as 32-bit ARM and MIPS. It explains the historical context and the specific features of Windows Server that influenced this decision.

The Old New Thing | The Old New Thing | 2026-10-02 | 5 min

Windows on Itanium also provided for hot-patching, in an even simpler way

This article discusses the hot-patching capabilities of Windows on Itanium, highlighting the fixed-sized instruction bundles and their implications for hot-patching. It also touches on the structure of Itanium binaries and the use of padding in function definitions.

The Old New Thing | The Old New Thing | 2026-10-01 | 5 min

C++26: the new debugging header

This article discusses the new debugging header introduced in C++26, detailing its features and usage. It provides insights into how this addition can improve debugging practices in C++ development.

Sandor Dargo | Sandor Dargo's Blog | 2026-09-30 | 5 min

EDG C/C++ Compiler Project

Sign in Appearance settings Platform AI CODE CREATION GitHub Copilot Write better code with AI GitHub Copilot app Direct agents from issue to merge MCP Registry Integrate external tools DEVELOPER WORKFLOWS Actions Automate any workflow…

aw1621107 | Lobsters | 2026-09-30

Windows on AArch64 also provides for hot-patching, but it’s much simpler than on x86

This article discusses how Windows on AArch64 implements hot-patching with simpler mechanics compared to x86 due to its fixed-length instruction set. It explains the use of patch points and the atomicity of instruction updates.

The Old New Thing | The Old New Thing | 2026-09-30 | 5 min

As a general rule, calling product support while drunk is not recommended

This article recounts a humorous story from a retired Microsoft product support colleague about a drunken customer seeking help with a Java applet on a fan site for Van Halen. The interaction highlights the challenges of providing support under unusual circumstances.

The Old New Thing | The Old New Thing | 2026-09-29 | 5 min

C++ reminder: Function-local static variables are initialized only once, even if it looks like they get initialized multiple times

This article explains the behavior of function-local static variables in C++, emphasizing that they are initialized only once at the first point of declaration. Subsequent accesses retain the variable's value without reinitialization.

The Old New Thing | The Old New Thing | 2026-09-28 | 5 min

Using C++17 std::optional

This article describes std::optional, a helper type added in C++17 that can either contain a value or be empty. It discusses its usefulness and how it enhances type safety and expressiveness in C++ programming.

Unknown | C++ Stories | 2026-09-28 | 5 min

Writing Efficient C++ Code

This article was originally published in Polish in issue 4/2013 (11) of Programista magazine. Although high-level languages—scripting, interpreted, or running in a virtual machine—have many advantages and are the best choice for numerous…

jeaye | Lobsters | 2026-09-27

Debugging walkthrough: Access violation on nonsense instruction, episode 3

This article discusses a case of access violations occurring across multiple unrelated programs, analyzing crash dumps to identify the underlying issue. It highlights the importance of recognizing invalid code execution in debugging.

The Old New Thing | The Old New Thing | 2026-09-25 | 5 min

Visual Studio Code CMake Tools 1.24

CMake Tools 1.24 includes several reliability fixes and productivity improvements, allowing users to run tests from the editor and manage source-file lists more effectively.

C++ Team | C++ Team Blog | 2026-09-25 | 5 min

No, really, you need to pass all unhandled messages to DefWindowProc, part 2

This article discusses a reported memory leak in Windows related to the RegisterDragDrop and RevokeDragDrop calls. It emphasizes the importance of passing unhandled messages to DefWindowProc to ensure proper cleanup.

The Old New Thing | The Old New Thing | 2026-09-24 | 5 min

Trip report: CppCon 2026

This article provides a detailed account of the author's experiences and insights gained during CppCon 2026, highlighting key sessions and discussions.

Sandor Dargo | Sandor Dargo's Blog | 2026-09-23 | 5 min

When working with Win32 FILETIME, don’t forget that you have std::chrono now

This article discusses how to simplify the calculation of time differences using std::chrono in C++ instead of manually handling FILETIME. It highlights the benefits of using modern C++ libraries for better code clarity and efficiency.

Not specified | The Old New Thing | 2026-09-23 | 5 min

A brief history of Windows scroll bar shortcuts

This article discusses the evolution of scroll bar shortcuts in Windows, highlighting the introduction of a right-click menu and the Shift + click shortcut for easier navigation. It reflects on the decline of Win32 scroll bars in favor of custom implementations in modern frameworks.

Not specified | The Old New Thing | 2026-09-22 | 5 min

Faster C++ code intelligence for Copilot CLI with Whole Codebase Indexing

This article discusses the improvements in C++ code intelligence for GitHub Copilot CLI through Whole Codebase Indexing, which enhances navigation and symbol searching in large repositories.

C++ Team | C++ Team Blog | 2026-09-22 | 5 min

D2300R11: `std::execution`

This paper proposes a self-contained design for a Standard C++ framework for managing asynchronous execution on generic execution resources. It is based on the ideas in A Unified Executors Proposal for C++ and its companion papers. Today…

quad | Lobsters | 2026-09-21

What’s the highest legal FILETIME? Is it safe to use?

This article discusses the challenges of defining a sentinel FILETIME value that is always considered later than any other FILETIME. It explores the implications of using maximum values and the special meanings associated with certain FILETIME values in various functions.

The Old New Thing | The Old New Thing | 2026-09-21 | 5 min

What’s the highest legal FILETIME? Is it safe to use?

This article discusses the challenges of defining a sentinel FILETIME value that is always considered later than another FILETIME. It explores the implications of using maximum values and the special meanings associated with certain FILETIME values.

The Old New Thing | The Old New Thing | 2026-09-21 | 5 min

Comparing exception behavior of magic statics, std::call_once, and std::async

This article discusses the differences in exception handling between magic statics, std::call_once, and std::async in C++. It explains how each mechanism behaves when an exception occurs during initialization or execution.

The Old New Thing | The Old New Thing | 2026-09-18 | 5 min

Comparing exception behavior of magic statics, std::call_once, and std::async

This article discusses the differences in exception handling between magic statics, std::call_once, and std::async in C++. It explains how each mechanism behaves when an exception occurs during initialization or execution.

The Old New Thing | The Old New Thing | 2026-09-18 | 5 min

OpenLoco version 26.09

OpenLoco v26.09 is out! We have a huge number of new Open Graphics objects this month as part of our North American Expansion work. On the game side of things, we have added drag dimension tooltips and improved our Linux support, as well…

raymii | Lobsters | 2026-09-18

The C++20’s u8/char8_t Backward-Compatibility Fiasco

Giovanni Dicanio's Programming Corner on the Internet There is a myth according to which every new C++ version is backward compatible with the older versions. While there is a common general trend to try and keep backward compatibility…

raymii | Lobsters | 2026-09-18

bonobomock: A GoogleTest-compatible C++ mocking library

Sign in Appearance settings Platform AI CODE CREATION GitHub Copilot Write better code with AI GitHub Copilot app Direct agents from issue to merge MCP Registry Integrate external tools DEVELOPER WORKFLOWS Actions Automate any workflow…

ceph | Lobsters | 2026-09-17

std::call_once vs. std::async

This article discusses the differences between std::call_once and std::async in C++, particularly focusing on their use for deferred execution and managing non-copyable types with std::shared_future.

The Old New Thing | The Old New Thing | 2026-09-17 | 5 min

std::call_once vs. std::async

This article discusses the differences between std::call_once and std::async in C++, focusing on how std::async can be used for deferred execution. It explains the behavior of std::future and std::shared_future in managing deferred tasks.

The Old New Thing | The Old New Thing | 2026-09-17 | 5 min

Bringing Correctly Rounded Math to Production with LLVM-libc

This article discusses the use of LLVM-libc for compile-time evaluation and runtime execution of math functions in MSVC. It features insights from LLVM-libc contributors Michael Jones and Tue Ly on the design philosophy and implementation of their math functions.

C++ Team Blog | 2026-09-16

C++26: Trivial infinite loops are no longer undefined behaviour

This article discusses the changes in C++26 regarding trivial infinite loops and their treatment as defined behavior. It provides insights into the implications of this change for C++ developers.

Sandor Dargo | Sandor Dargo's Blog | 2026-09-16 | 5 min

Magic statics vs. std::call_once

This article discusses two methods for caching results in C++: using magic statics and std::call_once. It compares their convenience and accessibility across multiple functions.

The Old New Thing | The Old New Thing | 2026-09-16 | 5 min

Magic statics vs. std::call_once

This article discusses two methods for caching the result of a function that checks OS features: using magic statics and std::call_once. It compares their convenience and accessibility across multiple functions.

The Old New Thing | The Old New Thing | 2026-09-16 | 5 min

Targeting 25 years of Windows with Visual Studio 2019

O ur method to build software compatible down to Windows 2000 using Visual Studio 2017 served us well for several months. And trust me, I had really hoped that Windows 2000 would be as low as we ever had to go. But the world of industrial…

calvin | Lobsters | 2026-09-16

Why do Microsoft job levels start in the high 50’s instead of starting at a sane number like 1?

This article discusses the rationale behind Microsoft's job level system, which starts at level 59 for entry-level software engineers. It explains the historical context and the changes made to improve promotion rates and employee morale.

The Old New Thing | The Old New Thing | 2026-09-15 | 5 min

Why do Microsoft job levels start in the high 50’s instead of starting at a sane number like 1?

This article explains the rationale behind Microsoft's job level system, which starts at level 59 for entry-level positions. It discusses the historical context and the changes made to improve career progression and employee morale.

Unknown | The Old New Thing | 2026-09-15 | 5 min

C++ in the Age of AI: Visual Studio at CppCon 2026

This article discusses how Visual Studio is evolving to enhance productivity for C++ developers, particularly in the context of AI integration and large codebases. It serves as a companion guide to a session presented at CppCon 2026.

C++ Team | C++ Team Blog | 2026-09-14 | 5 min

Push-based vs Pull-based Customization

This article discusses the differences between push-based and pull-based customization in C++. It explores the implications of each approach and provides insights into when to use them.

Barry | Barry's C++ Blog | 2026-09-14 | 5 min

What’s New for C++ Developers in Visual Studio 2026 (18.7 – 18.10)

This blog post recaps the changes in Visual Studio 2026 from versions 18.7 to 18.10, highlighting improvements for C++ developers, including new tools and bug fixes.

C++ Team | C++ Team Blog | 2026-09-14 | 5 min

Why didn’t Read­Directory­ChangesW provide a way to correlate the two sides of a rename operation?

This article discusses the lack of a correlation mechanism in Read­Directory­ChangesW for rename operations, speculating on the reasons behind this design choice. It highlights the potential issues with file system behavior and the assumptions made in tracking rename events.

Brian Dellisanti | The Old New Thing | 2026-09-14 | 5 min

Why didn’t Read­Directory­ChangesW provide a way to correlate the two sides of a rename operation?

The article discusses the lack of a correlation mechanism in Read­Directory­ChangesW for rename operations, speculating on the reasons behind this design choice. It highlights potential issues with file system behavior and the assumptions made by developers regarding rename event handling.

Brian Dellisanti | The Old New Thing | 2026-09-14 | 5 min

Being lazy in C++

Old blog résumé Twitter Being lazy in C++ September 12, 2026 C++ Context Again, I haven’t posted in a long time. I suppose I’ll have to start all my new articles with this sentence, ahaha. I can say I was a bit lazy, and that’s a good…

dalvrosa | Lobsters | 2026-09-13

How can I remove the Close button from my window caption?

This article discusses methods to remove the Close button from a window caption in a Windows application. It explains the implications of removing the System menu and provides code snippets to disable the Close button while retaining Minimize and Maximize options.

The Old New Thing | The Old New Thing | 2026-09-11 | 5 min

How can I remove the Close button from my window caption?

This article discusses methods to remove the Close button from a window caption in a Windows application. It explains the implications of removing the System menu and provides code snippets for disabling the Close button while keeping Minimize and Maximize options.

The Old New Thing | The Old New Thing | 2026-09-11 | 5 min

MSVC C++23: constexpr cmath with LLVM Libc

This article discusses the implementation of constexpr math functions in C++23 as part of MSVC's experimental features. It highlights the changes made to the standard library and invites user feedback on the new functionality.

C++ Team | C++ Team Blog | 2026-09-10 | 5 min

Optimizing a Spin-Lock

A spin-lock is a lock that never sleeps. Instead of yielding to the scheduler, the thread stays on the CPU and spins . No syscalls. No context switches. In this post, we’ll build a version, step by step, that is 5.7x faster while drawing…

dalvrosa | Lobsters | 2026-09-10

Why is the x86 undefined instruction called ud2? Why 2?

This article explains the purpose of the x86 instruction 'ud2', which is used to generate an 'invalid opcode' exception. It discusses the history and reasoning behind its naming and usage in compilers to mark unreachable code.

The Old New Thing | The Old New Thing | 2026-09-10 | 5 min

Why is the x86 undefined instruction called ud2? Why 2?

This article explains the purpose of the x86 instruction 'ud2', which is used to generate an 'invalid opcode' exception. It discusses the historical context and reasoning behind the naming of this instruction.

The Old New Thing | The Old New Thing | 2026-09-10 | 5 min