The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Oct 13, 2026
Post comments count 0
Post likes count 0

C++ futures part 2: The mental model for std::promise, std::packaged_task

Raymond Chen

Building things out of the state.

Oct 12, 2026
Post comments count 4
Post likes count 0

C++ futures part 1: The mental model

Raymond Chen

Managing a value that is produced later.

Oct 9, 2026
Post comments count 0
Post likes count 1

One way of thinking about access specifiers in C++/WinRT implementation types

Raymond Chen

Mapping them to concepts from C# and the now-defunct C++/CX.

Oct 8, 2026
Post comments count 10
Post likes count 3

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

Raymond Chen

Not always.

Oct 7, 2026
Post comments count 2
Post likes count 2

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

Raymond Chen

They weren't defined, not even as undefined.

Oct 6, 2026
Post comments count 2
Post likes count 4

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

Raymond Chen

It shouldn't execute, but for different reasons.

Oct 5, 2026
Post comments count 5
Post likes count 5

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

Raymond Chen

Hot-patching is for Windows, not for you.

Oct 2, 2026
Post comments count 0
Post likes count 2

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

Raymond Chen

They either predate hot-patching or never needed it.

Oct 1, 2026
Post comments count 0
Post likes count 2

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

Raymond Chen

Once again, the benefit of fixed-length instructions.