1Protocol Buffers - Google's data interchange format 2=================================================== 3 4[](https://securityscorecards.dev/viewer/?uri=github.com/protocolbuffers/protobuf) 5 6Copyright 2023 Google LLC 7 8Overview 9-------- 10 11Protocol Buffers (a.k.a., protobuf) are Google's language-neutral, 12platform-neutral, extensible mechanism for serializing structured data. You 13can learn more about it in [protobuf's documentation](https://protobuf.dev). 14 15This README file contains protobuf installation instructions. To install 16protobuf, you need to install the protocol compiler (used to compile .proto 17files) and the protobuf runtime for your chosen programming language. 18 19Working With Protobuf Source Code 20--------------------------------- 21 22Most users will find working from 23[supported releases](https://github.com/protocolbuffers/protobuf/releases) to be 24the easiest path. 25 26If you choose to work from the head revision of the main branch your build will 27occasionally be broken by source-incompatible changes and insufficiently-tested 28(and therefore broken) behavior. 29 30If you are using C++ or otherwise need to build protobuf from source as a part 31of your project, you should pin to a release commit on a release branch. 32 33This is because even release branches can experience some instability in between 34release commits. 35 36Protobuf Compiler Installation 37------------------------------ 38 39The protobuf compiler is written in C++. If you are using C++, please follow 40the [C++ Installation Instructions](src/README.md) to install protoc along 41with the C++ runtime. 42 43For non-C++ users, the simplest way to install the protocol compiler is to 44download a pre-built binary from our [GitHub release page](https://github.com/protocolbuffers/protobuf/releases). 45 46In the downloads section of each release, you can find pre-built binaries in 47zip packages: `protoc-$VERSION-$PLATFORM.zip`. It contains the protoc binary 48as well as a set of standard `.proto` files distributed along with protobuf. 49 50If you are looking for an old version that is not available in the release 51page, check out the [Maven repository](https://repo1.maven.org/maven2/com/google/protobuf/protoc/). 52 53These pre-built binaries are only provided for released versions. If you want 54to use the github main version at HEAD, or you need to modify protobuf code, 55or you are using C++, it's recommended to build your own protoc binary from 56source. 57 58If you would like to build protoc binary from source, see the [C++ Installation Instructions](src/README.md). 59 60Protobuf Runtime Installation 61----------------------------- 62 63Protobuf supports several different programming languages. For each programming 64language, you can find instructions in the corresponding source directory about 65how to install protobuf runtime for that specific language: 66 67| Language | Source | 68|--------------------------------------|-------------------------------------------------------------| 69| C++ (include C++ runtime and protoc) | [src](src) | 70| Java | [java](java) | 71| Python | [python](python) | 72| Objective-C | [objectivec](objectivec) | 73| C# | [csharp](csharp) | 74| Ruby | [ruby](ruby) | 75| Go | [protocolbuffers/protobuf-go](https://github.com/protocolbuffers/protobuf-go)| 76| PHP | [php](php) | 77| Dart | [dart-lang/protobuf](https://github.com/dart-lang/protobuf) | 78| JavaScript | [protocolbuffers/protobuf-javascript](https://github.com/protocolbuffers/protobuf-javascript)| 79 80Quick Start 81----------- 82 83The best way to learn how to use protobuf is to follow the [tutorials in our 84developer guide](https://protobuf.dev/getting-started). 85 86If you want to learn from code examples, take a look at the examples in the 87[examples](examples) directory. 88 89Documentation 90------------- 91 92The complete documentation is available at the [Protocol Buffers doc site](https://protobuf.dev). 93 94Support Policy 95-------------- 96 97Read about our [version support policy](https://protobuf.dev/version-support/) 98to stay current on support timeframes for the language libraries. 99 100Developer Community 101------------------- 102 103To be alerted to upcoming changes in Protocol Buffers and connect with protobuf developers and users, 104[join the Google Group](https://groups.google.com/g/protobuf). 105