The Apache Portable Runtime (APR) is a supporting library for the
Apache
The Apache ( ) are several Southern Athabaskan language-speaking peoples of the Southwestern United States, Southwest, the Southern Plains and Northern Mexico. They are linguistically related to the Navajo. They migrated from the Athabascan ho ...
web server
A web server is computer software and underlying Computer hardware, hardware that accepts requests via Hypertext Transfer Protocol, HTTP (the network protocol created to distribute web content) or its secure variant HTTPS. A user agent, co ...
. It provides a set of
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s that map to the underlying operating system (OS).
Where the OS does not support a particular function, APR will provide an emulation. Thus programmers can use the APR to make a program truly portable across platforms.
APR originally formed a part of
Apache HTTP Server
The Apache HTTP Server ( ) is a free and open-source software, free and open-source cross-platform web server, released under the terms of Apache License, Apache License 2.0. It is developed and maintained by a community of developers under the ...
, but the
Apache Software Foundation
The Apache Software Foundation ( ; ASF) is an American nonprofit corporation (classified as a 501(c)(3) organization in the United States) to support a number of open-source software projects. The ASF was formed from a group of developers of the ...
spun it off into a separate project. Other applications can use it to achieve platform independence.
Functionality
The range of platform-independent functionality provided by APR includes:
*
Memory allocation
Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of resource management applied to computer memory. The essential requirement of memory management is to provide ways to dynam ...
and
memory pool
Memory pools, also called fixed-size blocks allocation, is the use of pools for memory management that allows dynamic memory allocation. Dynamic memory allocation can, and has been achieved through the use of techniques such as malloc and C ...
functionality
*
Atomic operations
Atomic may refer to:
* Of or relating to the atom, the smallest particle of a chemical element that retains its chemical properties
* Atomic physics, the study of the atom
* Atomic Age, also known as the "Atomic Era"
* Atomic scale, distances com ...
* Dynamic
library
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
handling
* File
I/O
* Command-argument parsing
*
Locking
*
Hash table
In computer science, a hash table is a data structure that implements an associative array, also called a dictionary or simply map; an associative array is an abstract data type that maps Unique key, keys to Value (computer science), values. ...
s and
array
An array is a systematic arrangement of similar objects, usually in rows and columns.
Things called an array include:
{{TOC right
Music
* In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
s
*
Mmap
In computing, mmap(2) is a POSIX-compliant Unix system call that maps files or devices into memory. It is a method of memory-mapped file I/O. It implements demand paging because file contents are not immediately read from disk and initially use n ...
functionality
*
Network sockets and protocols
*
Thread,
process
A process is a series or set of activities that interact to produce a result; it may occur once-only or be recurrent or periodic.
Things called a process include:
Business and management
* Business process, activities that produce a specific s ...
and
mutex
In computer science, a lock or mutex (from mutual exclusion) is a synchronization primitive that prevents state from being modified or accessed by multiple threads of execution at once. Locks enforce mutual exclusion concurrency control policies, ...
functionality
*
Shared memory functionality
*
Skip list
In computer science, a skip list (or skiplist) is a Randomized algorithm, probabilistic data structure that allows O(\log n) Average-case complexity, average complexity for search as well as O(\log n) average complexity for insertion within an or ...
functionality
* Time routines
* User and group ID services
Similar projects
*
GLib
GLib is a bundle of three (formerly five) low-level system libraries written in C and developed mainly by GNOME. GLib's code was separated from GTK, so it can be used by software other than GNOME and has been developed in parallel ever since ...
– provides similar functionality. It supports many more data structures and OS-independent functions, but fewer
IPC
IPC may refer to:
Businesses and organizations Arts and media
* Intellectual Property Committee, a coalition of US corporations with intellectual property interests
* International Panorama Council, an international network of specialists in ...
-related functions. (GLib lacks local and global locking and shared-memory management.)
*
Netscape Portable Runtime (NSPR) is a cross-platform abstraction library used by the
Mozilla
Mozilla is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, publishes and supports Mozilla products, thereby promoting free software and open standards. The community is supported institution ...
project. It is used by another subproject of
Mozilla application framework
The Mozilla application framework is a collection of cross-platform
Within computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is desi ...
(XPFE) to provide cross-platform
graphical user interface
A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
(GUI) functionality.
*
Adaptive Communication Environment (ACE) is an object-oriented library written in C++ similar in functionality to APR. It is widely deployed in commercial products.
commonc++is a cross-platform C++ class library for systems programming, with much of the same functionality as APR.
*
POCO
In software engineering, a plain old CLR object, or plain old class object (POCO) is a simple object created in the .NET Common Language Runtime (CLR) that is unencumbered by inheritance or attributes. This is often used in opposition to the comp ...
is a modern C++ framework similar in concept but more extensive than APR.
*
wxWidgets
wxWidgets (formerly wxWindows) is a widget toolkit and tools library for creating graphical user interfaces (GUIs) for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with no s ...
is an object-oriented cross-platform GUI library that also provides abstraction classes for database communication,
IPC
IPC may refer to:
Businesses and organizations Arts and media
* Intellectual Property Committee, a coalition of US corporations with intellectual property interests
* International Panorama Council, an international network of specialists in ...
and networking functionality.
*
KDE Frameworks
KDE Frameworks is a collection of Library (computing), libraries and software frameworks readily available to any Qt (software), Qt-based software stacks or applications on multiple operating systems. Featuring frequently needed functionality sol ...
– used by
KDE SC
References
External links
*
{{Apache Software Foundation
Portable Runtime
C (programming language) libraries
Free computer libraries
Free software programmed in C
Application programming interfaces
Software using the Apache license