tyrade
session-types
tyrade | session-types | |
---|---|---|
5 | 2 | |
314 | 546 | |
- | - | |
0.0 | 0.0 | |
over 1 year ago | over 1 year ago | |
Rust | Rust | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tyrade
-
The Better Alternative to Lifetime GATs
But there's no law of nature that says that Rust type-level syntax must suck forever. Maybe Rust 2036 will make writing this stuff a breeze, who knows. But for now, there are some projects that attempt to fill this gap, like Tyrade, which is a Rust DSL (like, a proc macro) that compiles down to bare Rust. It has seen some usage: there's a session types library built on top of Tyrade that is just awesome:
-
Type-level Bubble Sort in Rust: Part 2
A much more practically useful type-level programming in Rust A macro to define type-level logic with value-level syntax in Rust Type-level Brainfuck in Rust "Gentle Intro to Type-level Recursion in Rust" Type-level registers in Rust Type-level quicksort in Scala" Type-level sorting algorithms in Haskell A repo with functions and algorithms implemented purely on types in TypeScript
- Tyrade: Language for type-level programming in Rust
-
Generalizing over Generics in Rust (Part 1.5): Mechanisms
However, if I were starting over, I think I would take the approach of /u/entoros's tyrade project.
-
Generic associated types encode higher-order functions on types
https://github.com/willcrichton/tyrade#more-complex-example-session-and-list-types
session-types
-
The Better Alternative to Lifetime GATs
But there's no law of nature that says that Rust type-level syntax must suck forever. Maybe Rust 2036 will make writing this stuff a breeze, who knows. But for now, there are some projects that attempt to fill this gap, like Tyrade, which is a Rust DSL (like, a proc macro) that compiles down to bare Rust. It has seen some usage: there's a session types library built on top of Tyrade that is just awesome:
-
Rusty Typestates – Starting Out
Since this often matters when implementing protocols, there is research about session types and verification. Here is a Rust library for session types: https://github.com/Munksgaard/session-types
I believe both have some overlap.
What are some alternatives?
tinyvec - Just, really the littlest Vec you could need. So smol.
rust-fsm - Finite state machine framework for Rust with readable specifications
frunk - Funktional generic type-level programming in Rust: HList, Coproduct, Generic, LabelledGeneric, Validated, Monoid and friends.
meta-typing - 📚 Functions and algorithms implemented purely with TypeScript's type system
hyper-ts - Type safe middleware architecture for HTTP servers
chalk - An implementation and definition of the Rust trait system using a PROLOG-like logic solver
type-level-sort - im so smart please hire me
typic - Type-safe transmutations between layout-compatible types.
bounded-registers - Using Type-Level Programming in Rust to Make Safer Hardware Abstractions
rust - Empowering everyone to build reliable and efficient software.