Backward compatibility

From Infogalactic: the planetary knowledge core
(Redirected from Backward-compatibility)
Jump to: navigation, search

In telecommunications and computing, a product or technology is backward compatible (BC)[1] or downward compatible if it can function properly given input generated by, or meant for, an older product or technology, such as a legacy system.[2] If products designed for the new standard can receive, read, view or play older standards or formats, then the product is said to be backward-compatible; examples of such a standard include data formats and communication protocols. Modifications to a system that do not allow backward compatibility are sometimes called "breaking changes."

The reverse is forward compatibility, which implies that old devices allow (or are expected to allow) data formats generated by new (or future) devices, perhaps without supporting all new features. A standard supports forward compatibility if older product versions can receive, read, view or play the new standard.

For example, the introduction of FM stereo transmission allowed backward compatibility since new FM radio receivers could receive monaural signals generated by old transmitters. It also allowed forward compatibility, since old monaural FM radio receivers could still receive a signal from a new transmitter.

In programming languages, backward compatibility refers to the ability of a compiler for version N of the language to accept programs or data that worked under version N - 1.[3] By this definition, if previous versions (N - 1, N - 2, etc.) were also backward compatible, which is often the case, then, by induction, version N will also accept input that worked under any prior version after, and including, the latest one that was not backward compatible. However, in practice, features are often deprecated and support is dropped in a later release, which is yet thought of as backward compatible.

In other contexts, a product or a technology is said to be backward compatible when it is able to fully take the place of an older product, by inter-operating with products that were designed for the older product.[4][need quotation to verify]

A data format is also said to be backward compatible with its predecessor if every message or file that is valid under the old format is also valid, and retains its meaning, under the new.[5]

Description

Backward compatibility is a relationship between two components, rather than being an attribute of just one of them. More generally, a new component is said to be backward compatible if it provides all of the functionality of the old component.[citation needed]

Backward compatibility is the special case of compatibility in which the new component has a direct historical ancestral relationship with the old component. If this special relationship does not exist then it not usually spoken of as "backward" compatibility but is instead just "compatible"—a consistent interface allowing interoperability between components and products that were each developed separately.

In the case of a program that creates document files, a new version of that program ("v2") is said to be backward compatible with the old version of the program ("v1") when it can both read and write documents that work with v1. Everything that v1 could do must also be possible with v2, including saving documents that can be read by v1 (which is something that v1 could do).

If a newer software version cannot save files that can be read by the older version, it is not backward compatible with the older version, although it may provide an irreversible upgrade capability for the old files. This situation has often been used strategically by software vendors to force customers to purchase upgrades since, over time, the number of data files usable by an old version diminishes at a rate proportional to the number of other customers that have upgraded (assuming that all customers generate files at the same the average rate).

Levels of compatibility vary. In software, binary compatibility and source compatibility are distinguishable. Binary compatibility means that programs can work correctly with the new version of this library without requiring recompilation. Source compatibility requires recompilation but no changes to the source code.

Many platforms rely on emulation, the simulation of an older platform in software, to achieve backward compatibility.

Many computer programs "know" their own software versioning number, and write that number somewhere in the data files they create. This makes relatively easy for a new program to be backwards compatible with files produced by several previous versions of a program. Even when the new program is unable to completely understand long-deprecated features in files produced by a much earlier version of the program, that new program can use that version number to help the user find some previous version of the program that can completely understand that file.

Bugwards compatible

If a newer system is attempting to achieve integration with an older system which has known flaws (or "bugs"), then the new system may be referred to as bug-compatible or "bugwards-compatible".[6][7][8]

Examples

