Comment on page
Features
Find out what makes Pronghorn so great.
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
Last modified 5yr ago