Provides idiomatic Elixir bindings for Apache Thrift, converting Thrift types into Elixir structs and simplifying RPC client/server generation.
Riffed is a library that creates idiomatic Elixir bindings for Apache Thrift, addressing the impedance mismatch between Thrift's Erlang implementation and Elixir's conventions. It enables developers to work with Thrift services using native Elixir structs and patterns, making Thrift integration more pleasant and productive in Elixir applications.
Elixir developers who need to integrate with Apache Thrift services, particularly those building or consuming microservices with Thrift RPC in an Elixir ecosystem.
Developers choose Riffed because it eliminates the boilerplate and awkward tuple-based code from Thrift's Erlang implementation, providing an idiomatic Elixir interface with automatic struct conversion, server/client generation, and enumeration support that feels native to Elixir.
Provides idiomatic Elixir bindings for Apache Thrift
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Converts Thrift types to Elixir structs with preserved default values, enabling seamless serialization/deserialization via Riffed.Struct, as shown in the README examples.
Generates Thrift servers and clients that automatically route RPC calls to handler functions using Elixir structs, eliminating boilerplate code for parameter conversion.
Allows redefinition of Thrift enums as Elixir structs with pattern matching and conversion utilities, though manual configuration is required per the README.
Supports advanced packaging and namespacing for shared Thrift types across services, preventing duplication with features like dest_modules and auto_import_structs controls.
Riffed cannot auto-detect Thrift enumerations; developers must manually redefine them using defenum and specify usage with enumerize macros, adding upfront setup complexity.
Features like shared structs with dest_modules require intricate configuration, which can be error-prone and daunting for teams new to Thrift-Elixir integration.
The library is exclusively for Apache Thrift, making it irrelevant for projects using or transitioning to other RPC protocols like gRPC, limiting its versatility.