Skip to content
@strict-types

Strict Types

Generalized algebraic data types (GADT) for normies - functional protobuf & gRPC alternative

Strict types is a formal notation for defining and serializing generalized algebraic data types (GADT) in a deterministic and confined way. It is developed with type theory in mind.

In simple terms, strict types are protocol buffers and gRPC for functional programming (or, for rust devs, functional-style serde).

Strict Types are:

  • schema-based (with the schema being strict encoding notation),
  • semantic, i.e. defines types not just as they are layed out in memory, but also depending on their meaning,
  • deterministic, i.e. produces the same result for a given type,
  • portabile, i.e. can run on ahy hardware architecture and OS, including low-performant embedded systems,
  • confined, i.e. provides guarantees and static analysis on a maximum size of the typed data,
  • formally verifiabile.

Strict Types include:

  • Strict Encoding - set of libraries for serializing / deserializing data types in binary formats (a protobuf analog);
  • Strict RPC, which is a gRPC analog based on strict encoding;
  • Strict REST, which is an HTML REST JSON analog, based on Strict RPC (instead of HTML) and Strict Encoding (instead of JSON).

strict-encoding-box

Strict Types is WIP. Currently it is used by a number of projects including AluVM, RGB smart contracts, Farcaster, Cyphernet and others.

Whitepaper | Yellowpaper | Compiler | Disassembler | Standard type library (STL) | Utilities

Pinned

  1. strict-encoding strict-encoding Public

    Protobufs for functional programming

    Rust 7 9

  2. strict-types strict-types Public

    Rust implementation of strict encoding schema library

    Rust 6 5

  3. registry registry Public

    Registry of strict type libraries

    TeX 1

  4. spec spec Public

    Strict encoding specification

    1 1

Repositories

Showing 7 of 7 repositories

Top languages

Loading…

Most used topics

Loading…