Adapton/fungi-lang.rust
{ "createdAt": "2018-02-10T14:55:04Z", "defaultBranch": "master", "description": "Fungi: Typed incremental computation with names", "fullName": "Adapton/fungi-lang.rust", "homepage": "", "language": "Rust", "name": "fungi-lang.rust", "pushedAt": "2019-10-11T14:44:08Z", "stargazersCount": 70, "topics": [], "updatedAt": "2025-08-19T12:26:26Z", "url": "https://github.com/Adapton/fungi-lang.rust"}
Fungi: Typed incremental computation with names 
Section titled “ Fungi: Typed incremental computation with names ”Fungi is a Rust-based DSL that offers a typed functional language for incremental computation with names.
Fungi Developer Resources:
Section titled “Fungi Developer Resources:”- Rust Implementation of Fungi:
- Visualization tools for Fungi programs
Background
Section titled “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.