# p-org/P

The P programming language.

Repository: https://github.com/p-org/P
Canonical: https://ross.abutalabs.com/products/p
Homepage: https://p-org.github.io/P/
Language: C#
License: MIT
License Family: permissive
Topics: asynchronous, programming-language, systematic-testing, event-driven, p, distributed-systems, state-machine, model-checking, formal-methods, formal-verification
Last push: 2026-08-21T19:09:01+00:00

## Health v2 (maintenance only)
Score: 90/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 98, release rhythm 73, longevity 100
- inputs: {"age_days": 4091, "days_push": 12, "days_rel": 181, "gap_med": 1, "n_releases_24m": 4}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 3668, forks 224 (observed 2026-08-28T04:08:13.440630+00:00)

## What it is
P is a state machine based programming language for formally modeling and specifying complex distributed systems as collections of communicating state machines. It provides automated reasoning backends (model checkers) to verify safety and liveness properties, plus runtime monitoring to check production logs against specifications.

## Use cases
- formally model a distributed system design as communicating state machines
- find corner-case concurrency bugs via systematic model checking
- verify safety and liveness properties of a protocol before implementation
- check that service logs conform to formal specifications in production
- generate state machines and test drivers from design documents with AI

## When to choose
- you are designing a complex distributed system or microservices architecture and want to catch design bugs early
- you need rigorous correctness guarantees beyond what stress or integration testing provides
- your team wants a developer-friendly specification language rather than pure mathematical notation

## When to avoid
- you need a general-purpose language for building production applications
- your project is small or simple enough that formal modeling is overkill
- your team cannot invest in learning formal methods and specification writing

## Facets
- artifact type: framework
- maturity: active
- function: programming-language, testing, simulation
- domain: microservices, programming-languages, developer-tools
- platform: cross-platform, windows, dotnet, cli
- tags: state-machine, model-checking, formal-methods, systematic-testing, event-driven, asynchronous, specification-language, runtime-monitoring, ai-assisted-codegen, formal-verification, linux, macos, docker

## Member repositories
- p-org/P (main) score 90

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:08:13.440630+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T18:31:21.662737+00:00, confidence not recorded.
  - readme: https://github.com/p-org/P (fetched 2026-08-28T04:08:13.440630+00:00, sha 23fc279fe27b)
  - homepage: https://p-org.github.io/P/ (fetched 2026-08-29T09:25:24.791174+00:00, sha c82258c5b901)
- Data as of 2026-08-30T08:39:29.467469+00:00.
