Git Product home page Git Product logo

go-erlang's Introduction

Go-Erlang

Go-Erlang is a set of tools for Go <-> Erlang interoperability.

The core of the library is the Erlang External Term Format. It is the internal format data to exchange Erlang terms over the network. This binary format is used for example in Erlang distribution protocol.

Installation

Usage

BERT and BERT-RPC library for Go

BERT library for Go is designed for simple data exchange between Go and Erlang/Elixir applications.

BERT stands for Binary ERlang Term. It is a Remote Procedure Call mechanism to support interop between Erlang code
and other programming languages.

BERT library implements serialization and deserialization, as well as a subset / variation of the BERT-RPC protocol for Go.

Here are the important points to note:

  • This version supports BERT-RPC over HTTP. It is not optimal for performance, but can rely on standard HTTP tooling features like connection pools, authentication, load balancing, etc.
  • This version implements the type I needed in Erlang External Term Format for interop with ejabberd.

Why use BERT?

If you want to exchange data with Erlang node, it is handy to use a format that support all the Erlang types, including atoms. Without having the concept of atoms explicitly in the data exchange protocol, you end up adding wrapper tuples and conversions on the Erlang side that become very painful.

If you do not need to interop with Erlang, we would recommend using Protobuf or MsgPack.

TODO

Support various transport for BERT-RPC client:

  • HTTP
  • TCP/IP
  • MQTT

go-erlang's People

Contributors

mremond avatar

Stargazers

Niranjan Anandkumar avatar Trevor Brown avatar Krzysztof Sinica avatar Călin Ilie avatar Dubois Hugues avatar  avatar  avatar Kenji Rikitake avatar Liam Gray avatar Henning Dahlheim avatar Simon Jesenko avatar Chris Ward avatar  avatar jumango avatar Oussama Rouabah avatar Justin Workman avatar Hoang Phan avatar Devon 'fire' Adkisson avatar Sam Gaw avatar  avatar  avatar Wondong Shin avatar  avatar Michele Riva avatar  avatar Patrick Smith avatar Ming Fang avatar  avatar fuwq avatar  avatar

Watchers

Sébastien Luquet avatar Paweł Chmielowski avatar  avatar badlop avatar Wondong Shin avatar Jérôme Sautret avatar James Cloos avatar Alexey Shchepin avatar  avatar  avatar  avatar

go-erlang's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.