Skip to content
This repository has been archived by the owner on May 6, 2024. It is now read-only.

ipld/edelweiss

Repository files navigation

Edelweiss: Decentralized Protocol Compiler

Edelweiss is a code-generating compiler. Currently, it supports:

  • a comprehensive type system for modeling data
  • service and method definitions
  • Go language code-generation of data types and associated fast, static encoders and decoders to and from the IPLD data model
  • Go language code-generation of RPC services based on a DAGJSON-over-HTTP networking stack
  • the ability to rapidly add user-defined code-generating backends for custom RPC networking stacks

For a detailed longer-term roadmap and planned features refer to the Protocol Compiler Roadmap 2022.

Documentation

The current state of the language and how to use the compiler is covered in the Edelweiss for users slides. Examples of the canonical representation of Edelweiss types are provided in Representations of types.

A complete working example — which defines a greeting service API, and implements a sample client and server cli tools — is provided in this repo. The resulting generated code is also included in the repo for your viewing convenience.

Projects using Edelweiss

Currently, Edelweiss is in the process of being onboarded as the RPC framework for the Delegated Routing API of IPFS and Hydra nodes.