blob: c84ab2b75a1be9fbfde8bc8b0ae99b33b396c724 [file] [log] [blame] [view]
temporal40ee5512008-07-10 02:12:20 +00001Protocol Buffers - Google's data interchange format
Feng Xiao17007a62014-08-28 14:39:49 -07002===================================================
3
temporal40ee5512008-07-10 02:12:20 +00004Copyright 2008 Google Inc.
Feng Xiao17007a62014-08-28 14:39:49 -07005
Feng Xiaod0e01142016-01-21 17:06:38 -08006Overview
7--------
temporal40ee5512008-07-10 02:12:20 +00008
Feng Xiaod0e01142016-01-21 17:06:38 -08009Protocol Buffers (a.k.a., protobuf) are Google's language-neutral,
10platform-neutral, extensible mechanism for serializing structured data. You
Protobuf Team Bot23d8aac2023-02-09 15:00:37 -080011can learn more about it in [protobuf's documentation](https://protobuf.dev).
Feng Xiao64d86522016-01-06 16:25:35 -080012
Feng Xiaod0e01142016-01-21 17:06:38 -080013This README file contains protobuf installation instructions. To install
14protobuf, you need to install the protocol compiler (used to compile .proto
15files) and the protobuf runtime for your chosen programming language.
Feng Xiao64d86522016-01-06 16:25:35 -080016
Feng Xiaod0e01142016-01-21 17:06:38 -080017Protocol Compiler Installation
18------------------------------
Feng Xiao64d86522016-01-06 16:25:35 -080019
Feng Xiaod0e01142016-01-21 17:06:38 -080020The protocol compiler is written in C++. If you are using C++, please follow
21the [C++ Installation Instructions](src/README.md) to install protoc along
22with the C++ runtime.
Feng Xiao64d86522016-01-06 16:25:35 -080023
Feng Xiaod0e01142016-01-21 17:06:38 -080024For non-C++ users, the simplest way to install the protocol compiler is to
Protobuf Team Bot016ef232022-11-23 13:53:12 -080025download a pre-built binary from our [GitHub release page](https://github.com/protocolbuffers/protobuf/releases).
Feng Xiaode000522014-08-28 11:18:51 -070026
Feng Xiaod0e01142016-01-21 17:06:38 -080027In the downloads section of each release, you can find pre-built binaries in
Protobuf Team Bot016ef232022-11-23 13:53:12 -080028zip packages: `protoc-$VERSION-$PLATFORM.zip`. It contains the protoc binary
29as well as a set of standard `.proto` files distributed along with protobuf.
Feng Xiaode000522014-08-28 11:18:51 -070030
Feng Xiaod0e01142016-01-21 17:06:38 -080031If you are looking for an old version that is not available in the release
Protobuf Team Bot016ef232022-11-23 13:53:12 -080032page, check out the [Maven repository](https://repo1.maven.org/maven2/com/google/protobuf/protoc/).
Feng Xiaode000522014-08-28 11:18:51 -070033
Feng Xiaod0e01142016-01-21 17:06:38 -080034These pre-built binaries are only provided for released versions. If you want
noahdietz5abf8022022-04-12 10:25:08 -070035to use the github main version at HEAD, or you need to modify protobuf code,
Feng Xiaod0e01142016-01-21 17:06:38 -080036or you are using C++, it's recommended to build your own protoc binary from
37source.
temporal40ee5512008-07-10 02:12:20 +000038
Mike Kruskaled5c57a2022-08-10 22:51:29 -070039If you would like to build protoc binary from source, see the [C++ Installation Instructions](src/README.md).
temporal40ee5512008-07-10 02:12:20 +000040
Feng Xiaod0e01142016-01-21 17:06:38 -080041Protobuf Runtime Installation
42-----------------------------
temporal40ee5512008-07-10 02:12:20 +000043
Feng Xiaod0e01142016-01-21 17:06:38 -080044Protobuf supports several different programming languages. For each programming
45language, you can find instructions in the corresponding source directory about
46how to install protobuf runtime for that specific language:
temporal40ee5512008-07-10 02:12:20 +000047
Joshua Haberman96ccf402021-05-20 10:06:36 -070048| Language | Source |
49|--------------------------------------|-------------------------------------------------------------|
50| C++ (include C++ runtime and protoc) | [src](src) |
51| Java | [java](java) |
52| Python | [python](python) |
53| Objective-C | [objectivec](objectivec) |
54| C# | [csharp](csharp) |
Joshua Haberman96ccf402021-05-20 10:06:36 -070055| Ruby | [ruby](ruby) |
56| Go | [protocolbuffers/protobuf-go](https://github.com/protocolbuffers/protobuf-go)|
57| PHP | [php](php) |
58| Dart | [dart-lang/protobuf](https://github.com/dart-lang/protobuf) |
Noel Kim (김민혁)e58ff982022-08-31 01:30:54 +090059| Javascript | [protocolbuffers/protobuf-javascript](https://github.com/protocolbuffers/protobuf-javascript)|
temporal40ee5512008-07-10 02:12:20 +000060
Feng Xiao74bf45f2017-09-08 15:44:09 -070061Quick Start
62-----------
temporal40ee5512008-07-10 02:12:20 +000063
Protobuf Team Bot016ef232022-11-23 13:53:12 -080064The best way to learn how to use protobuf is to follow the [tutorials in our
Protobuf Team Bot23d8aac2023-02-09 15:00:37 -080065developer guide](https://protobuf.dev/getting-started).
Feng Xiao74bf45f2017-09-08 15:44:09 -070066
67If you want to learn from code examples, take a look at the examples in the
68[examples](examples) directory.
69
70Documentation
71-------------
temporal40ee5512008-07-10 02:12:20 +000072
Protobuf Team Bot23d8aac2023-02-09 15:00:37 -080073The complete documentation is available at the [Protocol Buffers doc site](https://protobuf.dev).
74
75Support Policy
76--------------
77
78Read about our [version support policy](https://protobuf.dev/version-support/)
79to stay current on support timeframes for the language libraries.
Protocol Buffers Docs1cb0d642022-07-17 13:16:59 +000080
81Developer Community
82-------------------
83
84To be alerted to upcoming changes in Protocol Buffers and connect with protobuf developers and users,
85[join the Google Group](https://groups.google.com/g/protobuf).