Windows 11 v sobě ukrývá kus jádra z Windows 95. Microsoft ho tam nechal kvůli chybě v jediné hře, která se táhne 30 let
Uvnitř Windows 11 26H2 spí znovuzkompilovaný správce paměti z Windows 95. Probudí se jen tehdy, když spustíte jednu ze starých aplikací.
Obsah článku
Celý příběh začíná u hry SimCity. Verze této legendární budovatelské strategie pro Windows obsahovala chybu, o které její autor Jon Ross otevřeně mluvil: hra po uvolnění paměti dál přistupovala k datům na místě, které jí už nepatřilo. Tento typ chyby se označuje jako use-after-free.
Ve Windows 3.x to nepředstavovalo zásadní problém, protože tehdejší správce paměti uvolněné místo okamžitě znovu nevyužíval. S příchodem Windows 95 se však změnilo chování správce paměti a SimCity začalo padat. Microsoft tak stál před dilematem: nechat populární hru po upgradu přestat fungovat a riskovat, že uživatelé obviní nový systém, nebo problém obejít přímo ve Windows? Zvolil druhou možnost. Do Windows 95 přidal speciální mechanismus, který při rozpoznání SimCity přepnul správu paměti do režimu, jenž odpovídal očekáváním hry.
Z tohoto cíleného řešení se postupně vyvinul obecnější mechanismus známý jako EmulateHeap. Jde o kompatibilitní vrstvu, která dokáže přesměrovat funkce pro práci s pamětí na alternativní implementaci napodobující chování staršího správce paměti. Podle Raymonda Chena z Microsoftu jde o významnou část technologie pocházející z éry Windows 95, která v kompatibilitní infrastruktuře Windows přežívá dodnes. A „dodnes“ v tomto případě znamená i Windows 11 ve verzi 26H2, tedy rok 2026, třicet jedna let po vydání Windows 95.
Co přesně EmulateHeap dělá a proč tam pořád je
EmulateHeap není skrytý přepínač, který by automaticky běžel na pozadí každého počítače. Jde o takzvaný shim, tedy malou kompatibilitní vrstvu, která zachytává volání systémových funkcí pro správu paměti a podle potřeby je přesměrovává na alternativní implementaci. Může se týkat například funkcí HeapCreate, LocalLock nebo GlobalReAlloc. Aktivuje se pouze pro konkrétní proces, kterému je tato kompatibilitní oprava přiřazena. Ostatní aplikace dál používají běžné mechanismy správy paměti dané verze Windows.
Proč Microsoft EmulateHeap neodstranil? Protože některé starší aplikace spoléhaly na specifické chování tehdejšího správce paměti, ačkoli z technického hlediska nebylo správné. Bez příslušné kompatibilitní opravy by po upgradu Windows mohly přestat fungovat. A právě takovým situacím se Microsoft dlouhodobě snaží předcházet.
Jak popsal Joel Spolsky už v roce 2004, tým Windows udržoval rozsáhlý seznam aplikací, pro které systém používal zvláštní kompatibilitní úpravy. SimCity bylo jen nejznámějším příkladem z mnohem delší řady.
Jak EmulateHeap najdete ve svém Windows
Jednou z cest vede přes Windows ADK (Assessment and Deployment Kit) a jeho nástroj Compatibility Administrator. Ten není součástí běžného nastavení Windows, takže je potřeba ADK nejprve stáhnout a nainstalovat. V Compatibility Administratoru lze procházet dostupné kompatibilitní opravy, vytvářet vlastní databáze a přiřazovat jednotlivé shimy konkrétním spustitelným souborům s příponou .exe. EmulateHeap patří mezi dostupné kompatibilitní mechanismy.
Jednodušší, i když méně přesný postup popisuje komunita na Microsoft Q&A. Stačí kliknout pravým tlačítkem na soubor .exe, otevřít jeho vlastnosti, přejít na kartu Kompatibilita a vybrat režim kompatibility se starší verzí Windows. Tím se mohou aktivovat různé kompatibilitní opravy, jejichž konkrétní výběr závisí na aplikaci a nastavení systému. Samotná volba režimu Windows 95 nebo Windows 98 ovšem nezaručuje, že se vždy aktivuje právě EmulateHeap.
O tom, že se kompatibilitní infrastruktura Windows nadále vyvíjí, svědčí také aktualizace nástrojů pro správce systému. Podle dokumentace Microsoftu k ADK ze září 2026 přibyla podpora instalace Compatibility Administratoru na zařízení s procesory Arm64. Kompatibilitní vrstva tak není jen pozůstatkem minulosti, ale součástí nástrojů, které Microsoft dál přizpůsobuje novým hardwarovým platformám.
SimCity hack versus EmulateHeap, to není totéž
Je důležité rozlišovat mezi původním řešením pro SimCity ve Windows 95 a pozdějším mechanismem EmulateHeap. Původní úprava byla cíleným zásahem: systém rozpoznal konkrétní hru a změnil pro ni způsob práce se správcem paměti. EmulateHeap představuje obecnější kompatibilitní opravu, kterou lze přiřadit různým aplikacím.
Jak upozornil server Windows Latest při popisu EmulateHeap ve Windows 11 26H2, dnešní implementace není doslova totožná s původním kódem vytvořeným kvůli SimCity. Jde spíše o jeho technologického následovníka, který využívá podobný princip v širším měřítku.
Microsoft se navíc nespoléhá pouze na tento jeden mechanismus. Raymond Chen připomíná také technologii Fault Tolerant Heap, kterou Windows 7 využívaly k automatickému rozpoznávání a zmírňování některých problémů se správou paměti, například určitých případů dvojitého uvolnění paměti nebo přístupu k již uvolněným datům. Celá infrastruktura AppCompat dnes zahrnuje řadu různých oprav určených pro starší aplikace.
Proč Microsoft zachránil SimCity, ale ne 3D Pinball
Zajímavé srovnání nabízí osud další klasické hry pro Windows. 3D Pinball zmizel ze systému po éře Windows XP. Raymond Chen vysvětlil, že při portování hry na 64bitovou architekturu začal míček propadávat herními objekty kvůli chybě v kódu, který vytvořila externí firma. Dva lidé se pokusili problém vyřešit, ale starý kód byl obtížně čitelný a jeho fungování se nepodařilo spolehlivě pochopit. Nakonec padlo pragmatické rozhodnutí hru ze systému vyřadit.
U SimCity byla situace jiná. Příčina problému byla známá a Microsoft ji dokázal obejít úpravou na straně operačního systému. Náklady na vytvoření kompatibilitního řešení byly relativně nízké a přínos pro uživatele značný.
Právě tento přístup vystihuje filozofii AppCompat: Microsoft raději udržuje určitou míru technického dluhu uvnitř Windows, než aby uživatelé po upgradu zjistili, že jejich oblíbený program přestal fungovat.
Třicet jedna let staré technologické dědictví uvnitř nejnovějších Windows tedy samo o sobě není důkazem zastaralosti systému. Je to spíše cena za dlouhodobý závazek Microsoftu zachovávat kompatibilitu se staršími aplikacemi. A jak ukazuje EmulateHeap, tento závazek platí i v roce 2026.