blob: 40753271b2c294508551b337ec6374e9e058ded5 [file] [log] [blame] [view]
Feng Xiao8052dc72016-04-19 15:29:18 -07001# 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
Eric Zhong46296592016-05-30 19:41:47 +080013* Action Script: https://github.com/zhongfq/protobuf-as3/
Maxim Reznikb4cddb72021-03-16 18:44:23 +020014* Ada: https://github.com/reznikmm/protobuf
Feng Xiao8052dc72016-04-19 15:29:18 -070015* C: https://github.com/protobuf-c/protobuf-c
16* C: http://koti.kapsi.fi/jpa/nanopb/
17* C: https://github.com/cloudwu/pbc/
18* C: https://github.com/haberman/upb/wiki
19* C: https://github.com/squidfunk/protobluff
Erik Moqvistd5fbdb42019-09-11 17:35:36 +020020* C: https://github.com/eerimoq/pbtools
Feng Xiao8052dc72016-04-19 15:29:18 -070021* C++: https://github.com/google/protobuf (Google-official implementation)
Bart Hertog2655a0a2020-05-30 21:47:23 +020022* C++: https://EmbeddedProto.com
Feng Xiao8052dc72016-04-19 15:29:18 -070023* C/C++: http://spbc.sf.net/
24* C#: http://code.google.com/p/protobuf-csharp-port
Feng Xiao8052dc72016-04-19 15:29:18 -070025* C#: https://silentorbit.com/protobuf/
26* C#/.NET/WCF/VB: http://code.google.com/p/protobuf-net/
27* Clojure: http://github.com/ninjudd/clojure-protobuf
Duncan McGreggor84752ff2018-07-12 17:01:17 -050028* Clojure: https://github.com/clojusc/protobuf
Gregory Haskins5102df22019-09-03 19:29:53 -040029* Clojure: https://protojure.github.io
Feng Xiao8052dc72016-04-19 15:29:18 -070030* Common Lisp: http://github.com/brown/protobuf
Jon Godbout8e093962020-07-27 13:01:17 -040031* Common Lisp: http://github.com/qitab/cl-protobuf
Dragos Carpceaf0122018-06-02 10:56:12 +020032* D: https://github.com/dcarp/protobuf-d
Feng Xiao8052dc72016-04-19 15:29:18 -070033* D: https://github.com/msoucy/dproto
Feng Xiao8052dc72016-04-19 15:29:18 -070034* D: https://github.com/opticron/ProtocolBuffer
35* Dart: https://github.com/dart-lang/dart-protobuf (runtime) https://github.com/dart-lang/dart-protoc-plugin (code generator)
36* Delphi: http://sourceforge.net/projects/protobuf-delphi/
37* Delphi: http://fundementals.sourceforge.net/dl.html
38* Elixir: https://github.com/jeremyong/exprotoc
Bing Han2fb74792017-08-23 00:03:01 +080039* Elixir: https://github.com/tony612/protobuf-elixir
Alexandre Hamez2676f4d2020-06-13 12:56:28 +020040* Elixir: https://github.com/ahamez/protox
Tiziano Santoro30250cd2016-12-28 01:02:12 +000041* Elm: https://github.com/tiziano88/elm-protobuf
Tomas Abrahamsson4d04fcd2016-08-25 15:11:45 +020042* Erlang: https://github.com/tomas-abrahamsson/gpb
Kenneth Lundin6d2b3c42018-10-10 16:33:24 +020043* Erlang: http://piqi.org/
44* Erlang: https://github.com/basho/erlang_protobuffs (no longer maintained, use gpb instead)
Cy9c1c94f2019-02-11 18:08:08 -080045* Hacklang/HHVM: https://github.com/y3llowcake/proto-hack
Oleg Malyavkinc95d02f2018-02-13 08:16:17 +050046* GDScript: https://github.com/oniksan/godobuf (Godot v3 engine plugin)
Feng Xiao8052dc72016-04-19 15:29:18 -070047* Go: https://github.com/golang/protobuf (Google-official implementation)
Feng Xiao8052dc72016-04-19 15:29:18 -070048* Go: https://github.com/akunspy/gopbuf
Changjian Gaof85eecb2017-04-20 19:53:11 +080049* Go: https://github.com/gogo/protobuf
Johan Brandhorstfc7a6a22017-10-02 21:48:34 +010050* GopherJS: https://github.com/johanbrandhorst/protobuf
Feng Xiao8052dc72016-04-19 15:29:18 -070051* Haskell: http://hackage.haskell.org/package/hprotoc
Zearen Woverd2a5f8b2017-10-09 14:39:06 -040052* Haskell: https://github.com/google/proto-lens (Google-unofficial implementation)
Matt Chan72337d62018-01-24 23:52:04 -080053* Haskell: https://github.com/awakesecurity/proto3-suite (code generator) https://github.com/awakesecurity/proto3-wire (binary serializer/deserializer)
Feng Xiao8052dc72016-04-19 15:29:18 -070054* Haxe: https://github.com/Atry/protoc-gen-haxe
55* Java: https://github.com/google/protobuf (Google-official implementation)
56* Java/Android: https://github.com/square/wire
Florian Enner22206702019-11-21 00:06:22 +010057* Java: https://github.com/HebiRobotics/QuickBuffers/
Feng Xiao8052dc72016-04-19 15:29:18 -070058* Java ME: http://code.google.com/p/protobuf-javame/
59* Java ME: http://swingme.sourceforge.net/encode.shtml
Feng Xiao8052dc72016-04-19 15:29:18 -070060* Java ME: http://code.google.com/p/protobuf-j2me/
61* Javascript: http://code.google.com/p/protobuf-js/
62* Javascript: http://github.com/sirikata/protojs
63* Javascript: https://github.com/dcodeIO/ProtoBuf.js
64* Javascript: http://code.google.com/p/protobuf-for-node/
65* Javascript: http://code.google.com/p/protostuff/
Nikolai Vavilov6b733712020-08-07 14:20:46 +030066* Javascript: https://github.com/seishun/node-protoc-plugin (Node.js port of plugin.h)
67* Javascript: https://github.com/seishun/node-protoc-gen-javascript (Node.js port of the Google-official implementation)
Kanro3f5fc4d2021-04-15 06:01:46 +080068* Javascript: https://github.com/ButterCam/sisyphus-js
Feng Xiao8052dc72016-04-19 15:29:18 -070069* Julia: https://github.com/tanmaykm/ProtoBuf.jl
Marco Ferrer580f5852019-09-11 16:24:53 -040070* Kotlin: https://github.com/marcoferrer/kroto-plus
Niklas Lochschmidt69b1fdc2018-01-30 13:58:56 +010071* Kotlin: https://github.com/Kotlin/kotlinx.serialization
Kanro3f5fc4d2021-04-15 06:01:46 +080072* Kotlin: https://github.com/ButterCam/sisyphus
Feng Xiao8052dc72016-04-19 15:29:18 -070073* Lua: http://code.google.com/p/protoc-gen-lua/
74* Lua: http://github.com/indygreg/lua-protobuf
75* Lua: https://github.com/Neopallium/lua-pb
76* Matlab: http://code.google.com/p/protobuf-matlab/
77* Mercury: http://code.google.com/p/protobuf-mercury/
78* Objective C: http://code.google.com/p/protobuf-objc/
79* Objective C: https://github.com/alexeyxo/protobuf-objc
80* OCaml: http://piqi.org/
81* Perl: http://groups.google.com/group/protobuf-perl
82* Perl: http://search.cpan.org/perldoc?Google::ProtocolBuffers
Mattia Barbon297ec742016-07-09 15:59:38 +020083* Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic
Feng Xiao8052dc72016-04-19 15:29:18 -070084* Perl/XS: http://code.google.com/p/protobuf-perlxs/
85* PHP: http://code.google.com/p/pb4php/
86* PHP: https://github.com/allegro/php-protobuf/
87* PHP: https://github.com/chobie/php-protocolbuffers
88* PHP: http://drslump.github.com/Protobuf-PHP
89* Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html
James Brockc2d089e2020-09-18 00:34:49 +090090* Purescript: https://github.com/xc-jp/purescript-protobuf
Feng Xiao8052dc72016-04-19 15:29:18 -070091* Python: https://github.com/google/protobuf (Google-official implementation)
Pavel Perestoronine9faff82019-03-26 21:31:12 +010092* Python: https://github.com/eigenein/protobuf
Daniel G. Taylor97f5f642020-04-15 22:00:28 -070093* Python: https://github.com/danielgtaylor/python-betterproto
Feng Xiao8052dc72016-04-19 15:29:18 -070094* R: http://cran.r-project.org/package=RProtoBuf
95* Ruby: http://code.google.com/p/ruby-protobuf/
96* Ruby: http://github.com/mozy/ruby-protocol-buffers
97* Ruby: https://github.com/bmizerany/beefcake/tree/master/lib/beefcake
98* Ruby: https://github.com/localshred/protobuf
99* Rust: https://github.com/stepancheg/rust-protobuf/
100* Scala: http://github.com/jeffplaisance/scala-protobuf
101* Scala: http://code.google.com/p/protobuf-scala
102* Scala: https://github.com/SandroGrzicic/ScalaBuff
xuwei-k4b01a062018-01-24 09:42:37 +0900103* Scala: https://scalapb.github.io
i97181b1c2019-01-16 19:47:12 -0800104* Solidity: https://github.com/celer-network/pb3-gen-sol
Feng Xiao8052dc72016-04-19 15:29:18 -0700105* Swift: https://github.com/alexeyxo/protobuf-swift
Sinziana Gafitanu9819b722016-10-30 19:40:08 -0700106* Swift: https://github.com/apple/swift-protobuf/
Sahin Yort29152fb2021-04-19 20:16:36 +0200107* Typescript: https://github.com/thesayyn/protoc-gen-ts
Feng Xiao8052dc72016-04-19 15:29:18 -0700108* Vala: https://launchpad.net/protobuf-vala
109* Visual Basic: http://code.google.com/p/protobuf-net/
110
111## RPC Implementations
112
113GRPC (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.
114
115* https://github.com/grpc/grpc (C++, Node.js, Python, Ruby, Objective-C, PHP, C#, Google-official implementation)
Maxime Guerreiro158b2692020-01-13 01:25:10 +0000116* https://zeroc.com/products/ice (Multiple languages)
117* https://github.com/protobuf-net/protobuf-net (C#/.NET/WCF/VB)
118* http://www.deltavsoft.com/doc/_external_serialization.html#Protobufs (C++)
Gregory Haskins5102df22019-09-03 19:29:53 -0400119* https://protojure.github.io (Clojure)
Maxime Guerreiro158b2692020-01-13 01:25:10 +0000120* https://code.google.com/p/protobuf-rpc-pro/ (Java)
121* https://github.com/baidu/sofa-pbrpc (C++)
122* https://github.com/madhon/protobuf-csharp-rpc (C#)
Feng Xiao8052dc72016-04-19 15:29:18 -0700123* https://github.com/madwyn/libpbrpc (C++)
MaDuo6bd51a52017-07-06 02:31:32 +0800124* https://github.com/SeriousMa/grpc-protobuf-validation (Java)
Maxime Guerreiro158b2692020-01-13 01:25:10 +0000125* https://github.com/elixir-grpc/grpc (Elixir)
Johan Brandhorstfc7a6a22017-10-02 21:48:34 +0100126* https://github.com/johanbrandhorst/protobuf (GopherJS)
Matt Chan72337d62018-01-24 23:52:04 -0800127* https://github.com/awakesecurity/gRPC-haskell (Haskell)
Yeolar35e44302018-04-30 19:56:30 +0800128* https://github.com/Yeolar/raster (C++)
Johan Nordberg584ed222018-06-30 22:18:37 +0200129* https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser)
Petros Pissiasf6a7ca12018-07-30 19:34:57 +0200130* https://github.com/ppissias/xsrpcj (Java)
Feng Xiao8052dc72016-04-19 15:29:18 -0700131
Maxime Guerreiro158b2692020-01-13 01:25:10 +0000132Inactive:
133
134* https://launchpad.net/txprotobuf/ (Python)
135* https://github.com/modeswitch/protobuf-rpc (Python)
136* https://github.com/sdeo/protobuf-socket-rpc (Java, Python)
137* https://code.google.com/p/proto-streamer/ (Java)
138* https://code.google.com/p/server1/ (C++)
139* https://code.google.com/p/protobuf-mina-rpc/ (Python client, Java server)
140* https://code.google.com/p/casocklib/ (C++)
141* https://code.google.com/p/cxf-protobuf/ (Java)
142* https://code.google.com/p/protobuf-remote/ (C++/C#)
143* https://code.google.com/p/eneter-protobuf-serializer/ (Java/.NET)
144* https://github.com/robbinfan/claire/tree/master/protorpc (C++)
145* https://github.com/ebencheung/arab (C++)
146* https://code.google.com/p/protobuf-csharp-rpc/ (C#)
147* https://github.com/thesamet/rpcz (C++/Python, based on ZeroMQ)
148* https://github.com/w359405949/libmaid (C++, Python)
149
Feng Xiao8052dc72016-04-19 15:29:18 -0700150## Other Utilities
151
152There are miscellaneous other things you may find useful as a Protocol Buffers developer.
153
Paul Cody Johnston7b54b342017-02-01 07:16:22 -0700154* [Bazel Build](https://bazel.build)
155 * [rules_closure](https://github.com/bazelbuild/rules_closure) `js-closure`
156 * [rules_go](https://github.com/bazelbuild/rules_go) `go`
157 * [rules_protobuf](https://github.com/pubref/rules_protobuf) `java` `c++` `c#` `go` `js-closure` `js-node` `python` `ruby`
Feng Xiao8052dc72016-04-19 15:29:18 -0700158* [NetBeans IDE plugin](http://code.google.com/p/protobuf-netbeans-plugin/)
159* [Wireshark/Ethereal packet sniffer plugin](http://code.google.com/p/protobuf-wireshark/)
160* [Alternate encodings (JSON, XML, HTML) for Java protobufs](http://code.google.com/p/protobuf-java-format/)
161* [Another JSON encoder/decoder for Java](https://github.com/sijuv/protobuf-codec)
162* [Editor for serialized protobufs](http://code.google.com/p/protobufeditor/)
Jeremy Volkman963ead32020-08-09 20:20:15 -0700163* [IntelliJ IDEA plugin](http://github.com/jvolkman/intellij-protobuf-editor)
Kanro3f5fc4d2021-04-15 06:01:46 +0800164* [IntelliJ Protobuf Plugin](https://github.com/devkanro/intellij-protobuf-plugin)
Feng Xiao8052dc72016-04-19 15:29:18 -0700165* [TextMate syntax highlighting](http://github.com/michaeledgar/protobuf-tmbundle)
166* [Oracle PL SQL plugin](http://code.google.com/p/protocol-buffer-plsql/)
167* [Eclipse editor for protobuf (from Google)](http://code.google.com/p/protobuf-dt/)
168* [C++ Builder compatible protobuf](https://github.com/saadware/protobuf-cppbuilder)
Sergei Ivanov09dc9332016-12-09 00:01:11 +0000169* Maven Protobuf Compiler Plugin
170 * 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/)
Feng Xiao8052dc72016-04-19 15:29:18 -0700171 * http://igor-petruk.github.com/protobuf-maven-plugin/
172 * http://code.google.com/p/maven-protoc-plugin/
173 * https://github.com/os72/protoc-jar-maven-plugin
Arnold Schrijverd640cdd2017-07-21 13:06:04 +0200174* [Documentation generator plugin (Markdown/HTML/DocBook/...)](https://github.com/pseudomuto/protoc-gen-doc)
Feng Xiao8052dc72016-04-19 15:29:18 -0700175* [DocBook generator for .proto files](http://code.google.com/p/protoc-gen-docbook/)
176* [Protobuf for nginx module](https://github.com/dbcode/protobuf-nginx/)
177* [RSpec matchers and Cucumber step defs for testing Protocol Buffers](https://github.com/connamara/protobuf_spec)
178* [Sbt plugin for Protocol Buffers](https://github.com/Atry/sbt-cppp)
179* [Gradle Protobuf Plugin](https://github.com/aantono/gradle-plugin-protobuf)
180* [Multi-platform executable JAR and Java API for protoc](https://github.com/os72/protoc-jar)
181* [Python scripts to convert between Protocol Buffers and JSON](https://github.com/NextTuesday/py-pb-converters)
182* [Visual Studio Language Service support for Protocol Buffers](http://visualstudiogallery.msdn.microsoft.com/4bc0f38c-b058-4e05-ae38-155e053c19c5)
John Standishbac4c8e2018-10-01 12:41:19 -0700183* [Visual Studio Code Support for Protocol Buffers](https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3)
Feng Xiao8052dc72016-04-19 15:29:18 -0700184* [C++ library for serialization/de-serialization between Protocol Buffers and JSON.](https://github.com/yinqiwen/pbjson)
185* [ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser and Builder.](https://github.com/protobufel/protobuf-el)
186* [Notepad++ Syntax Highlighting for .proto files](https://github.com/chai2010/notepadplus-protobuf)
187* [Linter for .proto files](https://github.com/ckaznocha/protoc-gen-lint)
Bruno Kim Medeiros Cesar0d397a12018-02-01 02:08:51 -0200188* [Protocol Buffers Dynamic Schema - create protobuf schemas programmatically (Java)](https://github.com/os72/protobuf-dynamic)
David Konsumer3055a022017-04-18 18:58:21 -0700189* [Make protoc plugins in NodeJS](https://github.com/konsumer/node-protoc-plugin)
Giorgio Azzinnaroa3e17522017-08-04 21:19:36 +0200190* [ProfaneDB - A Protocol Buffers database](https://profanedb.gitlab.io)
H. Chase Stevens3c331432017-11-13 11:30:44 -0500191* [Protocol Buffer property-based testing utility and example message generator (Python / Hypothesis)](https://github.com/CurataEng/hypothesis-protobuf)
Xiang Daie4794102019-02-21 11:28:50 +0800192* [Protolock - CLI utility to prevent backward-incompatible changes to .proto files](https://github.com/nilslice/protolock)
Matthew Paletta5f470c32019-02-24 10:59:15 -0800193* [Optional GRPC - GRPC for testable microservices (Python)](https://github.com/mattpaletta/optional-grpc.git)
yohei yoshimuta36d39a02020-08-06 06:40:51 +0900194* [Protobuf Parser - Yet another Go package which parses a Protocol Buffer file (proto2+proto3)](https://github.com/yoheimuta/go-protoparser)
195* [Protolint - A tool to enforce Protocol Buffer style and conventions.](https://github.com/yoheimuta/protolint)
196 * [vscode-protolint: A protobuf linter for visual studio code](https://github.com/plexsystems/vscode-protolint)
197 * [intellij-protolint: A protobuf linter for JetBrains IDEs](https://github.com/yoheimuta/intellij-protolint)
198 * [vim-protolint: A protobuf linter for Vim](https://github.com/yoheimuta/vim-protolint)
199* [super-linter: Protocol Buffer lint as GitHub Action](https://github.com/github/super-linter)