1 .. _developer-friendly:
7 This section describes the different ways VPP is friendly to developers:
9 * Extensive runtime counters; throughput, `intructions per cycle <https://en.wikipedia.org/wiki/Instructions_per_cycle>`_, errors, events etc.
10 * Integrated pipeline tracing facilities
11 * Multi-language API bindings
12 * Integrated command line for debugging
13 * Fault-tolerant and upgradable
15 * Runs as a standard user-space process for fault tolerance, software crashes seldom require more than a process restart.
16 * Improved fault-tolerance and upgradability when compared to running similar packet processing in the kernel, software updates never require system reboots.
17 * Development expierence is easier compared to similar kernel code
18 * Hardware isolation and protection (`iommu <https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_management_unit>`_)
22 * Extensive white-box testing
23 * Image segment base address randomization
24 * Shared-memory segment base address randomization
25 * Stack bounds checking
26 * Static analysis with `Coverity <https://en.wikipedia.org/wiki/Coverity>`_