Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Joshua Haberman
0be33b1e3c
|
3 years ago | |
---|---|---|
.bazelci | 3 years ago | |
.github/workflows | 3 years ago | |
bazel | 3 years ago | |
benchmarks | 3 years ago | |
cmake | 3 years ago | |
python | 3 years ago | |
tests | 3 years ago | |
third_party | 3 years ago | |
upb | 3 years ago | |
upbc | 3 years ago | |
.bazelignore | 3 years ago | |
.bazelrc | 3 years ago | |
.gitignore | 6 years ago | |
BUILD | 3 years ago | |
CONTRIBUTING.md | 3 years ago | |
DESIGN.md | 3 years ago | |
LICENSE | 4 years ago | |
README.md | 3 years ago | |
WORKSPACE | 3 years ago |
README.md
μpb: small, fast C protos
μpb (often written 'upb') is a small protobuf implementation written in C.
upb is the core runtime for protobuf languages extensions in Ruby, PHP, and (soon) Python.
While upb offers a C API, the C API & ABI are not stable. For this reason, upb is not generally offered as a C library for direct consumption, and there are no releases.
Features
upb has comparable speed to protobuf C++, but is an order of magnitude smaller in code size.
Like the main protobuf implementation in C++, it supports:
- a generated API (in C)
- reflection
- binary & JSON wire formats
- text format serialization
- all standard features of protobufs (oneofs, maps, unknown fields, extensions, etc.)
- full conformance with the protobuf conformance tests
upb also supports some features that C++ does not:
- optional reflection: generated messages are agnostic to whether reflection will be linked in or not.
- no global state: no pre-main registration or other global state.
- fast reflection-based parsing: messages loaded at runtime parse just as fast as compiled-in messages.
However there are a few features it does not support:
- text format parsing
- deep descriptor verification: upb's descriptor validation is not as exhaustive
as
protoc
.
Install
For Ruby, use RubyGems:
$ gem install google-protobuf
For PHP, use PECL:
$ sudo pecl install protobuf
Contributing
Please see CONTRIBUTING.md.