Par, a language with session types, automatic concurrency, and no deadlocks, has a new homepage
Hello Rustaceans!
It's been a while since I last posted here about Par.
Par is an experimental programming language, implemented fully in Rust (including the custom VM), that uses linear types. Those are similar to Rust's affine type system, but unlike Rust values, linear types cannot be arbitrarily dropped.
Par is not about using linear types for efficiency, and it is not a systems language. It is about exploiting linear types for concurrency as session types. Under the hood, Par is fundamentally a process language, in the spirit of pi-calculus, with expression syntax layered on top to make it usable for practical programming.
The big news is that Par has a new home at https://par.run.
Aside from being a cute website, it hosts:
The browser Playground is a Rust egui app compiled to WASM, with the language compiler and runtime included.
Since the last time I posted, there's been so many additions to the language, for example:
- Packages & Modules (including an MVP package manager)
- Infix arithmetic and comparison operators
- Pipes
- Server & Client nondeterminism
Par's goal is to take decades of theory around session types and classical linear logic, and try to bring it out of the papers into something people can actually program with. At the same time, it is not trying to be maximally theoretical: there are no dependent types, for instance. It is trying to be usable. The paradigm is quite different from Rust, and the syntax may look unfamiliar for a while, but it's a fun rabbit hole.
Let me know what you think!