Buggkompatibilitet
Datorhårdvara eller mjukvara sägs vara buggkompatibel om den exakt replikerar även en oönskad funktion av en tidigare version. Frasen finns i Jargongfilen .
En aspekt av att upprätthålla bakåtkompatibilitet med ett äldre system är att sådana systems klientprogram ofta inte bara beror på deras specificerade gränssnitt utan också på buggar och oavsiktligt beteende. Det måste också bevaras av den nyare ersättaren. Förutom den betydligt högre komplexiteten som måste upprätthållas under den naturliga utvecklingen av koden eller gränssnittet, kan det ibland orsaka prestanda- eller säkerhetsproblem, och inkonsekvenserna i gränssnittens beteende kan ibland leda till nya buggar i programvaran som använder den, vilket skapar svårt att lösa korsberoende i flera riktningar mellan olika delar av kod.
Exempel
DOS
Exempel finns i MS-DOS / PC DOS : När MS-DOS/PC DOS 3.1 och högre (inklusive Windows 9x ) och OS/2 upptäcker vissa FAT OEM-etiketter , litar de inte på vissa BIOS Parameter Block- värden (BPB) och Beräkna om dem från andra diskgeometriparametrar för att komma runt flera beräkningsfel som orsakats av en del av deras formateringsprogram under tidigare utgåvor av dessa system. Även om detta odokumenterade beteende tillåter dem att hantera dessa felaktigt formaterade volymer specifikt, begränsar det flexibiliteten hos diskgeometrier de kan arbeta med i allmänhet och kan få dem att kasta giltigt formaterade volymer som skapats av tredje part om de avviker från standardinställningarna som används av Microsoft och IBM . När MS-DOS/PC DOS 5.0 och högre körs på 286 eller högre processorer, innehåller den inbyggda körbara laddaren kod speciellt utformad för att upptäcka och fixa vissa utbredda applikationer och stubbladdare (som program kopplade till äldre versioner av Microsofts EXEPACK eller Rational Systems ' 386 DOS-förlängare) genom att patcha den laddade programbilden innan den körs. Under vissa förhållanden korrigerar en underliggande DOS även Windows (WINA20.386).
Under utvecklingens gång var DR-DOS också tvungen att modifieras för att inte bara emulera många odokumenterade egenheter och oönskade egenskaper hos MS-DOS och PC DOS (som att behöva använda vissa vilseledande filnamn som IBMBIO.COM , IBMDOS.COM eller COUNTRY .SYS för filer som inte följer specifikationerna för körbara filer under DOS, eller måste införa en katalogsökvägslängdbegränsad Current Directory Structure (CDS) internt), men även faktiska buggar i kärnan och flera drivrutiner, för att säkerställa vissa andra drivrutiner och applikationer körs på DR-DOS, när de endast testades på specifika versioner av MS-DOS.
Windows
Windows , som traditionellt har emulerat många gamla systembuggar för att tillåta äldre lågnivåprogram att köras, är ett annat exempel. Som ett resultat måste Wine , som gör det möjligt att köra många Windows-applikationer på andra plattformar, också upprätthålla buggkompatibilitet med Windows.
När Microsoft fasade ut stödet för 16-bitars kod i Windows genom att inte längre inkludera NTVDM i 64-bitars versioner av operativsystemet, modifierades den körbara laddaren för att känna igen vissa specifika 16-bitars startprogram och installationsprogram och ersätta dem på- flyga med motsvarande kodstubbar som körs på 64-bitars processorer.
Övrig
Under utvecklingen av sin IBM PC-kompatibla , fann Compaqs ingenjörer att Microsoft Flight Simulator inte skulle köras på grund av vad SubLOGICs Bruce Artwick beskrev som "en bugg i ett av Intels chips", vilket tvingade dem att göra sin dator buggkompatibel med IBM PC. Ett annat hårdvaruexempel finns i designen av IBM Personal Computer/AT A20-adressraden för att efterlikna beteendet i äldre processorer.
Microsoft Excel har alltid haft ett avsiktligt skottårsfel , som felaktigt behandlar den 29 februari 1900 som ett verkligt datum, för att säkerställa bakåtkompatibilitet med Lotus 1-2-3 .
Hyrum Wright, en ingenjör på Google , berättar om detta problem som han observerade när han arbetade med C++ kärnbibliotek. Det var Titus Winters, även ingenjör på Google, som populariserade detta koncept i en större skala som " Hyrums lag" .