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 Loading

  1. strict-encoding strict-encoding Public

    Protobufs for functional programming

    Rust 9 8

  2. strict-types strict-types Public

    Rust implementation of strict encoding schema library

    Rust 6 4

  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
  • strict-types Public

    Rust implementation of strict encoding schema library

    strict-types/strict-types’s past year of commit activity
    Rust 6 Apache-2.0 4 7 2 Updated Nov 29, 2024
  • strict-encoding Public

    Protobufs for functional programming

    strict-types/strict-encoding’s past year of commit activity
    Rust 9 Apache-2.0 8 5 (1 issue needs help) 0 Updated Nov 20, 2024
  • registry Public

    Registry of strict type libraries

    strict-types/registry’s past year of commit activity
    TeX 1 0 0 0 Updated Jul 24, 2023
  • spec Public

    Strict encoding specification

    strict-types/spec’s past year of commit activity
    1 1 0 0 Updated May 27, 2023
  • .github Public
    strict-types/.github’s past year of commit activity
    0 0 0 0 Updated Jan 30, 2023
  • encoding_derive_helpers Public

    Helper functions for creating encoding derivation macros in Rust

    strict-types/encoding_derive_helpers’s past year of commit activity
    Rust 0 Apache-2.0 0 0 0 Updated Dec 9, 2022
  • stenc Public

    Strict encoding compiler. Strict encoding is a format used by client-side-validation, RGB smart contracts, AluVM, Internet2 APIs and in languages ParselTongue and Contractum.

    strict-types/stenc’s past year of commit activity
    Rust 3 MIT 3 0 0 Updated Aug 3, 2021

Top languages

Loading…

Most used topics

Loading…