• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Third-Party Add-ons for Protocol Buffers
2
3This page lists code related to Protocol Buffers which is developed and maintained by third parties.  You may find this code useful, but note that **these projects are not affiliated with or endorsed by Google (unless explicitly marked)**; try them at your own risk.  Also note that many projects here are in the early stages of development and not production-ready.
4
5If you have a project that should be listed here, please
6[send us a pull request](https://github.com/protocolbuffers/protobuf/pulls) to update this page.
7
8## Programming Languages
9
10These are projects we know about implementing Protocol Buffers for other programming languages:
11* Action Script: https://code.google.com/p/protobuf-actionscript3/
12* Action Script: https://code.google.com/p/protoc-gen-as3/
13* Action Script: https://github.com/matrix3d/JProtoc
14* Action Script: https://github.com/zhongfq/protobuf-as3/
15* Ada: https://github.com/reznikmm/protobuf
16* C: https://github.com/protobuf-c/protobuf-c
17* C: https://koti.kapsi.fi/jpa/nanopb/
18* C: https://github.com/cloudwu/pbc/
19* C: https://github.com/haberman/upb/wiki
20* C: https://github.com/squidfunk/protobluff
21* C: https://github.com/eerimoq/pbtools
22* C++: https://github.com/protocolbuffers/protobuf (Google-official implementation)
23* C++: https://EmbeddedProto.com
24* C/C++: http://spbc.sf.net/
25* C#: https://code.google.com/p/protobuf-csharp-port
26* C#: https://silentorbit.com/protobuf/
27* C#/.NET/WCF/VB: https://code.google.com/p/protobuf-net/
28* Clojure: http://github.com/ninjudd/clojure-protobuf
29* Clojure: https://github.com/clojusc/protobuf
30* Clojure: https://protojure.readthedocs.io
31* Common Lisp: http://github.com/brown/protobuf
32* Common Lisp: http://github.com/qitab/cl-protobuf
33* D: https://github.com/dcarp/protobuf-d
34* D: https://github.com/msoucy/dproto
35* D: https://github.com/opticron/ProtocolBuffer
36* Dart: https://github.com/dart-lang/dart-protobuf (runtime) https://github.com/dart-lang/dart-protoc-plugin (code generator)
37* Delphi: http://sourceforge.net/projects/protobuf-delphi/
38* Delphi: http://fundementals.sourceforge.net/dl.html
39* Elixir: https://github.com/jeremyong/exprotoc
40* Elixir: https://github.com/tony612/protobuf-elixir
41* Elixir: https://github.com/ahamez/protox
42* Elm: https://github.com/tiziano88/elm-protobuf
43* Erlang: https://github.com/tomas-abrahamsson/gpb
44* Erlang: http://piqi.org/
45* Erlang: https://github.com/basho/erlang_protobuffs (no longer maintained, use gpb instead)
46* Hacklang/HHVM: https://github.com/y3llowcake/proto-hack
47* GDScript: https://github.com/oniksan/godobuf (Godot v3 engine plugin)
48* Go: https://github.com/golang/protobuf (Google-official implementation)
49* Go: https://github.com/akunspy/gopbuf
50* Go: https://github.com/gogo/protobuf
51* GopherJS: https://github.com/johanbrandhorst/protobuf
52* Haskell: https://hackage.haskell.org/package/hprotoc
53* Haskell: https://github.com/google/proto-lens (Google-unofficial implementation)
54* Haskell: https://github.com/awakesecurity/proto3-suite (code generator) https://github.com/awakesecurity/proto3-wire (binary serializer/deserializer)
55* Haxe: https://github.com/Atry/protoc-gen-haxe
56* Java: https://github.com/protocolbuffers/protobuf (Google-official implementation)
57* Java/Android: https://github.com/square/wire
58* Java: https://github.com/HebiRobotics/QuickBuffers/
59* Java ME: https://code.google.com/p/protobuf-javame/
60* Java ME: http://swingme.sourceforge.net/encode.shtml
61* Javascript: https://code.google.com/p/protobuf-js/
62* Javascript: http://github.com/sirikata/protojs
63* Javascript: https://github.com/dcodeIO/ProtoBuf.js
64* Javascript: https://code.google.com/p/protobuf-for-node/
65* Javascript: https://code.google.com/p/protostuff/
66* Javascript: https://github.com/seishun/node-protoc-plugin (Node.js port of plugin.h)
67* Javascript: https://github.com/seishun/node-protoc-gen-javascript (Node.js port of the Google-official implementation)
68* Javascript: https://github.com/ButterCam/sisyphus-js
69* Julia: https://github.com/tanmaykm/ProtoBuf.jl
70* Kotlin: https://github.com/marcoferrer/kroto-plus
71* Kotlin: https://github.com/Kotlin/kotlinx.serialization
72* Kotlin: https://github.com/ButterCam/sisyphus
73* Kotlin: https://github.com/open-toast/protokt
74* Kotlin Multiplatform: https://github.com/streem/pbandk
75* Lua: https://code.google.com/p/protoc-gen-lua/
76* Lua: http://github.com/indygreg/lua-protobuf
77* Lua: https://github.com/Neopallium/lua-pb
78* Matlab: https://code.google.com/p/protobuf-matlab/
79* Mercury: https://code.google.com/p/protobuf-mercury/
80* Objective C: https://code.google.com/p/protobuf-objc/
81* Objective C: https://github.com/alexeyxo/protobuf-objc
82* OCaml: http://piqi.org/
83* Perl: http://groups.google.com/group/protobuf-perl
84* Perl: https://metacpan.org/pod/Google::ProtocolBuffers
85* Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic
86* Perl/XS: https://code.google.com/p/protobuf-perlxs/
87* PHP: https://code.google.com/p/pb4php/
88* PHP: https://github.com/allegro/php-protobuf/
89* PHP: https://github.com/chobie/php-protocolbuffers
90* Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html
91* Purescript: https://github.com/xc-jp/purescript-protobuf
92* Python: https://github.com/protocolbuffers/protobuf (Google-official implementation)
93* Python: https://github.com/eigenein/protobuf
94* Python: https://github.com/danielgtaylor/python-betterproto
95* R: http://cran.r-project.org/package=RProtoBuf
96* Ruby: https://code.google.com/p/ruby-protobuf/
97* Ruby: http://github.com/mozy/ruby-protocol-buffers
98* Ruby: https://github.com/bmizerany/beefcake/tree/master/lib/beefcake
99* Ruby: https://github.com/localshred/protobuf
100* Rust: https://github.com/tokio-rs/prost
101* Rust: https://github.com/stepancheg/rust-protobuf/
102* Rust: https://github.com/tafia/quick-protobuf
103* Scala: http://github.com/jeffplaisance/scala-protobuf
104* Scala: https://code.google.com/p/protobuf-scala
105* Scala: https://github.com/SandroGrzicic/ScalaBuff
106* Scala: https://scalapb.github.io
107* Solidity: https://github.com/celer-network/pb3-gen-sol
108* Swift: https://github.com/alexeyxo/protobuf-swift
109* Swift: https://github.com/apple/swift-protobuf/
110* Typescript: https://github.com/thesayyn/protoc-gen-ts
111* Typescript: https://github.com/pbkit/pbkit
112* Vala: https://launchpad.net/protobuf-vala
113* Visual Basic: https://code.google.com/p/protobuf-net/
114
115## RPC Implementations
116
117GRPC (http://www.grpc.io/) is Google's RPC implementation for Protocol Buffers. There are other third-party RPC implementations as well.  Some of these actually work with Protocol Buffers service definitions (defined using the `service` keyword in `.proto` files) while others just use Protocol Buffers message objects.
118
119* https://github.com/grpc/grpc (C++, Node.js, Python, Ruby, Objective-C, PHP, C#, Google-official implementation)
120* https://zeroc.com/products/ice (Multiple languages)
121* https://github.com/protobuf-net/protobuf-net (C#/.NET/WCF/VB)
122* http://www.deltavsoft.com/doc/_external_serialization.html#Protobufs (C++)
123* https://protojure.github.io (Clojure)
124* https://code.google.com/p/protobuf-rpc-pro/ (Java)
125* https://github.com/baidu/sofa-pbrpc (C++)
126* https://github.com/madhon/protobuf-csharp-rpc (C#)
127* https://github.com/madwyn/libpbrpc (C++)
128* https://github.com/SeriousMa/grpc-protobuf-validation (Java)
129* https://github.com/elixir-grpc/grpc (Elixir)
130* https://github.com/johanbrandhorst/protobuf (GopherJS)
131* https://github.com/awakesecurity/gRPC-haskell (Haskell)
132* https://github.com/Yeolar/raster (C++)
133* https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser)
134* https://github.com/pbkit/npm-packages/blob/main/frpc-test/src/index.spec.ts (TypeScript Node.js/Browser)
135* https://github.com/ppissias/xsrpcj (Java)
136* https://github.com/twitchtv/twirp (Multiple languages)
137
138Inactive:
139
140* https://launchpad.net/txprotobuf/ (Python)
141* https://github.com/modeswitch/protobuf-rpc (Python)
142* https://github.com/sdeo/protobuf-socket-rpc (Java, Python)
143* https://code.google.com/p/proto-streamer/ (Java)
144* https://code.google.com/p/server1/ (C++)
145* https://code.google.com/p/protobuf-mina-rpc/ (Python client, Java server)
146* https://code.google.com/p/casocklib/ (C++)
147* https://code.google.com/p/cxf-protobuf/ (Java)
148* https://code.google.com/p/protobuf-remote/ (C++/C#)
149* https://code.google.com/p/eneter-protobuf-serializer/ (Java/.NET)
150* https://github.com/robbinfan/claire/tree/master/protorpc (C++)
151* https://github.com/ebencheung/arab (C++)
152* https://code.google.com/p/protobuf-csharp-rpc/ (C#)
153* https://github.com/thesamet/rpcz (C++/Python, based on ZeroMQ)
154* https://github.com/w359405949/libmaid (C++, Python)
155
156## Other Utilities
157
158There are miscellaneous other things you may find useful as a Protocol Buffers developer.
159
160* [Bazel Build](https://bazel.build)
161    * [rules_closure](https://github.com/bazelbuild/rules_closure) `js-closure`
162    * [rules_go](https://github.com/bazelbuild/rules_go) `go`
163    * [rules_protobuf](https://github.com/pubref/rules_protobuf) `java` `c++` `c#` `go` `js-closure` `js-node` `python` `ruby`
164* [NetBeans IDE plugin](https://code.google.com/p/protobuf-netbeans-plugin/)
165* [Wireshark/Ethereal packet sniffer plugin](https://code.google.com/p/protobuf-wireshark/)
166* [Alternate encodings (JSON, XML, HTML) for Java protobufs](https://code.google.com/p/protobuf-java-format/)
167* [Another JSON encoder/decoder for Java](https://github.com/sijuv/protobuf-codec)
168* [Editor for serialized protobufs](https://code.google.com/p/protobufeditor/)
169* [IntelliJ IDEA plugin](http://github.com/jvolkman/intellij-protobuf-editor)
170* [IntelliJ Protobuf Plugin](https://github.com/devkanro/intellij-protobuf-plugin)
171* [TextMate syntax highlighting](http://github.com/michaeledgar/protobuf-tmbundle)
172* [Oracle PL SQL plugin](https://code.google.com/p/protocol-buffer-plsql/)
173* [Eclipse editor for protobuf (from Google)](https://code.google.com/p/protobuf-dt/)
174* [C++ Builder compatible protobuf](https://github.com/saadware/protobuf-cppbuilder)
175* Maven Protobuf Compiler Plugin
176    * By xolstice.org ([Documentation](https://www.xolstice.org/protobuf-maven-plugin/)) ([Source](https://github.com/xolstice/protobuf-maven-plugin/)) [![Maven Central](https://img.shields.io/maven-central/v/org.xolstice.maven.plugins/protobuf-maven-plugin.svg)](https://repo1.maven.org/maven2/org/xolstice/maven/plugins/protobuf-maven-plugin/)
177    * https://code.google.com/p/maven-protoc-plugin/
178    * https://github.com/os72/protoc-jar-maven-plugin
179* [Documentation generator plugin (Markdown/HTML/DocBook/...)](https://github.com/pseudomuto/protoc-gen-doc)
180* [DocBook generator for .proto files](https://code.google.com/p/protoc-gen-docbook/)
181* [Protobuf for nginx module](https://github.com/dbcode/protobuf-nginx/)
182* [RSpec matchers and Cucumber step defs for testing Protocol Buffers](https://github.com/connamara/protobuf_spec)
183* [Sbt plugin for Protocol Buffers](https://github.com/Atry/sbt-cppp)
184* [Protobuf Plugin for Gradle](https://github.com/google/protobuf-gradle-plugin)
185* [Multi-platform executable JAR and Java API for protoc](https://github.com/os72/protoc-jar)
186* [Python scripts to convert between Protocol Buffers and JSON](https://github.com/NextTuesday/py-pb-converters)
187* [Visual Studio Language Service support for Protocol Buffers](http://visualstudiogallery.msdn.microsoft.com/4bc0f38c-b058-4e05-ae38-155e053c19c5)
188* [Visual Studio Code Support for Protocol Buffers](https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3)
189* [C++ library for serialization/de-serialization between Protocol Buffers and JSON.](https://github.com/yinqiwen/pbjson)
190* [ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser and Builder.](https://github.com/protobufel/protobuf-el)
191* [Notepad++ Syntax Highlighting for .proto files](https://github.com/chai2010/notepadplus-protobuf)
192* [Linter for .proto files](https://github.com/ckaznocha/protoc-gen-lint)
193* [Protocol Buffers Dynamic Schema - create protobuf schemas programmatically (Java)](https://github.com/os72/protobuf-dynamic)
194* [Make protoc plugins in NodeJS](https://github.com/konsumer/node-protoc-plugin)
195* [ProfaneDB - A Protocol Buffers database](https://profanedb.gitlab.io)
196* [Protocol Buffer property-based testing utility and example message generator (Python / Hypothesis)](https://github.com/CurataEng/hypothesis-protobuf)
197* [Protolock - CLI utility to prevent backward-incompatible changes to .proto files](https://github.com/nilslice/protolock)
198* [Optional GRPC - GRPC for testable microservices (Python)](https://github.com/mattpaletta/optional-grpc.git)
199* [Protobuf Parser - Yet another Go package which parses a Protocol Buffer file (proto2+proto3)](https://github.com/yoheimuta/go-protoparser)
200* [Protolint - A tool to enforce Protocol Buffer style and conventions.](https://github.com/yoheimuta/protolint)
201    * [vscode-protolint: A protobuf linter for visual studio code](https://github.com/plexsystems/vscode-protolint)
202    * [intellij-protolint: A protobuf linter for JetBrains IDEs](https://github.com/yoheimuta/intellij-protolint)
203    * [vim-protolint: A protobuf linter for Vim](https://github.com/yoheimuta/vim-protolint)
204* [super-linter: Protocol Buffer lint as GitHub Action](https://github.com/github/super-linter)
205* [protoc-gen-fieldmask - A plugin to generate static type fieldmask paths](https://github.com/idodod/protoc-gen-fieldmask)
206