> For the complete documentation index, see [llms.txt](https://oci-pronghorn.gitbook.io/pronghorn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://oci-pronghorn.gitbook.io/pronghorn/chapter-0-what-is-pronghorn/features.md).

# Features

**1. Broad compatibility**

* Java profile compact1
* No use of Unsafe, Java 9 module compatibility

**2. Simple concurrency model**

* Quickly write correct code with actors
* Easily leverage hundreds or more cores
* All pipes are defined as produced from one actor and consumed by one other

**3. Separation of design concerns**

* Business aware scheduling
  * Actors who do not have work are not scheduled
  * Schedulers can be custom designed or existing solutions applied
* Strong types generated externally
  * Types between actors are externally defined
  * New fields can be added and mapped to new business specific usages

**4. Multiple APIs**

* Embedded friendly use of wrapping arrays
* Integrate with a wide variety of existing interfaces
* Visitors for reading and writing
* Object proxies for reading and writing
* Zero copy direct access to input and output fields
* Replay of messages until they are released

**5. Simple debug and refactoring**

* Messages have full provenance and actor chain upon exception
* Test framework supports automated regression test construction for refactor
* Fuzz testing based on message pipes definitions
* Generative contract testing based on behavior definitions for stages

**6. Static memory allocations**

* No need to release memory and no GC
* Simplify memory usage analysis of the application
* Minimize runtime failures, including out of memory

**7. Copy preferred over lock usage**

* No stalled cores, block free, wait free, continuous progress
* Efficient power usage
* Leverages new fast memory subsystems
* Enables efficient NUMA usage

**8. Sequential memory usage**

* Leverages CPU pre-fetch and caches for fastest possible throughput
* Persistence and immediate start up for free with non-volatile memory
* All media is sequential, mechanical sympathy
* Maximum use of hardware bandwidth

**9. Software sketches**

* Extensive requirements gathering put into a graph
* Involve non-technical people in the early stages
* Refine the design before making any commitments, or beginning iterations

**10. Minimized deployed application**

* For embedded systems, only the needed applications and interfaces are deployed
* Configuration is done at compile time
* Ultra-small attack surface
* Scales well in docker and cloud deployments
* Targets absolute minimum resources consumed
