A framework for building, analyzing, systematically testing and debugging asynchronous reactive software. P# is used by engineers in Azure to design, implement and thoroughly test distributed systems and services.
The P# framework provides:
- Language extensions to C# for building event-driven asynchronous applications, writing test harnesses, and specifying safety and liveness properties.
- A systematic testing engine that can capture and control all specified nondeterminism in the system, systematically explore the actual executable code to discover bugs, and report bug traces. A P# bug trace provides a global order of all communication events, and thus is easier to debug.
- Support for replaying bug traces, and debugging them using the Visual Studio debugger.
Read the P# programming guide and then read about various features and topics here.
How to build
How to contribute
We welcome contributions! However, before you start contributing, please read carefully the development guidelines.