63 releases
Uses old Rust 2015
0.1.63 | Oct 21, 2018 |
---|---|
0.1.62 | Oct 19, 2018 |
0.1.58 | Sep 3, 2018 |
0.1.57 | Aug 21, 2018 |
0.1.25 | Feb 25, 2018 |
#1187 in Rust patterns
92 downloads per month
695KB
14K
SLoC
Fungi: Typed incremental computation with names
Fungi is a Rust-based DSL that offers a typed functional language for incremental computation with names.
Example programs in Fungi
Fungi Developer Resources:
- Rust Implementation of Fungi:
- Visualization tools for Fungi programs
Background
(See also: Fungi technical report)
Fungi is a typed functional language for incremental computation with names.
Incremental computations attempt to exploit input similarities over time, reusing work that is unaffected by input changes. To maximize this reuse in a general-purpose programming setting, programmers need a mechanism to identify dynamic allocations (of data and subcomputations) that correspond over time. Fungi offers a notion of names, which is formal, general, and statically verifiable.
Fungi's type-and-effect system permits the programmer to encode (program-specific) local invariants about names, and to use these invariants to establish global uniqueness for their composed programs, the property of using names correctly. We prove (on paper) that well-typed Fungi programs respect global uniqueness. We implement Fungi in Rust, as a "deeply-embedded" language, including Fungi's bidirectional type system and incremental evaluation semantics.
Related Projects:
Dependencies
~6MB
~125K SLoC