Lua error in package.lua at line 80: module 'strict' not found.

  • The NTSC color broadcast system was engineered by RCA to be backward compatible with black-and-white NTSC television sets.
  • DVB-T MPEG4 television tuners can also decode MPEG2 signal.
  • Most DVD drives are able to play standard CDs.
  • Most Blu-ray players can also play standard DVDs and CDs (although this feature is not compulsory in the Blu-ray standard).
  • Numerous video game consoles are backward compatible and are able to play the games created for predecessor consoles.
    • The Atari 7800 is backward compatible with almost all Atari 2600 games.
    • The Sega 32X add-on is backward compatible with all Sega Genesis cartridges.
    • Original versions of the Wii are fully backward compatible with all Nintendo GameCube games and most accessories. However, the Wii Family Edition and Wii Mini eliminated backward compatibility to the GameCube.
    • The Game Boy Color is backward compatible with all Game Boy cartridges.
    • The Game Boy Advance and Game Boy Advance SP are backward compatible with all Game Boy and Game Boy Color games. However, the latter will not work properly with games like Kirby Tilt 'n' Tumble and Game Boy Camera that require the cartridge to be upright while in the system, and the Game Boy Micro only supports Game Boy Advance games.
    • The Nintendo DS and the Nintendo DS Lite are backward compatible with all Game Boy Advance games. However, the Nintendo DSi (XL) is not, with the latter also not supporting games that require a peripheral in the Game Boy Advance slot (such as Guitar Hero: On Tour), as well as only being able to play Rumble Pak-supporting games without said accessory.
    • The Nintendo 3DS line (including the Nintendo 3DS (XL), the Nintendo 2DS and the New Nintendo 3DS (XL)) are backward compatible with most of the Nintendo DS and Nintendo DSi software, with both DSiWare and DSi-enhanced game cards being supported from the latter (though some games such as Oregon Trail that were available as DSiWare are not available on the Nintendo 3DS family of systems).
    • The Wii U is backward compatible with all Wii games and peripherals, and later revisions of the firmware support using the Wii U GamePad as a screen for Wii games (though it cannot be used as a controller for Wii games). In addition, support for Nintendo GameCube controllers via a USB peripheral is planned for 2014.
    • The PlayStation 2 is backward compatible with most of the original PlayStation library.
    • The Nintendo GameCube is backward compatible with Game Boy, Game Boy Color, and Game Boy Advance games when its Game Boy Player accessory is plugged into the bottom of the system. However, while games with motion sensors such as Kirby Tilt 'n' Tumble and WarioWare Twisted!, as well as the Game Boy Camera, will function, playing them is impractical due to the fact that such games normally require moving the system around during gameplay.
    • Initially, some PlayStation 3 (20GB, 1st-gen 60 and 80GB) launch models are backward compatible with most PlayStation and PlayStation 2 games. All subsequent PlayStation 3 models, such as the PlayStation 3 Super Slim model, support disc versions of PS1 titles but not PS2 titles. The exception to this is the Singstar range of games. The option to change discs in-game allows songs on PS2 games to be used. All versions of the PlayStation 3 support download versions of PS1 and PS2 titles.[9]
    • The Xbox 360 is backward compatible with some Xbox games via software emulation. Similar for the Xbox One, which is backward compatible with some Xbox 360 games after applying a November 2015 system update.[10]
    • Both the Atari 5200 and Sega Genesis have cartridge adapters to provide compatibility with Atari 2600 (Atari CX-55 Cartridge Adapter) and Sega Master System (Power Base Converter) games respectively.
  • Microsoft Word 2000 was backward compatible with Word 97 because it could read and write files in Word 97 format, with the understanding that features unique to Word 2000 would not appear in Word 97. At the same time, Microsoft Word, Excel, PowerPoint, Access and OneNote, both 2007 and 2010, are also backward compatible with their 97-2003 file formats and features in the same manner.
  • Several computer operating systems have various methods of running software originally designed for older versions or other OSs:
    • With the introduction of Windows 7 (Business, Ultimate, or Enterprise editions), Windows XP Mode enables full compatibility with older programs supported under Windows XP via Windows Virtual PC.
    • Mac OS 9 applications can be run on PowerPC versions of Mac OS X up to 10.4 Tiger.
    • 32-bit versions of Microsoft Windows contain application compatibility shims to make the platform compatible with most software from earlier versions of Windows including Windows 3.1, as well as MS-DOS.
    • The Intel versions of Mac OS X from versions 10.4 (Tiger) to 10.6 (Snow Leopard) have Rosetta, a binary translation program that allows applications meant for use on PowerPC Macs to run on Apple systems that use Intel processors. (Newer OS X versions, do not contain Rosetta and thus cannot run PowerPC applications.)
  • The modern Nikon F-mount SLR camera lenses from the late 1970s - present (its design dates back to 1959) can function on the newer Nikon DSLR cameras with some limitations.
  • Lenses for the Canon EF-mount, introduced with the company's EOS family of film SLRs in 1987 and used to this day on Canon full-frame and APS-H EOS DSLRs, can function fully on the company's APS-C DSLRs that use the Canon EF-S-mount (although their angle of view will be different on the smaller APS-C sensor).
  • PCI Express 2.0 is backward compatible with PCI Express 1.1.
  • Universal Serial Bus (USB) ports support devices intended for earlier versions of USB. For example, USB 3.0 ports support USB 2.0 and USB 1.1 devices.
  • The IBM 7080 transistorized computer was backward compatible with all models of the IBM 705 vacuum tube computer.
  • When Touch Tone dialing was introduced into the telephone system, the network continued to work with the existing rotary telephones, a situation that continues today.
  • Telephones that used Pulse dialing were compatible with parts of the telephone network that did not yet work with tone dialing by mimicking the pulses generated by a rotary phone. Often such phones had a switch that would change them to use touch tone.

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Michael Kay, XSLT 2.0 Programmer's Reference, Wiley Default, 2004 ISBN 0-7645-6909-0, ISBN 978-0-7645-6909-8
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. http://blog.us.playstation.com/2014/01/07/playstation-now-streaming-game-service-coming-this-summer/
  10. https://www.youtube.com/watch?v=zXYA2kc52Gc&t=25m18s

External links