Apache Portable Runtime
# Apache Portable Runtime

Apache Portable Runtime (APR) es una biblioteca de soporte para el servidor web Apache. Provee un conjunto de API que permiten recurrir al sistema operativo (SO) subyacente. En los casos en que el SO soporta una función particular, APR provee una emulación de la misma. Por tanto, los programadores pueden emplear APR para lograr que un programa sea verdaderamente portátil a través de diversas plataformas.

Originalmente, APR formaba parte del Servidor HTTP Apache, pero la Fundación Apache lo organizó como un proyecto separado. Otras aplicaciones pueden usarlo para lograr independencia de las plataformas.

## Funcionalidad

Entre las funciones independientes de plataformas ofrecidas por APR se incluyen:

* Funcionalidad de gestión de memoria y de pool de memoria
* Instrucciones atómicas
* Gestión dinámica de bibliotecas
* Entrada/salida de archivos
* Análisis de argumentos de la línea de comandos
* Locking
* Tablas hash y arreglos
* Funcionalidad de mapeo en memoria
* Sockets y protocolos
* Hilos de ejecución, control de procesos y funcionalidad de mutex
* Funcionalidad de memoria compartida
* Rutinas de temporización
* Servicios de identificación de usuarios y grupos

## Proyectos similares

* Glib provee una funcionalidad similar. Soporta muchas más estructuras de datos y funciones independientes del sistema operativo, pero menos funciones relacionadas con la comunicación entre procesos. (Glib carece de locking local y global, así como de facilidades de manejo de memoria compartida.)
* NSPR es una biblioteca de abstracción multiplataforma usada por el proyecto Mozilla. Es usada por otro subproyecto de Mozilla, XPFE, para ofrecer una funcionalidad de interfaz gráfica de usuario (GUI) con características multiplataforma.
* Adaptive Communication Environment (ACE) es una biblioteca orientada a objetos escrita en C++, similar a APR en cuanto a su funcionalidad. Tiene una amplia difusión como parte de productos comerciales.
* commonc++ es una biblioteca multiplataforma de clases C++ para la programación de sistemas, con una funcionalidad muy parecida a la de APR.
* POCO es un framework moderno para C++, de concepción similar pero más extensiva que la de APR.
* WxWidgets es una biblioteca multiplataforma orientada a objetos para la interfaz gráfica de usuario que también provee clases de abstracción destinadas a la comunicación de bases de datos, IPC y funciones destinadas a la comunicación en red.
* Qt, un framework multiplataforma para el desarrollo de aplicaciones con características similares, también puede ayudar al desarrollo de GUIs.
