- Notifications
You must be signed in to change notification settings - Fork15.9k
Protocol Buffers - Google's data interchange format
License
protocolbuffers/protobuf
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Copyright 2023 Google LLC
Protocol Buffers (a.k.a., protobuf) are Google's language-neutral,platform-neutral, extensible mechanism for serializing structured data. Youcan learn more about it inprotobuf's documentation.
This README file contains protobuf installation instructions. To installprotobuf, you need to install the protocol compiler (used to compile .protofiles) and the protobuf runtime for your chosen programming language.
Most users will find working fromsupported releases to bethe easiest path.
If you choose to work from the head revision of the main branch your build willoccasionally be broken by source-incompatible changes and insufficiently-tested(and therefore broken) behavior.
If you are using C++ or otherwise need to build protobuf from source as a partof your project, you should pin to a release commit on a release branch.
This is because even release branches can experience some instability in betweenrelease commits.
Protobuf supportsBzlmod with Bazel 7 +.Users should specify a dependency on protobuf in their MODULE.bazel file asfollows.
bazel_dep(name = "protobuf", version = <VERSION>)Users can optionally override the repo name, such as for compatibility withWORKSPACE.
bazel_dep(name = "protobuf", version = <VERSION>, repo_name = "com_google_protobuf")Users can also add the following to their legacyWORKSPACE file.
Note that with the release of 30.x there are a few more load statements toproperly set up rules_java and rules_python.
http_archive( name = "com_google_protobuf", strip_prefix = "protobuf-VERSION", sha256 = ..., url = ...,)load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")protobuf_deps()load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")rules_java_dependencies()load("@rules_java//java:repositories.bzl", "rules_java_toolchains")rules_java_toolchains()load("@rules_python//python:repositories.bzl", "py_repositories")py_repositories()The protobuf compiler is written in C++. If you are using C++, please followtheC++ Installation Instructions to install protoc alongwith the C++ runtime.
For non-C++ users, the simplest way to install the protocol compiler is todownload a pre-built binary from ourGitHub release page.
In the downloads section of each release, you can find pre-built binaries inzip packages:protoc-$VERSION-$PLATFORM.zip. It contains the protoc binaryas well as a set of standard.proto files distributed along with protobuf.
If you are looking for an old version that is not available in the releasepage, check out theMaven repository.
These pre-built binaries are only provided for released versions. If you wantto use the github main version at HEAD, or you need to modify protobuf code,or you are using C++, it's recommended to build your own protoc binary fromsource.
If you would like to build protoc binary from source, see theC++ Installation Instructions.
Protobuf supports several different programming languages. For each programminglanguage, you can find instructions in the corresponding source directory abouthow to install protobuf runtime for that specific language:
| Language | Source |
|---|---|
| C++ (include C++ runtime and protoc) | src |
| Java | java |
| Python | python |
| Objective-C | objectivec |
| C# | csharp |
| Ruby | ruby |
| Go | protocolbuffers/protobuf-go |
| PHP | php |
| Dart | dart-lang/protobuf |
| JavaScript | protocolbuffers/protobuf-javascript |
The best way to learn how to use protobuf is to follow thetutorials in ourdeveloper guide.
If you want to learn from code examples, take a look at the examples in theexamples directory.
The complete documentation is available at theProtocol Buffers doc site.
Read about ourversion support policyto stay current on support timeframes for the language libraries.
To be alerted to upcoming changes in Protocol Buffers and connect with protobuf developers and users,join the Google Group.
About
Protocol Buffers - Google's data interchange format
Topics
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.