15 KiB
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: https://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: https://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/protocolbuffers/protobuf (Google-official implementation)
- C++: https://EmbeddedProto.com
- C++: https://github.com/yksten/struct2x
- C/C++: http://spbc.sf.net/
- C#: https://code.google.com/p/protobuf-csharp-port
- C#: https://silentorbit.com/protobuf/
- C#/.NET/WCF/VB: https://code.google.com/p/protobuf-net/
- Clojure: http://github.com/ninjudd/clojure-protobuf
- Clojure: https://github.com/clojusc/protobuf
- Clojure: https://protojure.readthedocs.io
- Clojure: https://github.com/s-expresso/clojobuf
- ClojureScript: https://github.com/s-expresso/clojobuf
- 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: https://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/protocolbuffers/protobuf (Google-official implementation)
- Java/Android: https://github.com/square/wire
- Java: https://github.com/HebiRobotics/QuickBuffers/
- Java ME: https://code.google.com/p/protobuf-javame/
- Java ME: http://swingme.sourceforge.net/encode.shtml
- Javascript: https://code.google.com/p/protobuf-js/
- Javascript: http://github.com/sirikata/protojs
- Javascript: https://github.com/dcodeIO/ProtoBuf.js
- Javascript: https://code.google.com/p/protobuf-for-node/
- Javascript: https://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/JuliaIO/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
- Kotlin Multiplatform: https://github.com/streem/pbandk
- Lua: https://code.google.com/p/protoc-gen-lua/
- Lua: http://github.com/indygreg/lua-protobuf
- Lua: https://github.com/Neopallium/lua-pb
- Matlab: https://code.google.com/p/protobuf-matlab/
- Mercury: https://code.google.com/p/protobuf-mercury/
- Objective C: https://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: https://metacpan.org/pod/Google::ProtocolBuffers
- Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic
- Perl/XS: https://code.google.com/p/protobuf-perlxs/
- PHP: https://code.google.com/p/pb4php/
- PHP: https://github.com/allegro/php-protobuf/
- PHP: https://github.com/chobie/php-protocolbuffers
- Protobuf: https://github.com/mycroftjr/protoc-gen-proto
- Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html
- Purescript: https://github.com/xc-jp/purescript-protobuf
- Python: https://github.com/protocolbuffers/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: https://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: https://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: https://code.google.com/p/protobuf-net/
- Zig: https://github.com/Arwalk/zig-protobuf
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)
- https://github.com/icerpc/icerpc-csharp (C#)
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)
Build
- Bazel Build
- rules_closure
js-closure
- rules_go
go
- rules_protobuf
java
c++
c#
go
js-closure
js-node
python
ruby
- rules_closure
- Maven Protobuf Compiler Plugin
- Protobuf Plugin for Gradle
- Sbt plugin for Protocol Buffers
IDE
- Visual Studio Code Support for Protocol Buffers
- Visual Studio Language Service support for Protocol Buffers
- IntelliJ IDEA plugin
- IntelliJ Protobuf Plugin
- TextMate syntax highlighting
- Notepad++ Syntax Highlighting for .proto files
- Eclipse editor for protobuf (from Google)
- NetBeans IDE plugin
- Editor for serialized protobufs
Documentation
Other Utilities
There are miscellaneous other things you may find useful as a Protocol Buffers developer.
- Wireshark/Ethereal packet sniffer plugin
- Alternate encodings (JSON, XML, HTML) for Java protobufs
- Another JSON encoder/decoder for Java
- Oracle PL SQL plugin
- C++ Builder compatible protobuf
- Protobuf for nginx module
- RSpec matchers and Cucumber step defs for testing Protocol Buffers
- Multi-platform executable JAR and Java API for protoc
- Python scripts to convert between Protocol Buffers and JSON
- 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.
- Linter for .proto files
- Protocol Buffers Dynamic Schema - create protobuf schemas programmatically (Java)
- Make protoc plugins in NodeJS
- ProfaneDB - A Protocol Buffers database
- Protocol Buffer property-based testing utility and example message generator (Python / Hypothesis)
- Protolock - CLI utility to prevent backward-incompatible changes to .proto files
- Optional GRPC - GRPC for testable microservices (Python)
- Protobuf Parser - Yet another Go package which parses a Protocol Buffer file (proto2+proto3)
- Protolint - A tool to enforce Protocol Buffer style and conventions.
- super-linter: Protocol Buffer lint as GitHub Action
- protoc-gen-fieldmask - A plugin to generate static type fieldmask paths
- protoc-gen-bq-schema - A protoc plugin to generate BigQuery schema files
- protobuf-decoder-explainer - Web page which decodes and explains pasted binary Protocol Buffers
- rubberbuf - dynamically transpile protobuf into AST
clojure
clojurescript
- clojobuf-serdes - low level serialize/deserialize library for protobuf
binary format
clojure
clojurescript
- gRPC Federation - generates a gRPC server by writing a custom option in Protocol Buffers