Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/p-org/PSharp
A framework for rapid development of reliable asynchronous software.
https://github.com/p-org/PSharp
asynchronous-programming automated-testing dotnet reliability specifications state-machines
Last synced: 1 day ago
JSON representation
A framework for rapid development of reliable asynchronous software.
- Host: GitHub
- URL: https://github.com/p-org/PSharp
- Owner: p-org
- License: mit
- Archived: true
- Created: 2015-02-09T00:23:53.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2020-11-04T18:12:24.000Z (about 4 years ago)
- Last Synced: 2024-04-28T07:23:21.408Z (7 months ago)
- Topics: asynchronous-programming, automated-testing, dotnet, reliability, specifications, state-machines
- Language: C#
- Homepage:
- Size: 47.5 MB
- Stars: 391
- Watchers: 40
- Forks: 38
- Open Issues: 45
-
Metadata Files:
- Readme: README.md
- Contributing: Docs/Contributing.md
- License: LICENSE
Awesome Lists containing this project
README
**News**: P# has evolved into [Coyote](https://microsoft.github.io/coyote/). This repository is now deprecated and development has moved [here](https://github.com/microsoft/coyote). Check it out!
---
P# is a framework for rapid development of reliable asynchronous software. The P# project, which started as a collaboration between [Microsoft Research](https://www.microsoft.com/en-us/research/) and [Imperial College London](http://www.imperial.ac.uk/), is used by several teams in [Azure](https://azure.microsoft.com/) to design, implement and automatically test production distributed systems and services.
## Features
The P# framework provides:
- An actor-based programming model for building event-driven asynchronous applications. The unit of concurrency in P# is an asynchronous communicating state-machine, which is basically an actor that can create new machines, send and receive events, and transition to different states. Using P# machines, you can express your design and code at a higher level that is a natural fit for many cloud services.
- An efficient, lightweight runtime that is build on top of the Task Parallel Library (TPL). This runtime can be used to deploy a P# program in production. The P# runtime is very flexible and can work with any communication and storage layer.
- The capability to easily write safety and liveness specifications (similar to TLA+) programmatically in C#.
- A systematic testing engine that can control the P# program schedule, as well as all declared sources of nondeterminism (e.g. failures and timeouts), and systematically explore the actual executable code to discover bugs (e.g. crashes or specification violations). If a bug is found, the P# testing engine will report a deterministic reproducible trace that can be replayed using the Visual Studio Debugger.## Getting started
Read the P# programming guide and then read about various features and topics [here](Docs/README.md).## How to build
Follow the [instructions](Docs/BuildInstructions.md) to build P# from source, or just install our latest P# [NuGet package](https://www.nuget.org/packages/Microsoft.PSharp/).## How to contribute
We welcome contributions! However, before you start contributing, please read carefully the [development guidelines](Docs/Contributing.md).## Contact us
If you are interested in using P# in your project, or have any P# related questions, please send us an [email](mailto:[email protected]) or open a new [issue](https://github.com/p-org/PSharp/issues).