• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Protocol Buffers - Google's data interchange format
2===================================================
3
4[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/protocolbuffers/protobuf/badge)](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