Become a sponsor to Michal Štrba
I'm a programmer who likes to read a lot of papers and is trying to bring type-safe concurrent programming from research to practice.
Concurrency is hard! Even without any race conditions, concurrent programs easily suffer from bugs: unexpected messages, forgotten obligations, deadlocks. Concurrent structures - communication protocols - are mostly in the minds of programmers, and informal documentations. Type systems (even if potentially capable of it) are not sufficiently used to make sure concurrent programs are sound.
However, academic literature is full of papers on session types, linear logic, and other topics which, if applied, can make those a thing of the past, including deadlocks. Unfortunately, most results of this decades long research have not made it into practice. But it's understandable.
It's difficult to figure out how to apply them. Think how long it took from Tony Hoare's famous "billion dollar mistake" words to actually seeing languages without null pointers in mainstream. And that's just null pointers.
What I am trying to do is combine my understanding of the research with clever design ideas to create libraries, tools, educational materials, and possibly programming languages to put the theory to real-world use. My first step on this path is my par crate for Rust, implementing session types based on linear logic.
If you feel like this is a goal worth pursuing, consider joining, or sponsoring! It really does help.
1 sponsor has funded faiface’s work.
Featured work
-
faiface/par
⅋ — session types for Rust
Rust 74 -
faiface/pixel
A hand-crafted 2D game library in Go
Go 4,460 -
faiface/beep
A little package that brings sound to any Go application. Suitable for playback and audio-processing.
Go 2,074 -
faiface/generics
A proof-of-concept implementation of my generics proposal for Go
Go 98