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 12* Action Script: https://code.google.com/p/protobuf-actionscript3/ 13* Action Script: https://code.google.com/p/protoc-gen-as3/ 14* Action Script: https://github.com/matrix3d/JProtoc 15* Action Script: https://github.com/zhongfq/protobuf-as3/ 16* Ada: https://github.com/reznikmm/protobuf 17* C: https://github.com/protobuf-c/protobuf-c 18* C: https://koti.kapsi.fi/jpa/nanopb/ 19* C: https://github.com/cloudwu/pbc/ 20* C: https://github.com/haberman/upb/wiki 21* C: https://github.com/squidfunk/protobluff 22* C: https://github.com/eerimoq/pbtools 23* C++: https://github.com/protocolbuffers/protobuf (Google-official 24 implementation) 25* C++: https://EmbeddedProto.com 26* C++: https://github.com/yksten/struct2x 27* C/C++: http://spbc.sf.net/ 28* C#: https://code.google.com/p/protobuf-csharp-port 29* C#: https://silentorbit.com/protobuf/ 30* C#/.NET/WCF/VB: https://code.google.com/p/protobuf-net/ 31* Clojure: http://github.com/ninjudd/clojure-protobuf 32* Clojure: https://github.com/clojusc/protobuf 33* Clojure: https://protojure.readthedocs.io 34* Clojure: https://github.com/s-expresso/clojobuf 35* ClojureScript: https://github.com/s-expresso/clojobuf 36* Common Lisp: http://github.com/brown/protobuf 37* Common Lisp: http://github.com/qitab/cl-protobuf 38* D: https://github.com/dcarp/protobuf-d 39* D: https://github.com/msoucy/dproto 40* D: https://github.com/opticron/ProtocolBuffer 41* Dart: https://github.com/dart-lang/dart-protobuf (runtime) 42 https://github.com/dart-lang/dart-protoc-plugin (code generator) 43* Delphi: http://sourceforge.net/projects/protobuf-delphi/ 44* Delphi: http://fundementals.sourceforge.net/dl.html 45* Elixir: https://github.com/jeremyong/exprotoc 46* Elixir: https://github.com/tony612/protobuf-elixir 47* Elixir: https://github.com/ahamez/protox 48* Elm: https://github.com/tiziano88/elm-protobuf 49* Erlang: https://github.com/tomas-abrahamsson/gpb 50* Erlang: http://piqi.org/ 51* Erlang: https://github.com/basho/erlang_protobuffs (no longer maintained, 52 use gpb instead) 53* Hacklang/HHVM: https://github.com/y3llowcake/proto-hack 54* GDScript: https://github.com/oniksan/godobuf (Godot v3 engine plugin) 55* Go: https://github.com/golang/protobuf (Google-official implementation) 56* Go: https://github.com/akunspy/gopbuf 57* Go: https://github.com/gogo/protobuf 58* GopherJS: https://github.com/johanbrandhorst/protobuf 59* Haskell: https://hackage.haskell.org/package/hprotoc 60* Haskell: https://github.com/google/proto-lens (Google-unofficial 61 implementation) 62* Haskell: https://github.com/awakesecurity/proto3-suite (code generator) 63 https://github.com/awakesecurity/proto3-wire (binary 64 serializer/deserializer) 65* Haxe: https://github.com/Atry/protoc-gen-haxe 66* Java: https://github.com/protocolbuffers/protobuf (Google-official 67 implementation) 68* Java/Android: https://github.com/square/wire 69* Java: https://github.com/HebiRobotics/QuickBuffers/ 70* Java ME: https://code.google.com/p/protobuf-javame/ 71* Java ME: http://swingme.sourceforge.net/encode.shtml 72* Javascript: https://code.google.com/p/protobuf-js/ 73* Javascript: http://github.com/sirikata/protojs 74* Javascript: https://github.com/dcodeIO/ProtoBuf.js 75* Javascript: https://code.google.com/p/protobuf-for-node/ 76* Javascript: https://code.google.com/p/protostuff/ 77* Javascript: https://github.com/seishun/node-protoc-plugin (Node.js port of 78 plugin.h) 79* Javascript: https://github.com/seishun/node-protoc-gen-javascript (Node.js 80 port of the Google-official implementation) 81* Javascript: https://github.com/ButterCam/sisyphus-js 82* Julia: https://github.com/JuliaIO/ProtoBuf.jl 83* Kotlin: https://github.com/marcoferrer/kroto-plus 84* Kotlin: https://github.com/Kotlin/kotlinx.serialization 85* Kotlin: https://github.com/ButterCam/sisyphus 86* Kotlin: https://github.com/open-toast/protokt 87* Kotlin Multiplatform: https://github.com/streem/pbandk 88* Lua: https://code.google.com/p/protoc-gen-lua/ 89* Lua: http://github.com/indygreg/lua-protobuf 90* Lua: https://github.com/Neopallium/lua-pb 91* Matlab: https://code.google.com/p/protobuf-matlab/ 92* Mercury: https://code.google.com/p/protobuf-mercury/ 93* Objective C: https://code.google.com/p/protobuf-objc/ 94* Objective C: https://github.com/alexeyxo/protobuf-objc 95* OCaml: http://piqi.org/ 96* Perl: http://groups.google.com/group/protobuf-perl 97* Perl: https://metacpan.org/pod/Google::ProtocolBuffers 98* Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic 99* Perl/XS: https://code.google.com/p/protobuf-perlxs/ 100* PHP: https://code.google.com/p/pb4php/ 101* PHP: https://github.com/allegro/php-protobuf/ 102* PHP: https://github.com/chobie/php-protocolbuffers 103* Protobuf: https://github.com/mycroftjr/protoc-gen-proto 104* Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html 105* Purescript: https://github.com/xc-jp/purescript-protobuf 106* Python: https://github.com/protocolbuffers/protobuf (Google-official 107 implementation) 108* Python: https://github.com/eigenein/protobuf 109* Python: https://github.com/danielgtaylor/python-betterproto 110* R: http://cran.r-project.org/package=RProtoBuf 111* Ruby: https://code.google.com/p/ruby-protobuf/ 112* Ruby: http://github.com/mozy/ruby-protocol-buffers 113* Ruby: https://github.com/bmizerany/beefcake/tree/master/lib/beefcake 114* Ruby: https://github.com/localshred/protobuf 115* Rust: https://github.com/tokio-rs/prost 116* Rust: https://github.com/stepancheg/rust-protobuf/ 117* Rust: https://github.com/tafia/quick-protobuf 118* Scala: http://github.com/jeffplaisance/scala-protobuf 119* Scala: https://code.google.com/p/protobuf-scala 120* Scala: https://github.com/SandroGrzicic/ScalaBuff 121* Scala: https://scalapb.github.io 122* Solidity: https://github.com/celer-network/pb3-gen-sol 123* Swift: https://github.com/alexeyxo/protobuf-swift 124* Swift: https://github.com/apple/swift-protobuf/ 125* Typescript: https://github.com/thesayyn/protoc-gen-ts 126* Typescript: https://github.com/pbkit/pbkit 127* Vala: https://launchpad.net/protobuf-vala 128* Visual Basic: https://code.google.com/p/protobuf-net/ 129* Zig: https://github.com/Arwalk/zig-protobuf 130 131## RPC Implementations 132 133GRPC (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. 134 135* https://github.com/grpc/grpc (C++, Node.js, Python, Ruby, Objective-C, PHP, 136 C#, Google-official implementation) 137* https://zeroc.com/products/ice (Multiple languages) 138* https://github.com/protobuf-net/protobuf-net (C#/.NET/WCF/VB) 139* http://www.deltavsoft.com/doc/_external_serialization.html#Protobufs (C++) 140* https://protojure.github.io (Clojure) 141* https://code.google.com/p/protobuf-rpc-pro/ (Java) 142* https://github.com/baidu/sofa-pbrpc (C++) 143* https://github.com/madhon/protobuf-csharp-rpc (C#) 144* https://github.com/madwyn/libpbrpc (C++) 145* https://github.com/SeriousMa/grpc-protobuf-validation (Java) 146* https://github.com/elixir-grpc/grpc (Elixir) 147* https://github.com/johanbrandhorst/protobuf (GopherJS) 148* https://github.com/awakesecurity/gRPC-haskell (Haskell) 149* https://github.com/Yeolar/raster (C++) 150* https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser) 151* https://github.com/pbkit/npm-packages/blob/main/frpc-test/src/index.spec.ts 152 (TypeScript Node.js/Browser) 153* https://github.com/ppissias/xsrpcj (Java) 154* https://github.com/twitchtv/twirp (Multiple languages) 155* https://github.com/icerpc/icerpc-csharp (C#) 156* https://philips-software.github.io/amp-embedded-infra-lib (C++, C#, Java) 157 158Inactive: 159 160* https://launchpad.net/txprotobuf/ (Python) 161* https://github.com/modeswitch/protobuf-rpc (Python) 162* https://github.com/sdeo/protobuf-socket-rpc (Java, Python) 163* https://code.google.com/p/proto-streamer/ (Java) 164* https://code.google.com/p/server1/ (C++) 165* https://code.google.com/p/protobuf-mina-rpc/ (Python client, Java server) 166* https://code.google.com/p/casocklib/ (C++) 167* https://code.google.com/p/cxf-protobuf/ (Java) 168* https://code.google.com/p/protobuf-remote/ (C++/C#) 169* https://code.google.com/p/eneter-protobuf-serializer/ (Java/.NET) 170* https://github.com/robbinfan/claire/tree/master/protorpc (C++) 171* https://github.com/ebencheung/arab (C++) 172* https://code.google.com/p/protobuf-csharp-rpc/ (C#) 173* https://github.com/thesamet/rpcz (C++/Python, based on ZeroMQ) 174* https://github.com/w359405949/libmaid (C++, Python) 175 176## Build 177 178* [Bazel Build](https://bazel.build) 179 * [rules_closure](https://github.com/bazelbuild/rules_closure) 180 `js-closure` 181 * [rules_go](https://github.com/bazelbuild/rules_go) `go` 182 * [rules_protobuf](https://github.com/pubref/rules_protobuf) `java` `c++` 183 `c#` `go` `js-closure` `js-node` `python` `ruby` 184* Maven Protobuf Compiler Plugin 185 * By xolstice.org 186 ([Documentation](https://www.xolstice.org/protobuf-maven-plugin/)) 187 ([Source](https://github.com/xolstice/protobuf-maven-plugin/)) 188 [](https://repo1.maven.org/maven2/org/xolstice/maven/plugins/protobuf-maven-plugin/) 189 * https://code.google.com/p/maven-protoc-plugin/ 190 * https://github.com/os72/protoc-jar-maven-plugin 191 * https://ascopes.github.io/protobuf-maven-plugin 192* [Protobuf Plugin for Gradle](https://github.com/google/protobuf-gradle-plugin) 193* [Sbt plugin for Protocol Buffers](https://github.com/Atry/sbt-cppp) 194 195## IDE 196 197* [Visual Studio Code Support for Protocol Buffers](https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3) 198* [Visual Studio Language Service support for Protocol Buffers](http://visualstudiogallery.msdn.microsoft.com/4bc0f38c-b058-4e05-ae38-155e053c19c5) 199* [IntelliJ IDEA plugin](http://github.com/jvolkman/intellij-protobuf-editor) 200* [IntelliJ Protobuf Plugin](https://github.com/devkanro/intellij-protobuf-plugin) 201* [TextMate syntax highlighting](http://github.com/michaeledgar/protobuf-tmbundle) 202* [Notepad++ Syntax Highlighting for .proto files](https://github.com/chai2010/notepadplus-protobuf) 203* [Eclipse editor for protobuf (from Google)](https://code.google.com/p/protobuf-dt/) 204* [NetBeans IDE plugin](https://code.google.com/p/protobuf-netbeans-plugin/) 205* [Editor for serialized protobufs](https://code.google.com/p/protobufeditor/) 206 207## Documentation 208 209* [Documentation generator plugin (Markdown/HTML/DocBook/...)](https://github.com/pseudomuto/protoc-gen-doc) 210* [DocBook generator for .proto files](https://code.google.com/p/protoc-gen-docbook/) 211 212## Other Utilities 213 214There are miscellaneous other things you may find useful as a Protocol Buffers developer. 215 216* [Wireshark/Ethereal packet sniffer plugin](https://code.google.com/p/protobuf-wireshark/) 217* [Alternate encodings (JSON, XML, HTML) for Java protobufs](https://code.google.com/p/protobuf-java-format/) 218* [Another JSON encoder/decoder for Java](https://github.com/sijuv/protobuf-codec) 219* [Oracle PL SQL plugin](https://code.google.com/p/protocol-buffer-plsql/) 220* [C++ Builder compatible protobuf](https://github.com/saadware/protobuf-cppbuilder) 221* [Protobuf for nginx module](https://github.com/dbcode/protobuf-nginx/) 222* [RSpec matchers and Cucumber step defs for testing Protocol Buffers](https://github.com/connamara/protobuf_spec) 223* [Multi-platform executable JAR and Java API for protoc](https://github.com/os72/protoc-jar) 224* [Python scripts to convert between Protocol Buffers and JSON](https://github.com/NextTuesday/py-pb-converters) 225* [C++ library for serialization/de-serialization between Protocol Buffers and 226 JSON.](https://github.com/yinqiwen/pbjson) 227* [ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser 228 and Builder.](https://github.com/protobufel/protobuf-el) 229* [Linter for .proto files](https://github.com/ckaznocha/protoc-gen-lint) 230* [Protocol Buffers Dynamic Schema - create protobuf schemas programmatically 231 (Java)](https://github.com/os72/protobuf-dynamic) 232* [Make protoc plugins in NodeJS](https://github.com/konsumer/node-protoc-plugin) 233* [ProfaneDB - A Protocol Buffers database](https://profanedb.gitlab.io) 234* [Protocol Buffer property-based testing utility and example message 235 generator (Python / 236 Hypothesis)](https://github.com/CurataEng/hypothesis-protobuf) 237* [Protolock - CLI utility to prevent backward-incompatible changes to .proto 238 files](https://github.com/nilslice/protolock) 239* [Optional GRPC - GRPC for testable microservices (Python)](https://github.com/mattpaletta/optional-grpc.git) 240* [Protobuf Parser - Yet another Go package which parses a Protocol Buffer 241 file (proto2+proto3)](https://github.com/yoheimuta/go-protoparser) 242* [Protolint - A tool to enforce Protocol Buffer style and conventions.](https://github.com/yoheimuta/protolint) 243 * [vscode-protolint: A protobuf linter for visual studio code](https://github.com/plexsystems/vscode-protolint) 244 * [intellij-protolint: A protobuf linter for JetBrains IDEs](https://github.com/yoheimuta/intellij-protolint) 245 * [vim-protolint: A protobuf linter for Vim](https://github.com/yoheimuta/vim-protolint) 246* [super-linter: Protocol Buffer lint as GitHub Action](https://github.com/github/super-linter) 247* [protoc-gen-fieldmask - A plugin to generate static type fieldmask paths](https://github.com/idodod/protoc-gen-fieldmask) 248* [protoc-gen-bq-schema - A protoc plugin to generate BigQuery schema files](https://github.com/GoogleCloudPlatform/protoc-gen-bq-schema) 249* [protobuf-decoder-explainer - Web page which decodes and explains pasted 250 binary Protocol 251 Buffers](https://github.com/jamesdbrock/protobuf-decoder-explainer) 252* [rubberbuf - dynamically transpile protobuf into AST](https://github.com/s-expresso/rubberbuf) 253 `clojure` `clojurescript` 254* [clojobuf-serdes - low level serialize/deserialize library for protobuf 255 binary format](https://github.com/s-expresso/clojobuf-codec) `clojure` 256 `clojurescript` 257* [gRPC Federation - generates a gRPC server by writing a custom option in 258 Protocol Buffers](https://github.com/mercari/grpc-federation) 259