Etymology[edit]
The term "port" is derived from the Latin portāre, meaning "to carry".[3] When code is not compatible with a particular operating system or architecture, the code must be "carried" to the new system.
The term is not generally applied to the process of adapting software to run with less memory on the same CPU and operating system.
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).
History[edit]
The number of significantly different CPUs and operating systems used on the desktop 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, macOS, and Linux. However, in the embedded systems and mobile markets, portability remains a significant issue, with the ARM being a widely used alternative.
International standards, such as those promulgated by the ISO, greatly facilitate porting by specifying details of the computing environment in a way that helps reduce differences between different standards-conforming platforms. Writing software that stays within the bounds specified by these standards represents a practical although nontrivial effort. Porting such a program between two standards-compliant platforms (such as POSIX.1) can be just a matter of loading the source code and recompiling it on the new platform. However, practitioners often find that various minor corrections are required, due to subtle platform differences. Most standards suffer from "gray areas" where differences in interpretation of standards lead to small variations from platform to platform.
There also exists 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 another 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.
$_$_$DEEZ_NUTS#0__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#0__subtitleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#0__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#0__subtitleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#0__call_to_action.textDEEZ_NUTS$_$_$$_$_$DEEZ_NUTS#7__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#7__descriptionDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#6__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#6__descriptionDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#2__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#2__descriptionDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#8__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#8__descriptionDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#8__heading--0DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#8__description--0DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#9__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#9__subtextDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#10__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#10__subtextDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#5__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#5__subtextDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#5__answer--0DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#5__answer--1DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__subtextDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--0DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--1DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--2DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--3DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--4DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--5DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--6DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--7DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--8DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--9DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#1__answer--10DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#3__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#3__subtextDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#3__answer--0DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#3__answer--1DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#4__titleDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#4__subtextDEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#4__answer--0DEEZ_NUTS$_$_$
$_$_$DEEZ_NUTS#4__answer--1DEEZ_NUTS$_$_$