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 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
Action Script: https://github.com/zhongfq/protobuf-as3/
Ada: https://github.com/reznikmm/protobuf
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
C: https://github.com/eerimoq/pbtools
C++: https://github.com/google/protobuf (Google-official implementation)
C++: https://EmbeddedProto.com
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
Clojure: https://github.com/clojusc/protobuf
Clojure: https://protojure.github.io
Common Lisp: http://github.com/brown/protobuf
Common Lisp: http://github.com/qitab/cl-protobuf
D: https://github.com/dcarp/protobuf-d
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
Elixir: https://github.com/tony612/protobuf-elixir
Elixir: https://github.com/ahamez/protox
Elm: https://github.com/tiziano88/elm-protobuf
Erlang: https://github.com/tomas-abrahamsson/gpb
Erlang: http://piqi.org/
Erlang: https://github.com/basho/erlang_protobuffs (no longer maintained, use gpb instead)
Hacklang/HHVM: https://github.com/y3llowcake/proto-hack
GDScript: https://github.com/oniksan/godobuf (Godot v3 engine plugin)
Go: https://github.com/golang/protobuf (Google-official implementation)
Go: https://github.com/akunspy/gopbuf
Go: https://github.com/gogo/protobuf
GopherJS: https://github.com/johanbrandhorst/protobuf
Haskell: http://hackage.haskell.org/package/hprotoc
Haskell: https://github.com/google/proto-lens (Google-unofficial implementation)
Haskell: https://github.com/awakesecurity/proto3-suite (code generator) https://github.com/awakesecurity/proto3-wire (binary serializer/deserializer)
Haxe: https://github.com/Atry/protoc-gen-haxe
Java: https://github.com/google/protobuf (Google-official implementation)
Java/Android: https://github.com/square/wire
Java: https://github.com/HebiRobotics/QuickBuffers/
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/
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)
Javascript: https://github.com/ButterCam/sisyphus-js
Julia: https://github.com/tanmaykm/ProtoBuf.jl
Kotlin: https://github.com/marcoferrer/kroto-plus
Kotlin: https://github.com/Kotlin/kotlinx.serialization
Kotlin: https://github.com/ButterCam/sisyphus
Kotlin: https://github.com/open-toast/protokt
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
Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic
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
Purescript: https://github.com/xc-jp/purescript-protobuf
Python: https://github.com/google/protobuf (Google-official implementation)
Python: https://github.com/eigenein/protobuf
Python: https://github.com/danielgtaylor/python-betterproto
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/tokio-rs/prost
Rust: https://github.com/stepancheg/rust-protobuf/
Rust: https://github.com/tafia/quick-protobuf
Scala: http://github.com/jeffplaisance/scala-protobuf
Scala: http://code.google.com/p/protobuf-scala
Scala: https://github.com/SandroGrzicic/ScalaBuff
Scala: https://scalapb.github.io
Solidity: https://github.com/celer-network/pb3-gen-sol
Swift: https://github.com/alexeyxo/protobuf-swift
Swift: https://github.com/apple/swift-protobuf/
Typescript: https://github.com/thesayyn/protoc-gen-ts
Typescript: https://github.com/pbkit/pbkit
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)
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++)
https://protojure.github.io (Clojure)
https://code.google.com/p/protobuf-rpc-pro/ (Java)
https://github.com/baidu/sofa-pbrpc (C++)
https://github.com/madhon/protobuf-csharp-rpc (C#)
https://github.com/madwyn/libpbrpc (C++)
https://github.com/SeriousMa/grpc-protobuf-validation (Java)
https://github.com/elixir-grpc/grpc (Elixir)
https://github.com/johanbrandhorst/protobuf (GopherJS)
https://github.com/awakesecurity/gRPC-haskell (Haskell)
https://github.com/Yeolar/raster (C++)
https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser)
https://github.com/pbkit/npm-packages/blob/main/frpc-test/src/index.spec.ts (TypeScript Node.js/Browser)
https://github.com/ppissias/xsrpcj (Java)
https://github.com/twitchtv/twirp (Multiple languages)
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)
Other Utilities¶
There are miscellaneous other things you may find useful as a Protocol Buffers developer.
-
rules_closure
js-closure
rules_go
go
rules_protobuf
java
c++
c#
go
js-closure
js-node
python
ruby
Maven Protobuf Compiler Plugin
By xolstice.org (Documentation) (Source)
http://igor-petruk.github.com/protobuf-maven-plugin/
http://code.google.com/p/maven-protoc-plugin/
https://github.com/os72/protoc-jar-maven-plugin
RSpec matchers and Cucumber step defs for testing Protocol Buffers
C++ library for serialization/de-serialization between Protocol Buffers and JSON.
ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser and Builder.
Protocol Buffers Dynamic Schema - create protobuf schemas programmatically (Java)
Protocol Buffer property-based testing utility and example message generator (Python / Hypothesis)
Protolock - CLI utility to prevent backward-incompatible changes to .proto files
Protobuf Parser - Yet another Go package which parses a Protocol Buffer file (proto2+proto3)
Protolint - A tool to enforce Protocol Buffer style and conventions.