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 [send us a pull request](https://github.com/google/protobuf/pulls) to update this page. 6 7## Programming Languages 8 9These are projects we know about implementing Protocol Buffers for other programming languages: 10* Action Script: http://code.google.com/p/protobuf-actionscript3/ 11* Action Script: https://code.google.com/p/protoc-gen-as3/ 12* Action Script: https://github.com/matrix3d/JProtoc 13* Action Script: https://github.com/zhongfq/protobuf-as3/ 14* C: https://github.com/protobuf-c/protobuf-c 15* C: http://koti.kapsi.fi/jpa/nanopb/ 16* C: https://github.com/cloudwu/pbc/ 17* C: https://github.com/haberman/upb/wiki 18* C: https://github.com/squidfunk/protobluff 19* C: https://github.com/eerimoq/pbtools 20* C++: https://github.com/google/protobuf (Google-official implementation) 21* C++: https://EmbeddedProto.com 22* C/C++: http://spbc.sf.net/ 23* C#: http://code.google.com/p/protobuf-csharp-port 24* C#: https://silentorbit.com/protobuf/ 25* C#/.NET/WCF/VB: http://code.google.com/p/protobuf-net/ 26* Clojure: http://github.com/ninjudd/clojure-protobuf 27* Clojure: https://github.com/clojusc/protobuf 28* Clojure: https://protojure.github.io 29* Common Lisp: http://github.com/ndantam/s-protobuf 30* Common Lisp: http://github.com/brown/protobuf 31* D: https://github.com/dcarp/protobuf-d 32* D: https://github.com/msoucy/dproto 33* D: https://github.com/opticron/ProtocolBuffer 34* Dart: https://github.com/dart-lang/dart-protobuf (runtime) https://github.com/dart-lang/dart-protoc-plugin (code generator) 35* Delphi: http://sourceforge.net/projects/protobuf-delphi/ 36* Delphi: http://fundementals.sourceforge.net/dl.html 37* Elixir: https://github.com/jeremyong/exprotoc 38* Elixir: https://github.com/tony612/protobuf-elixir 39* Elixir: https://github.com/ahamez/protox 40* Elm: https://github.com/tiziano88/elm-protobuf 41* Erlang: https://github.com/tomas-abrahamsson/gpb 42* Erlang: http://piqi.org/ 43* Erlang: https://github.com/basho/erlang_protobuffs (no longer maintained, use gpb instead) 44* Hacklang/HHVM: https://github.com/y3llowcake/proto-hack 45* GDScript: https://github.com/oniksan/godobuf (Godot v3 engine plugin) 46* Go: https://github.com/golang/protobuf (Google-official implementation) 47* Go: https://github.com/akunspy/gopbuf 48* Go: https://github.com/gogo/protobuf 49* GopherJS: https://github.com/johanbrandhorst/protobuf 50* Haskell: http://hackage.haskell.org/package/hprotoc 51* Haskell: https://github.com/google/proto-lens (Google-unofficial implementation) 52* Haskell: https://github.com/awakesecurity/proto3-suite (code generator) https://github.com/awakesecurity/proto3-wire (binary serializer/deserializer) 53* Haxe: https://github.com/Atry/protoc-gen-haxe 54* Java: https://github.com/google/protobuf (Google-official implementation) 55* Java/Android: https://github.com/square/wire 56* Java: https://github.com/HebiRobotics/QuickBuffers/ 57* Java ME: http://code.google.com/p/protobuf-javame/ 58* Java ME: http://swingme.sourceforge.net/encode.shtml 59* Java ME: http://code.google.com/p/protobuf-j2me/ 60* Javascript: http://code.google.com/p/protobuf-js/ 61* Javascript: http://github.com/sirikata/protojs 62* Javascript: https://github.com/dcodeIO/ProtoBuf.js 63* Javascript: http://code.google.com/p/protobuf-for-node/ 64* Javascript: http://code.google.com/p/protostuff/ 65* Julia: https://github.com/tanmaykm/ProtoBuf.jl 66* Kotlin: https://github.com/marcoferrer/kroto-plus 67* Kotlin: https://github.com/Kotlin/kotlinx.serialization 68* Lua: http://code.google.com/p/protoc-gen-lua/ 69* Lua: http://github.com/indygreg/lua-protobuf 70* Lua: https://github.com/Neopallium/lua-pb 71* Matlab: http://code.google.com/p/protobuf-matlab/ 72* Mercury: http://code.google.com/p/protobuf-mercury/ 73* Objective C: http://code.google.com/p/protobuf-objc/ 74* Objective C: https://github.com/alexeyxo/protobuf-objc 75* OCaml: http://piqi.org/ 76* Perl: http://groups.google.com/group/protobuf-perl 77* Perl: http://search.cpan.org/perldoc?Google::ProtocolBuffers 78* Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic 79* Perl/XS: http://code.google.com/p/protobuf-perlxs/ 80* PHP: http://code.google.com/p/pb4php/ 81* PHP: https://github.com/allegro/php-protobuf/ 82* PHP: https://github.com/chobie/php-protocolbuffers 83* PHP: http://drslump.github.com/Protobuf-PHP 84* Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html 85* Python: https://github.com/google/protobuf (Google-official implementation) 86* Python: https://github.com/eigenein/protobuf 87* Python: https://github.com/danielgtaylor/python-betterproto 88* R: http://cran.r-project.org/package=RProtoBuf 89* Ruby: http://code.google.com/p/ruby-protobuf/ 90* Ruby: http://github.com/mozy/ruby-protocol-buffers 91* Ruby: https://github.com/bmizerany/beefcake/tree/master/lib/beefcake 92* Ruby: https://github.com/localshred/protobuf 93* Rust: https://github.com/stepancheg/rust-protobuf/ 94* Scala: http://github.com/jeffplaisance/scala-protobuf 95* Scala: http://code.google.com/p/protobuf-scala 96* Scala: https://github.com/SandroGrzicic/ScalaBuff 97* Scala: https://scalapb.github.io 98* Solidity: https://github.com/celer-network/pb3-gen-sol 99* Swift: https://github.com/alexeyxo/protobuf-swift 100* Swift: https://github.com/apple/swift-protobuf/ 101* Typescript: https://github.com/y3llowcake/protoc-gen-ts 102* Vala: https://launchpad.net/protobuf-vala 103* Visual Basic: http://code.google.com/p/protobuf-net/ 104 105## RPC Implementations 106 107GRPC (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. 108 109* https://github.com/grpc/grpc (C++, Node.js, Python, Ruby, Objective-C, PHP, C#, Google-official implementation) 110* https://zeroc.com/products/ice (Multiple languages) 111* https://github.com/protobuf-net/protobuf-net (C#/.NET/WCF/VB) 112* http://www.deltavsoft.com/doc/_external_serialization.html#Protobufs (C++) 113* https://protojure.github.io (Clojure) 114* https://code.google.com/p/protobuf-rpc-pro/ (Java) 115* https://github.com/baidu/sofa-pbrpc (C++) 116* https://github.com/madhon/protobuf-csharp-rpc (C#) 117* https://github.com/madwyn/libpbrpc (C++) 118* https://github.com/SeriousMa/grpc-protobuf-validation (Java) 119* https://github.com/elixir-grpc/grpc (Elixir) 120* https://github.com/johanbrandhorst/protobuf (GopherJS) 121* https://github.com/awakesecurity/gRPC-haskell (Haskell) 122* https://github.com/Yeolar/raster (C++) 123* https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser) 124* https://github.com/ppissias/xsrpcj (Java) 125 126Inactive: 127 128* https://launchpad.net/txprotobuf/ (Python) 129* https://github.com/modeswitch/protobuf-rpc (Python) 130* https://github.com/sdeo/protobuf-socket-rpc (Java, Python) 131* https://code.google.com/p/proto-streamer/ (Java) 132* https://code.google.com/p/server1/ (C++) 133* https://code.google.com/p/protobuf-mina-rpc/ (Python client, Java server) 134* https://code.google.com/p/casocklib/ (C++) 135* https://code.google.com/p/cxf-protobuf/ (Java) 136* https://code.google.com/p/protobuf-remote/ (C++/C#) 137* https://code.google.com/p/eneter-protobuf-serializer/ (Java/.NET) 138* https://github.com/robbinfan/claire/tree/master/protorpc (C++) 139* https://github.com/ebencheung/arab (C++) 140* https://code.google.com/p/protobuf-csharp-rpc/ (C#) 141* https://github.com/thesamet/rpcz (C++/Python, based on ZeroMQ) 142* https://github.com/w359405949/libmaid (C++, Python) 143 144## Other Utilities 145 146There are miscellaneous other things you may find useful as a Protocol Buffers developer. 147 148* [Bazel Build](https://bazel.build) 149 * [rules_closure](https://github.com/bazelbuild/rules_closure) `js-closure` 150 * [rules_go](https://github.com/bazelbuild/rules_go) `go` 151 * [rules_protobuf](https://github.com/pubref/rules_protobuf) `java` `c++` `c#` `go` `js-closure` `js-node` `python` `ruby` 152* [NetBeans IDE plugin](http://code.google.com/p/protobuf-netbeans-plugin/) 153* [Wireshark/Ethereal packet sniffer plugin](http://code.google.com/p/protobuf-wireshark/) 154* [Alternate encodings (JSON, XML, HTML) for Java protobufs](http://code.google.com/p/protobuf-java-format/) 155* [Another JSON encoder/decoder for Java](https://github.com/sijuv/protobuf-codec) 156* [Editor for serialized protobufs](http://code.google.com/p/protobufeditor/) 157* [Intellij IDEA plugin](http://github.com/nnmatveev/idea-plugin-protobuf) 158* [TextMate syntax highlighting](http://github.com/michaeledgar/protobuf-tmbundle) 159* [Oracle PL SQL plugin](http://code.google.com/p/protocol-buffer-plsql/) 160* [Eclipse editor for protobuf (from Google)](http://code.google.com/p/protobuf-dt/) 161* [C++ Builder compatible protobuf](https://github.com/saadware/protobuf-cppbuilder) 162* Maven Protobuf Compiler Plugin 163 * 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/) 164 * http://igor-petruk.github.com/protobuf-maven-plugin/ 165 * http://code.google.com/p/maven-protoc-plugin/ 166 * https://github.com/os72/protoc-jar-maven-plugin 167* [Documentation generator plugin (Markdown/HTML/DocBook/...)](https://github.com/pseudomuto/protoc-gen-doc) 168* [DocBook generator for .proto files](http://code.google.com/p/protoc-gen-docbook/) 169* [Protobuf for nginx module](https://github.com/dbcode/protobuf-nginx/) 170* [RSpec matchers and Cucumber step defs for testing Protocol Buffers](https://github.com/connamara/protobuf_spec) 171* [Sbt plugin for Protocol Buffers](https://github.com/Atry/sbt-cppp) 172* [Gradle Protobuf Plugin](https://github.com/aantono/gradle-plugin-protobuf) 173* [Multi-platform executable JAR and Java API for protoc](https://github.com/os72/protoc-jar) 174* [Python scripts to convert between Protocol Buffers and JSON](https://github.com/NextTuesday/py-pb-converters) 175* [Visual Studio Language Service support for Protocol Buffers](http://visualstudiogallery.msdn.microsoft.com/4bc0f38c-b058-4e05-ae38-155e053c19c5) 176* [Visual Studio Code Support for Protocol Buffers](https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3) 177* [C++ library for serialization/de-serialization between Protocol Buffers and JSON.](https://github.com/yinqiwen/pbjson) 178* [ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser and Builder.](https://github.com/protobufel/protobuf-el) 179* [Notepad++ Syntax Highlighting for .proto files](https://github.com/chai2010/notepadplus-protobuf) 180* [Linter for .proto files](https://github.com/ckaznocha/protoc-gen-lint) 181* [Protocol Buffers Dynamic Schema - create protobuf schemas programmatically (Java)](https://github.com/os72/protobuf-dynamic) 182* [Make protoc plugins in NodeJS](https://github.com/konsumer/node-protoc-plugin) 183* [ProfaneDB - A Protocol Buffers database](https://profanedb.gitlab.io) 184* [Protocol Buffer property-based testing utility and example message generator (Python / Hypothesis)](https://github.com/CurataEng/hypothesis-protobuf) 185* [Protolock - CLI utility to prevent backward-incompatible changes to .proto files](https://github.com/nilslice/protolock) 186* [Optional GRPC - GRPC for testable microservices (Python)](https://github.com/mattpaletta/optional-grpc.git) 187