stepchowfun

    stepchowfun/typical

    Data interchange with algebraic data types.

    backend
    algebraic-data-types
    data-interchange
    idl
    interface-definition-language
    interface-description-language
    Rust
    MIT
    767 stars
    14 forks
    767 GitHub watchers
    Updated Oct 25, 2026
    View on GitHub

    Build with Backblaze B2

    SDKs, agent skills, IDE extensions, and reference pipelines from Backblaze Labs. All open source.

    Explore Backblaze Labs

    Loading star history...

    Where it stands

    Rank, growth pace and release cadence relative to everything GStars tracks.

    No releases in the last 90 days; the most recent was 112 days ago, with 2 contributors on GitHub.

    Gained 74% fewer stars in the last 90 days than in the 90 days before.

    Use Cases & Benefits

    • Implements a data serialization framework using algebraic data types for defining schemas and generating efficient serialization code in multiple languages.
    • Ensures uncompromising type safety combined with forward and backward binary compatibility across schema versions using asymmetric fields.
    • Use for building type-safe, version-resilient APIs that require efficient binary message interchange between services in Rust and TypeScript.
    • Use for evolving data storage formats where schema changes must maintain compatibility without sacrificing strict type guarantees.
    • Use for designing communication protocols that leverage exhaustive pattern matching and safe schema migrations in distributed systems.

    Should you depend on it?

    License terms, project hygiene and risks, from GitHub metadata and GStars' snapshots.

    License

    MIT

    Permissive: commercial use, modification and redistribution are allowed with attribution.

    Community files

    • README: present
    • Contributing guide: present
    • Code of conduct: present

    Watch-outs

    • Owned by an individual account with only 2 contributors on GitHub; plan for bus-factor risk.

    General guidance from repository metadata, not legal advice. How we score

    From the README

    Typical is a data serialization framework. You define data types in a file called a schema, then Typical generates efficient serialization and deserialization code for various languages. The generated code can be used for marshalling messages between services, storing structured data on disk, etc. The compact binary encoding supports forward and backward compatibility between different versions of your schema to accommodate evolving requirements.

    Typical can be compared to Protocol Buffers and Apache Thrift. The main difference is that Typical has a more modern type system based on algebraic data types, emphasizing a safer programming style with non-nullable types and exhaustive pattern matching. You'll feel at home if you have experience with languages that embrace this style, such as Rust and Haskell. Typical proposes a new solution ("asymmetric" fields) to the classic problem of how to safely add or remove fields in record types without breaking compatibility. The concept of asymmetric fields also solves the dual problem of how to preserve compatibility when adding or removing cases in sum types.

    Excerpt from the stepchowfun/typical README on GitHub (MIT license). © its authors.Read the full README on GitHub

    Daily snapshots

    Stars gained per day, and how forks and open issues moved, from GStars' daily snapshots

    Forks

    14+2

    Open issues

    6+0

    Compared with peers in Backend

    Fastest-growing repositories GStars tracks in this cohort for the week of Nov 1, by 7-day star growth

    stepchowfun/typical compared with Backend repositories by stars, 7-day star growth, health score and last release
    RepositoryStars+7dHealthLast release
    anthropics/skills187.8K+2.9K15—
    DuarteSantos8/openGym19.7K+2.4K602 days ago
    shiyu-coder/Kronos47.0K+2.3K16—
    NationalSecurityAgency/ghidra98.2K+2.3K6414 days ago
    microsoft/VibeVoice56.0K+1.1K29—
    stepchowfun/typical767—32112 days ago
    Category median56.0K+2.3K29—

    Discover Repositories

    Search across tracked repositories by name or description