Computer hardware or software is said to be bug compatible if it exactly replicates even an undesirable feature
of a previous version. The phrase is found in the
Jargon File
The Jargon File is a glossary and usage dictionary of slang used by computer programmers. The original Jargon File was a collection of terms from technical cultures such as the MIT AI Lab, the Stanford AI Lab (SAIL) and others of the old ARPANET A ...
.
An aspect of maintaining
backward compatibility
Backward compatibility (sometimes known as backwards compatibility) is a property of an operating system, product, or technology that allows for interoperability with an older legacy system, or with input designed for such a system, especially i ...
with an older system is that such systems' client programs often do not only depend on their specified interfaces but also
bugs
Bugs may refer to:
* Plural of bug
Arts, entertainment and media Fictional characters
* Bugs Bunny, a character
* Bugs Meany, a character in the ''Encyclopedia Brown'' books
Films
* ''Bugs'' (2003 film), a science-fiction-horror film
* ''Bugs ...
and unintended behaviour. That must also be preserved by the newer replacement. Besides the significantly higher complexity that needs to be maintained during the natural evolution of the code or interface, it can sometimes cause performance or security issues, and the inconsistencies in the behaviour of interfaces can sometimes lead to new bugs in the software using it, creating difficult to resolve multi-directional cross dependencies between various pieces of code.
Examples
DOS
Examples can be found in
MS-DOS
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few ope ...
/
PC DOS:
When MS-DOS/PC DOS 3.1 and higher (including
Windows 9x
Windows 9x is a generic term referring to a series of Microsoft Windows computer operating systems produced from 1995 to 2000, which were based on the Windows 95 kernel and its underlying foundation of MS-DOS, both of which were updated in subs ...
) and
OS/2 detect certain
FAT OEM labels, they do not trust some
BIOS Parameter Block
In computing, the BIOS parameter block, often shortened to BPB, is a data structure in the volume boot record (VBR) describing the physical layout of a data storage volume. On partitioned devices, such as hard disks, the BPB describes the volume ...
(BPB) values and recalculate them from other disk geometry parameters in order to work around several
off-by-one calculation errors caused by some of their formatter software under earlier issues of these systems.
While this undocumented behaviour allows them to cope with these incorrectly formatted volumes specifically, it limits the flexibility of disk geometries they can work with in general and can cause them to trash validly formatted volumes created by third-parties if they deviate from the defaults used by
Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
and
IBM.
When MS-DOS/PC DOS 5.0 and higher are running on 286 or higher processors, the resident
executable loader
In computer systems a loader is the part of an operating system that is responsible for loading programs and libraries. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them ...
contains code specially designed to detect and fix certain widespread applications and stub loaders (such as programs linked with older versions of Microsoft's
EXEPACK
Executable compression is any means of compressing an executable file and combining the compressed data with decompression code into a single executable. When this compressed executable is executed, the decompression code recreates the original ...
or
Rational Systems
Tenberry Software (previously Rational Systems) was a software company notable for the development of DOS/16M and DOS/4G, which were the first industry standard DOS extender
A DOS extender is a computer software program running under DOS that e ...
' 386 DOS extenders) by patching the loaded program image before executing it.
Under certain conditions an underlying DOS also patches Windows (
WINA20.386
WINA (1070 AM) is a news/talk/sports formatted broadcast radio station licensed to Charlottesville, Virginia, serving Charlottesville and Albemarle County, Virginia. WINA is owned and operated by the Charleston Radio Group subsidiary of Saga ...
).
Over the course of development,
DR-DOS
DR-DOS (written as DR DOS, without a hyphen, in versions up to and including 6.0) is a disk operating system for IBM PC compatibles. Upon its introduction in 1988, it was the first DOS attempting to be compatible with IBM PC DOS and MS-D ...
also had to be modified to not only emulate many undocumented peculiarities and undesirable properties of MS-DOS and PC DOS (like having to use certain misleading filenames such as
IBMBIO.COM
IBMBIO.COM is a system file in many DOS operating systems. It contains the system initialization code and all built-in device drivers. It also loads the DOS kernel (IBMDOS.COM) and optional pre-loadable system components (like for disk compress ...
,
IBMDOS.COM
IBMDOS.COM is the filename of the DOS kernel. Loaded and initially invoked by the DOS BIOS in IBMBIO.COM during the boot process, it contains the hardware-independent parts of the operating system, including the embedded FAT12, FAT16 and ...
or
COUNTRY.SYS for files which do not follow the specs for executables under DOS,
or having to introduce a
directory path
A path is a string of characters used to uniquely identify a location in a directory structure. It is composed by following the directory tree hierarchy in which components, separated by a delimiting character, represent each directory. The del ...
length-limited
Current Directory Structure
In computing, the working directory of a process is a directory of a hierarchical file system, if any, dynamically associated with each process. It is sometimes called the current working directory (CWD), e.g. the BSD getcwd function, or just c ...
(CDS) internally
), but also actual bugs in the kernel and several drivers, in order to make certain other drivers and applications run on DR-DOS, when they were tested on specific versions of MS-DOS only.
Windows
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
, which has traditionally emulated many old system bugs to allow older low-level programs to run, is another example. As a result,
Wine
Wine is an alcoholic drink typically made from fermented grapes. Yeast consumes the sugar in the grapes and converts it to ethanol and carbon dioxide, releasing heat in the process. Different varieties of grapes and strains of yeasts are m ...
, which makes it possible to run many Windows applications on other platforms, also needs to maintain bug compatibility with Windows.
When Microsoft phased out support for 16-bit code in Windows by no longer including
NTVDM in 64-bit editions of the operating system, the executable loader was modified to recognize some specific 16-bit stub launchers and installers and replace them on-the-fly with equivalent code stubs that run on 64-bit processors.
Other
During development of its
IBM PC compatible
IBM PC compatible computers are similar to the original IBM PC, XT, and AT, all from computer giant IBM, that are able to use the same software and expansion cards. Such computers were referred to as PC clones, IBM clones or IBM PC clones. ...
,
Compaq
Compaq Computer Corporation (sometimes abbreviated to CQ prior to a 2007 rebranding) was an American information technology company founded in 1982 that developed, sold, and supported computers and related products and services. Compaq produced ...
engineers found that ''
Microsoft Flight Simulator
''Microsoft Flight Simulator'' is a series of amateur flight simulator programs for Microsoft Windows operating systems, and earlier for MS-DOS and Classic Mac OS. It was an early product in the Microsoft application portfolio and differed sig ...
'' would not run because of what
subLOGIC's
Bruce Artwick described as "a bug in one of
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 seri ...
's chips", forcing them to make their computer bug-compatible with the IBM PC.
Another hardware example is found in the design of the
IBM Personal Computer/AT A20 address line to emulate the behaviour in older processors.
Microsoft Excel
Microsoft Excel is a spreadsheet developed by Microsoft for Microsoft Windows, Windows, macOS, Android (operating system), Android and iOS. It features calculation or computation capabilities, graphing tools, pivot tables, and a macro (comp ...
has always had a deliberate
leap year bug
The leap year problem (also known as the leap year bug or the leap day bug) is a problem for both digital (computer-related) and non-digital documentation and data storage situations which results from errors in the calculation of which years are ...
, which falsely treats 29 February 1900 as an actual date, to ensure backward compatibility with
Lotus 1-2-3.
Hyrum Wright Hyrum is the name of:
People
* Hyrum Rex Lee, Governor of American Samoa
* Hyrum Smith, an early leader in the Church of Jesus Christ of Latter-Day Saints religious movement
* Hyrum G. Smith, patriarch of the Church of Jesus Christ of Latter-Day ...
, an engineer at
Google
Google LLC () is an American multinational technology company focusing on search engine technology, online advertising, cloud computing, computer software, quantum computing, e-commerce, artificial intelligence, and consumer electronics. ...
, talks about this problem that he observed firsthand while working on C++ core libraries. It was
Titus Winters
Titus Caesar Vespasianus ( ; 30 December 39 – 13 September 81 AD) was Roman emperor from 79 to 81. A member of the Flavian dynasty, Titus succeeded his father Vespasian upon his death.
Before becoming emperor, Titus gained renown as a mili ...
, also an engineer at Google, who popularized this concept on a larger scale as "
Hyrum's Law
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standa ...
".
See also
*
AARD code
The AARD code was a segment of code in a beta release of Microsoft Windows 3.1 that would determine whether Windows was running on MS-DOS or PC DOS, rather than a competing workalike such as DR-DOS, and would result in a cryptic error messag ...
*
Plug compatible
*
Software bug
A software bug is an error, flaw or fault in the design, development, or operation of computer software that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The process of finding and correcting bugs i ...
*
API
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standa ...
Notes
References
{{reflist, refs=
[{{cite news , url=https://archive.org/stream/1985-01-computegazette/Compute_Gazette_Issue_19_1985_Jan#page/n33/mode/2up , title=Bruce Artwick / The Designer Behind Flight Simulator II , work=Compute!'s Gazette , date=January 1985 , access-date=2014-07-06 , author-last=Yakal , author-first=Kathy , page=32]
[{{cite web , url=http://www.jargon.net/jargonfile/b/bug-compatible.html , title=Bug-compatible - www.jargon.net , access-date=2010-02-03]
[{{cite book , author-first1=Andrew , author-last1=Schulman , author-first2=Ralf D. , author-last2=Brown , author-link2=Ralf D. Brown , author-first3=David , author-last3=Maxey , author-first4=Raymond J. , author-last4=Michels , author-first5=Jim , author-last5=Kyle , title=Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 , publisher=]Addison Wesley
Addison-Wesley is an American publisher of textbooks and computer literature. It is an imprint of Pearson PLC, a global publishing and education company. In addition to publishing books, Addison-Wesley also distributes its technical titles through ...
, edition=2 , date=1994 , orig-year=November 1993 , isbn=0-201-63287-X , location=Reading, Massachusetts , url-access=registration , url=https://archive.org/details/undocumenteddosp00andr_0 (xviii+856+vi pages, 3.5"-floppy) Errata
https://web.archive.org/web/20190417212906/https://www.pcjs.org/pubs/pc/programming/Undocumented_DOS/#errata-2nd-edition]
[{{cite web , title=Need DOS 6.22 (Not OEM) , author-first=Matthias R. , author-last=Paul , date=2002-02-20 , work=alt.msdos.programmer , url=https://groups.google.com/d/msg/alt.msdos.programmer/MAv9LuYQjs8/HuYCph4KsQYJ , access-date=2006-10-14 , url-status=live , archive-url=https://archive.today/20170909145248/https://groups.google.com/forum/%23!msg/alt.msdos.programmer/MAv9LuYQjs8/HuYCph4KsQYJ , archive-date=2017-09-09]
[{{cite web , title=Re: masm .com (PSP) related trouble , author-first=Matthias R. , author-last=Paul , date=2002-10-07 , work=alt.lang.asm , url=https://groups.google.com/d/msg/alt.lang.asm/PNOd9zfYow0/vXbab16j4XwJ , access-date=2017-09-03 , url-status=live , archive-url=https://archive.today/20170903231100/https://groups.google.com/forum/%23!msg/alt.lang.asm/PNOd9zfYow0/vXbab16j4XwJ , archive-date=2017-09-03]
[{{cite web , url=https://wiki.winehq.org/Wine_Features , title=WineFeatures - The Official Wine Wiki , access-date=2010-02-03]
[{{cite web , title=Treiber dynamisch nachladen (Intra-Segment-Offset-Relokation zum Laden von TSRs in die HMA) , trans-title=Loading drivers dynamically (Intra-segment offset relocation to load TSRs into the HMA) , author-first=Matthias R. , author-last=Paul , date=2002-02-02 , work=de.comp.os.msdos , language=German , url=https://groups.google.com/d/msg/de.comp.os.msdos/tdvpBoMVN6A/a_zqDxGk22IJ , access-date=2017-07-02 , url-status=live , archive-url=https://archive.today/20170909085006/https://groups.google.com/forum/%23!msg/de.comp.os.msdos/tdvpBoMVN6A/a_zqDxGk22IJ , archive-date=2017-09-09 (NB. Gives a comprehensive overview on the history and "nature" of the High Memory Area, HMA and the non-obvious design constraints to be observed when developing resident system extensions to be loaded into the HMA.)]
[Excel incorrectly assumes that the year 1900 is a leap year](_blank)
Retrieved 2019-05-01.
[{{cite web , title=bug-for-bug compatible , url=http://www.catb.org/jargon/html/B/bug-for-bug-compatible.html , website=catb.org, quote=Same as bug-compatible, with the additional implication that much tedious effort went into ensuring that each (known) bug was replicated.]
[{{cite journal , last1=Pontin , first1=Jason , title=Windows 95's third delay; needs polish , journal=InfoWorld , date=26 December 1994 , volume=16 , issue=52 , page=18 , url=https://books.google.com/books?id=gDgEAAAAMBAJ&pg=PA18 , publisher=InfoWorld Media Group, Inc.]
[{{cite newsgroup , title=Fix for CauseWay DOS extender under DR-DOS 7.0x EMM386.EXE , author-first=Matthias R. , author-last=Paul , newsgroup=comp.os.msdos.programmer , date=2002-04-01 , url=https://groups.google.com/d/msg/comp.os.msdos.programmer/Bl1jt_NvtUw/ZfiqL0PhyZIJ , access-date=2018-09-19 , url-status=live , archive-url=https://archive.today/20180919133247/https://groups.google.com/forum/%23!msg/comp.os.msdos.programmer/Bl1jt_NvtUw/ZfiqL0PhyZIJ , archive-date=2018-09-19]
[{{cite web , title=Re: d-devOn GRAFTABL and DISPLAY.SYS (Was: Changing codepages in FreeDOS) , author-first=Matthias R. , author-last=Paul , date=2001-08-18 , work=freedos-dev , url=https://marc.info/?l=freedos-dev&m=99816495921290&w=2 , access-date=2017-09-04 , url-status=live , archive-url=https://archive.today/20170904165516/https://marc.info/?l=freedos-dev&m=99816495921290&w=2 , archive-date=2017-09-04]
[{{cite web , title=Application Installation on 64-bit Systems , publisher=]Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
, date=2018-05-31 , url=https://msdn.microsoft.com/en-us/library/windows/desktop/aa384143(v=vs.85).aspx , access-date=2016-05-26 , url-status=live , archive-url=https://web.archive.org/web/20210722222436/https://docs.microsoft.com/en-us/windows/win32/winprog64/application-installation?redirectedfrom=MSDN , archive-date=2021-07-22
[{{cite web , title=64-bit versions of Windows do not support 16-bit components, 16-bit processes, or 16-bit applications , publisher=]Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
, id=KB896458 , date=2020-09-08 , orig-date=2011-09-11 , version=2.0 , url=https://support.microsoft.com/en-us/kb/896458 , access-date=2016-05-26 , url-status=live , archive-url=https://web.archive.org/web/20210912195009/https://docs.microsoft.com/en-US/troubleshoot/windows-client/application-management/x64-windows-not-support-16-bit-programs , archive-date=2021-09-12
[{{cite newsgroup , title=Cluster Size , author-first=Wally , author-last=Bass , date=1994-02-14 , newsgroup=comp.os.msdos.programmer , url=https://groups.google.com/d/msg/comp.os.msdos.programmer/ZGE7qkh4eI0/1vssg3Yt3nkJ , access-date=2006-10-14 , url-status=live , archive-url=https://archive.today/20170909144921/https://groups.google.com/forum/%23!msg/comp.os.msdos.programmer/ZGE7qkh4eI0/1vssg3Yt3nkJ , archive-date=2017-09-09]
[{{cite book , date=1992-01-12 , title=Programmer's Technical Reference for MSDOS and the IBM PC , author-first=Dave , author-last=Williams , id=DOSREF , isbn=1-878830-02-3 , url=http://www.o3one.org/hwdocs/bios_doc/dosref22.html , access-date=2012-01-08 (NB. The author mentions that DOS 4.0 checks the OEM label, but denies that DOS 3.2 checks it as well (although it does).)]
[{{cite web , title=NOVOLTRK.REG , author-first=Matthias R. , author-last=Paul , date=2004-08-25 , work=www.drdos.org , url=http://www.ibiblio.org/pub/micro/pc-stuff/freedos/win9x/NOVOLTRK.ZIP , access-date=2011-12-17 , url-status=dead , archive-url=https://web.archive.org/web/20160304124755/http://www.ibiblio.org/pub/micro/pc-stuff/freedos/win9x/NOVOLTRK.ZIP , archive-date=2016-03-04}]
/ref>
[{{cite web , title=DOS COUNTRY.SYS file format , type=COUNTRY.LST file , author-first=Matthias R. , author-last=Paul , date=2001-06-10 , edition=1.44 , orig-date=1995 , url=http://www.columbia.edu/~em36/wpdos/MatthiasPaulCPI.zip , access-date=2016-08-20 , url-status=live , archive-url=https://web.archive.org/web/20160420065252/http://www.columbia.edu/~em36/wpdos/MatthiasPaulCPI.zip , archive-date=2016-04-20]
[{{cite web , author-first=Matthias R. , author-last=Paul , title=Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM README.TXT , url=http://www.uni-bonn.de/~uzs180/download/ibmbioa3.zip , date=1997-10-02 , access-date=2009-03-29 , url-status=dead , archive-url=https://web.archive.org/web/20031004074600/http://www-student.informatik.uni-bonn.de/~frinke/ibmbioa3.zip , archive-date=2003-10-04}]
/ref>
[{{cite book , title=DR-DOS 7.03 WHATSNEW.TXT - Changes from DR-DOS 7.02 to DR-DOS 7.03 , publisher=]Caldera, Inc.
Caldera was a US-based software company founded in 1994 to develop Linux- and DOS-based operating system products.
Caldera
Caldera, Inc. was a Canopy-funded software company founded in October 1994 and incorporated on 25 January 1995 by f ...
, ref={{harvid, Caldera, 1998 , date=1998-12-24 , url=http://www.lookas.net/ftp/incoming/darbui/Justas/DRDOS/WHATSNEW.TXT , access-date=2019-04-08 , url-status=dead , archive-url=https://web.archive.org/web/20190408142232/http://www.lookas.net/ftp/incoming/darbui/Justas/DRDOS/WHATSNEW.TXT , archive-date=2019-04-08
[{{cite book , title=NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds , work=MPDOSTIP , author-first=Matthias R. , author-last=Paul , date=1997-07-30 , orig-year=1994-05-01 , edition=3 , version=Release 157 , language=de , url=http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm , access-date=2014-08-06 , url-status=live , archive-url=https://web.archive.org/web/20170910194752/http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm , archive-date=2017-09-10 (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger ]MPDOSTIP.ZIP
collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT
file.
A yet older version 155 from 1997-05-13 of the 1997-07-15 distribution archive. -->
/ref>
[{{cite book , title=NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7 , work=MPDOSTIP
, chapter=Chapter 1.3.xi: Überlange Pfade , author-first=Matthias R. , author-last=Paul , date=1997-06-07 , orig-year=April 1994 , version=Release 85 , language=de , url=http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdos7un.htm , access-date=2016-11-07 , url-status=live , archive-url=https://web.archive.org/web/20161107122352/http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdos7un.htm , archive-date=2016-11-07]
Software bugs
Backward compatibility