Das vorrangige Ziel ist eine API zu haben, mit der Programmierer Code entwickeln können, der sich überall vorhersagbar, wenn nicht identisch, verhält, egal auf welcher Plattform er kompiliert wird. Dadurch muss man keine Sonderfälle programmieren, um plattformabhängige Vor- oder Nachteile nutzen oder vermeiden zu können.
Hier eine kurze Übersicht der wichtigsten Subsysteme von APR 1.x:
- Atomic Operations
- Dynamic Shared Object Loading
- Datei I/O
- Locks (mutexes, condition variables, etc.)
- Memory Management (high performance allocators)
- Memory-mapped Dateien
- Multicast Sockets
- Netzwerk I/O
- Shared Memory
- Thread und Process Management
- verschiedene Datenstrukturen (tables, hashes, priority queues, etc.)