{"id":15285838,"url":"https://github.com/processone/go-erlang","last_synced_at":"2025-05-07T03:46:26.976Z","repository":{"id":57512133,"uuid":"182041123","full_name":"processone/go-erlang","owner":"processone","description":"Go library for Erlang/Elixir interop","archived":false,"fork":false,"pushed_at":"2019-05-31T16:23:54.000Z","size":170,"stargazers_count":34,"open_issues_count":1,"forks_count":5,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-07T03:46:21.525Z","etag":null,"topics":["beam","bert","bertrpc","elixir","erlang","go","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/processone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-18T07:46:17.000Z","updated_at":"2025-05-06T12:59:36.000Z","dependencies_parsed_at":"2022-09-26T16:31:09.187Z","dependency_job_id":null,"html_url":"https://github.com/processone/go-erlang","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Fgo-erlang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Fgo-erlang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Fgo-erlang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/processone%2Fgo-erlang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/processone","download_url":"https://codeload.github.com/processone/go-erlang/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252810274,"owners_count":21807759,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beam","bert","bertrpc","elixir","erlang","go","golang"],"created_at":"2024-09-30T15:07:48.634Z","updated_at":"2025-05-07T03:46:26.954Z","avatar_url":"https://github.com/processone.png","language":"Go","readme":"# Go-Erlang\n\nGo-Erlang is a set of tools for Go \u003c-\u003e Erlang interoperability.\n\nThe core of the library is the Erlang External Term Format. It is the internal format data to exchange Erlang terms \nover the network. This binary format is used for example in Erlang distribution protocol.\n\n## Installation\n\n## Usage\n\n## BERT and BERT-RPC library for Go\n\nBERT library for Go is designed for simple data exchange between Go and Erlang/Elixir applications.\n\nBERT stands for Binary ERlang Term. It is a Remote Procedure Call mechanism to support interop between Erlang code\\\nand other programming languages.\n\nBERT library implements serialization and deserialization, as well as a subset / variation of the BERT-RPC protocol\nfor Go.\n\nHere are the important points to note:\n- This version supports BERT-RPC over HTTP. It is not optimal for performance, but can rely on standard HTTP tooling\n  features like connection pools, authentication, load balancing, etc.\n- This version implements the type I needed in Erlang External Term Format for interop with\n  [ejabberd](https://github.com/processone/ejabberd/).\n  \n### Why use BERT?\n\nIf you want to exchange data with Erlang node, it is handy to use a format that support all the Erlang types, including\natoms. Without having the concept of atoms explicitly in the data exchange protocol, you end up adding wrapper tuples\nand conversions on the Erlang side that become very painful.\n\nIf you do not need to interop with Erlang, we would recommend using Protobuf or MsgPack.\n\n## TODO\n\nSupport various transport for BERT-RPC client:\n- HTTP\n- TCP/IP\n- MQTT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprocessone%2Fgo-erlang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprocessone%2Fgo-erlang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprocessone%2Fgo-erlang/lists"}