2016-04-19 22:29:18 +00:00
# Third-Party Add-ons for Protocol Buffers
This 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.
If 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.
## Programming Languages
These are projects we know about implementing Protocol Buffers for other programming languages:
* Action Script: http://code.google.com/p/protobuf-actionscript3/
* Action Script: https://code.google.com/p/protoc-gen-as3/
* Action Script: https://github.com/matrix3d/JProtoc
2016-05-30 11:41:47 +00:00
* Action Script: https://github.com/zhongfq/protobuf-as3/
2021-03-16 16:44:23 +00:00
* Ada: https://github.com/reznikmm/protobuf
2016-04-19 22:29:18 +00:00
* C: https://github.com/protobuf-c/protobuf-c
* C: http://koti.kapsi.fi/jpa/nanopb/
* C: https://github.com/cloudwu/pbc/
* C: https://github.com/haberman/upb/wiki
* C: https://github.com/squidfunk/protobluff
2019-09-11 15:35:36 +00:00
* C: https://github.com/eerimoq/pbtools
2016-04-19 22:29:18 +00:00
* C++: https://github.com/google/protobuf (Google-official implementation)
2020-05-30 19:47:23 +00:00
* C++: https://EmbeddedProto.com
2016-04-19 22:29:18 +00:00
* C/C++: http://spbc.sf.net/
* C#: http://code.google.com/p/protobuf-csharp-port
* C#: https://silentorbit.com/protobuf/
* C#/.NET/WCF/VB: http://code.google.com/p/protobuf-net/
* Clojure: http://github.com/ninjudd/clojure-protobuf
2018-07-12 22:01:17 +00:00
* Clojure: https://github.com/clojusc/protobuf
2019-09-03 23:29:53 +00:00
* Clojure: https://protojure.github.io
2016-04-19 22:29:18 +00:00
* Common Lisp: http://github.com/brown/protobuf
2020-07-27 17:01:17 +00:00
* Common Lisp: http://github.com/qitab/cl-protobuf
2018-06-02 08:56:12 +00:00
* D: https://github.com/dcarp/protobuf-d
2016-04-19 22:29:18 +00:00
* D: https://github.com/msoucy/dproto
* D: https://github.com/opticron/ProtocolBuffer
* Dart: https://github.com/dart-lang/dart-protobuf (runtime) https://github.com/dart-lang/dart-protoc-plugin (code generator)
* Delphi: http://sourceforge.net/projects/protobuf-delphi/
* Delphi: http://fundementals.sourceforge.net/dl.html
* Elixir: https://github.com/jeremyong/exprotoc
2017-08-22 16:03:01 +00:00
* Elixir: https://github.com/tony612/protobuf-elixir
2020-06-13 10:56:28 +00:00
* Elixir: https://github.com/ahamez/protox
2016-12-28 01:02:12 +00:00
* Elm: https://github.com/tiziano88/elm-protobuf
2016-08-25 13:11:45 +00:00
* Erlang: https://github.com/tomas-abrahamsson/gpb
2018-10-10 14:33:24 +00:00
* Erlang: http://piqi.org/
* Erlang: https://github.com/basho/erlang_protobuffs (no longer maintained, use gpb instead)
2019-02-12 02:08:08 +00:00
* Hacklang/HHVM: https://github.com/y3llowcake/proto-hack
2018-02-13 03:16:17 +00:00
* GDScript: https://github.com/oniksan/godobuf (Godot v3 engine plugin)
2016-04-19 22:29:18 +00:00
* Go: https://github.com/golang/protobuf (Google-official implementation)
* Go: https://github.com/akunspy/gopbuf
2017-04-20 11:53:11 +00:00
* Go: https://github.com/gogo/protobuf
2017-10-02 20:48:34 +00:00
* GopherJS: https://github.com/johanbrandhorst/protobuf
2016-04-19 22:29:18 +00:00
* Haskell: http://hackage.haskell.org/package/hprotoc
2017-10-09 18:39:06 +00:00
* Haskell: https://github.com/google/proto-lens (Google-unofficial implementation)
2018-01-25 07:52:04 +00:00
* Haskell: https://github.com/awakesecurity/proto3-suite (code generator) https://github.com/awakesecurity/proto3-wire (binary serializer/deserializer)
2016-04-19 22:29:18 +00:00
* Haxe: https://github.com/Atry/protoc-gen-haxe
* Java: https://github.com/google/protobuf (Google-official implementation)
* Java/Android: https://github.com/square/wire
2019-11-20 23:06:22 +00:00
* Java: https://github.com/HebiRobotics/QuickBuffers/
2016-04-19 22:29:18 +00:00
* Java ME: http://code.google.com/p/protobuf-javame/
* Java ME: http://swingme.sourceforge.net/encode.shtml
* Java ME: http://code.google.com/p/protobuf-j2me/
* Javascript: http://code.google.com/p/protobuf-js/
* Javascript: http://github.com/sirikata/protojs
* Javascript: https://github.com/dcodeIO/ProtoBuf.js
* Javascript: http://code.google.com/p/protobuf-for-node/
* Javascript: http://code.google.com/p/protostuff/
2020-08-07 11:20:46 +00:00
* Javascript: https://github.com/seishun/node-protoc-plugin (Node.js port of plugin.h)
* Javascript: https://github.com/seishun/node-protoc-gen-javascript (Node.js port of the Google-official implementation)
2021-04-14 22:01:46 +00:00
* Javascript: https://github.com/ButterCam/sisyphus-js
2016-04-19 22:29:18 +00:00
* Julia: https://github.com/tanmaykm/ProtoBuf.jl
2019-09-11 20:24:53 +00:00
* Kotlin: https://github.com/marcoferrer/kroto-plus
2018-01-30 12:58:56 +00:00
* Kotlin: https://github.com/Kotlin/kotlinx.serialization
2021-04-14 22:01:46 +00:00
* Kotlin: https://github.com/ButterCam/sisyphus
2016-04-19 22:29:18 +00:00
* Lua: http://code.google.com/p/protoc-gen-lua/
* Lua: http://github.com/indygreg/lua-protobuf
* Lua: https://github.com/Neopallium/lua-pb
* Matlab: http://code.google.com/p/protobuf-matlab/
* Mercury: http://code.google.com/p/protobuf-mercury/
* Objective C: http://code.google.com/p/protobuf-objc/
* Objective C: https://github.com/alexeyxo/protobuf-objc
* OCaml: http://piqi.org/
* Perl: http://groups.google.com/group/protobuf-perl
* Perl: http://search.cpan.org/perldoc?Google::ProtocolBuffers
2016-07-09 13:59:38 +00:00
* Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic
2016-04-19 22:29:18 +00:00
* Perl/XS: http://code.google.com/p/protobuf-perlxs/
* PHP: http://code.google.com/p/pb4php/
* PHP: https://github.com/allegro/php-protobuf/
* PHP: https://github.com/chobie/php-protocolbuffers
* PHP: http://drslump.github.com/Protobuf-PHP
* Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html
2020-09-17 15:34:49 +00:00
* Purescript: https://github.com/xc-jp/purescript-protobuf
2016-04-19 22:29:18 +00:00
* Python: https://github.com/google/protobuf (Google-official implementation)
2019-03-26 20:31:12 +00:00
* Python: https://github.com/eigenein/protobuf
2020-04-16 05:00:28 +00:00
* Python: https://github.com/danielgtaylor/python-betterproto
2016-04-19 22:29:18 +00:00
* R: http://cran.r-project.org/package=RProtoBuf
* Ruby: http://code.google.com/p/ruby-protobuf/
* Ruby: http://github.com/mozy/ruby-protocol-buffers
* Ruby: https://github.com/bmizerany/beefcake/tree/master/lib/beefcake
* Ruby: https://github.com/localshred/protobuf
* Rust: https://github.com/stepancheg/rust-protobuf/
* Scala: http://github.com/jeffplaisance/scala-protobuf
* Scala: http://code.google.com/p/protobuf-scala
* Scala: https://github.com/SandroGrzicic/ScalaBuff
2018-01-24 00:42:37 +00:00
* Scala: https://scalapb.github.io
2019-01-17 03:47:12 +00:00
* Solidity: https://github.com/celer-network/pb3-gen-sol
2016-04-19 22:29:18 +00:00
* Swift: https://github.com/alexeyxo/protobuf-swift
2016-10-31 02:40:08 +00:00
* Swift: https://github.com/apple/swift-protobuf/
2021-04-19 18:16:36 +00:00
* Typescript: https://github.com/thesayyn/protoc-gen-ts
2016-04-19 22:29:18 +00:00
* Vala: https://launchpad.net/protobuf-vala
* Visual Basic: http://code.google.com/p/protobuf-net/
## RPC Implementations
GRPC (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.
* https://github.com/grpc/grpc (C++, Node.js, Python, Ruby, Objective-C, PHP, C#, Google-official implementation)
2020-01-13 01:25:10 +00:00
* https://zeroc.com/products/ice (Multiple languages)
* https://github.com/protobuf-net/protobuf-net (C#/.NET/WCF/VB)
* http://www.deltavsoft.com/doc/_external_serialization.html#Protobufs (C++)
2019-09-03 23:29:53 +00:00
* https://protojure.github.io (Clojure)
2020-01-13 01:25:10 +00:00
* https://code.google.com/p/protobuf-rpc-pro/ (Java)
* https://github.com/baidu/sofa-pbrpc (C++)
* https://github.com/madhon/protobuf-csharp-rpc (C#)
2016-04-19 22:29:18 +00:00
* https://github.com/madwyn/libpbrpc (C++)
2017-07-05 18:31:32 +00:00
* https://github.com/SeriousMa/grpc-protobuf-validation (Java)
2020-01-13 01:25:10 +00:00
* https://github.com/elixir-grpc/grpc (Elixir)
2017-10-02 20:48:34 +00:00
* https://github.com/johanbrandhorst/protobuf (GopherJS)
2018-01-25 07:52:04 +00:00
* https://github.com/awakesecurity/gRPC-haskell (Haskell)
2018-04-30 11:56:30 +00:00
* https://github.com/Yeolar/raster (C++)
2018-06-30 20:18:37 +00:00
* https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser)
2018-07-30 17:34:57 +00:00
* https://github.com/ppissias/xsrpcj (Java)
2016-04-19 22:29:18 +00:00
2020-01-13 01:25:10 +00:00
Inactive:
* https://launchpad.net/txprotobuf/ (Python)
* https://github.com/modeswitch/protobuf-rpc (Python)
* https://github.com/sdeo/protobuf-socket-rpc (Java, Python)
* https://code.google.com/p/proto-streamer/ (Java)
* https://code.google.com/p/server1/ (C++)
* https://code.google.com/p/protobuf-mina-rpc/ (Python client, Java server)
* https://code.google.com/p/casocklib/ (C++)
* https://code.google.com/p/cxf-protobuf/ (Java)
* https://code.google.com/p/protobuf-remote/ (C++/C#)
* https://code.google.com/p/eneter-protobuf-serializer/ (Java/.NET)
* https://github.com/robbinfan/claire/tree/master/protorpc (C++)
* https://github.com/ebencheung/arab (C++)
* https://code.google.com/p/protobuf-csharp-rpc/ (C#)
* https://github.com/thesamet/rpcz (C++/Python, based on ZeroMQ)
* https://github.com/w359405949/libmaid (C++, Python)
2016-04-19 22:29:18 +00:00
## Other Utilities
There are miscellaneous other things you may find useful as a Protocol Buffers developer.
2017-02-01 14:16:22 +00:00
* [Bazel Build ](https://bazel.build )
* [rules_closure ](https://github.com/bazelbuild/rules_closure ) `js-closure`
* [rules_go ](https://github.com/bazelbuild/rules_go ) `go`
* [rules_protobuf ](https://github.com/pubref/rules_protobuf ) `java` `c++` `c#` `go` `js-closure` `js-node` `python` `ruby`
2016-04-19 22:29:18 +00:00
* [NetBeans IDE plugin ](http://code.google.com/p/protobuf-netbeans-plugin/ )
* [Wireshark/Ethereal packet sniffer plugin ](http://code.google.com/p/protobuf-wireshark/ )
* [Alternate encodings (JSON, XML, HTML) for Java protobufs ](http://code.google.com/p/protobuf-java-format/ )
* [Another JSON encoder/decoder for Java ](https://github.com/sijuv/protobuf-codec )
* [Editor for serialized protobufs ](http://code.google.com/p/protobufeditor/ )
2020-08-10 03:20:15 +00:00
* [IntelliJ IDEA plugin ](http://github.com/jvolkman/intellij-protobuf-editor )
2021-04-14 22:01:46 +00:00
* [IntelliJ Protobuf Plugin ](https://github.com/devkanro/intellij-protobuf-plugin )
2016-04-19 22:29:18 +00:00
* [TextMate syntax highlighting ](http://github.com/michaeledgar/protobuf-tmbundle )
* [Oracle PL SQL plugin ](http://code.google.com/p/protocol-buffer-plsql/ )
* [Eclipse editor for protobuf (from Google) ](http://code.google.com/p/protobuf-dt/ )
* [C++ Builder compatible protobuf ](https://github.com/saadware/protobuf-cppbuilder )
2016-12-09 00:01:11 +00:00
* Maven Protobuf Compiler Plugin
* 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/)
2016-04-19 22:29:18 +00:00
* http://igor-petruk.github.com/protobuf-maven-plugin/
* http://code.google.com/p/maven-protoc-plugin/
* https://github.com/os72/protoc-jar-maven-plugin
2017-07-21 11:06:04 +00:00
* [Documentation generator plugin (Markdown/HTML/DocBook/...) ](https://github.com/pseudomuto/protoc-gen-doc )
2016-04-19 22:29:18 +00:00
* [DocBook generator for .proto files ](http://code.google.com/p/protoc-gen-docbook/ )
* [Protobuf for nginx module ](https://github.com/dbcode/protobuf-nginx/ )
* [RSpec matchers and Cucumber step defs for testing Protocol Buffers ](https://github.com/connamara/protobuf_spec )
* [Sbt plugin for Protocol Buffers ](https://github.com/Atry/sbt-cppp )
* [Gradle Protobuf Plugin ](https://github.com/aantono/gradle-plugin-protobuf )
* [Multi-platform executable JAR and Java API for protoc ](https://github.com/os72/protoc-jar )
* [Python scripts to convert between Protocol Buffers and JSON ](https://github.com/NextTuesday/py-pb-converters )
* [Visual Studio Language Service support for Protocol Buffers ](http://visualstudiogallery.msdn.microsoft.com/4bc0f38c-b058-4e05-ae38-155e053c19c5 )
2018-10-01 19:41:19 +00:00
* [Visual Studio Code Support for Protocol Buffers ](https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3 )
2016-04-19 22:29:18 +00:00
* [C++ library for serialization/de-serialization between Protocol Buffers and JSON. ](https://github.com/yinqiwen/pbjson )
* [ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser and Builder. ](https://github.com/protobufel/protobuf-el )
* [Notepad++ Syntax Highlighting for .proto files ](https://github.com/chai2010/notepadplus-protobuf )
* [Linter for .proto files ](https://github.com/ckaznocha/protoc-gen-lint )
2018-02-01 04:08:51 +00:00
* [Protocol Buffers Dynamic Schema - create protobuf schemas programmatically (Java) ](https://github.com/os72/protobuf-dynamic )
2017-04-19 01:58:21 +00:00
* [Make protoc plugins in NodeJS ](https://github.com/konsumer/node-protoc-plugin )
2017-08-04 19:19:36 +00:00
* [ProfaneDB - A Protocol Buffers database ](https://profanedb.gitlab.io )
2017-11-13 16:30:44 +00:00
* [Protocol Buffer property-based testing utility and example message generator (Python / Hypothesis) ](https://github.com/CurataEng/hypothesis-protobuf )
2019-02-21 03:28:50 +00:00
* [Protolock - CLI utility to prevent backward-incompatible changes to .proto files ](https://github.com/nilslice/protolock )
2019-02-24 18:59:15 +00:00
* [Optional GRPC - GRPC for testable microservices (Python) ](https://github.com/mattpaletta/optional-grpc.git )
2020-08-05 21:40:51 +00:00
* [Protobuf Parser - Yet another Go package which parses a Protocol Buffer file (proto2+proto3) ](https://github.com/yoheimuta/go-protoparser )
* [Protolint - A tool to enforce Protocol Buffer style and conventions. ](https://github.com/yoheimuta/protolint )
* [vscode-protolint: A protobuf linter for visual studio code ](https://github.com/plexsystems/vscode-protolint )
* [intellij-protolint: A protobuf linter for JetBrains IDEs ](https://github.com/yoheimuta/intellij-protolint )
* [vim-protolint: A protobuf linter for Vim ](https://github.com/yoheimuta/vim-protolint )
* [super-linter: Protocol Buffer lint as GitHub Action ](https://github.com/github/super-linter )