.. _developer-friendly: ======================= Features for Developers ======================= This section describes a little about the VPP environment and some of the features that can be used by developers. * Extensive runtime counters; throughput, `intructions per cycle <https://en.wikipedia.org/wiki/Instructions_per_cycle>`_, errors, events etc. * Integrated pipeline tracing facilities * Multi-language API bindings * Integrated command line for debugging * Fault-tolerant and upgradable * Runs as a standard user-space process for fault tolerance, software crashes seldom require more than a process restart. * Improved fault-tolerance and upgradability when compared to running similar packet processing in the kernel, software updates never require system reboots. * Development experience is easier compared to similar kernel code * Hardware isolation and protection (`iommu <https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_management_unit>`_) * Built for security * Extensive white-box testing * Image segment base address randomization * Shared-memory segment base address randomization * Stack bounds checking * Static analysis with `Coverity <https://en.wikipedia.org/wiki/Coverity>`_ For the supported architectures click next.