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