Porting
From Wikipedia, the free encyclopedia
In computer science, porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed (e.g. different CPU, operating system, or third party library). The term is also used in a general way to refer to the changing of software/hardware to make them usable in different environments.
Contents |
[edit] Etymology
The term is not generally applied to the process of adapting software to run with less memory on the same CPU and operating system, nor is it applied to the rewriting of source code in a different language (i.e. language conversion or translation).
Software developers often claim that the software they write is portable, meaning that little effort is needed to adapt it to a new environment. The amount of effort actually needed depends on several factors, including the extent to which the original environment (the source platform) differs from the new environment (the target platform), the experience of the original authors in knowing which programming language constructs and third party library calls are unlikely to be portable, and the amount of effort invested by the original authors in only using portable constructs (platform specific constructs often provide a cheaper solution).
[edit] History
The number of significantly different CPUs and operating systems commonly used today is much smaller than in the past. The dominance of the x86 architecture means that most desktop software is never ported to a different CPU. In that same market, the choice of operating systems has effectively been reduced to three: Microsoft Windows, with about 90% market share; Mac OS; and Unix/Linux). In the embedded systems market, portability remains a significant issue.
International standards, such as those promulgated by the ISO, greatly facilitate porting by specifying details of the computing environment in a way that minimizes variances among different platforms. Often, porting software between two platforms that implement the same standard (such as POSIX.1) is simply a matter of recompiling the program on the new platform.
There also exist an ever-increasing number of tools to facilitate porting, such as the GNU Compiler Collection, which provides consistent programming languages on different platforms, and Autotools, which automates the detection of minor variations in the environment and adapts the software accordingly before compilation.
The compilers for some high-level programming languages (e.g. Eiffel, Esterel) gain portability by outputting source code in a high level intermediate language (such as C) for which compilers for many platforms are generally available.
Two activities related to (but distinct from) porting are emulating and cross-compiling.
[edit] Porting in gaming
Porting is also the term used when a computer game designed to run on one platform, be it a personal computer or a video game console, is converted to run on a different platform. Earlier video game "ports" were often not true ports, but rather reworked versions of the games. However, more and more video games are now being developed using software that can output code for PCs as well as for one or more consoles. Many early ports suffered significant gameplay quality issues because the hardware of PCs and consoles differed so dramatically.