* Update upb to 85e5c76cb7098d3ae35e575d652a40568013a149 * Update grpc_deps.bzl * Run gen_upb_api.sh * Run run_sed.sh * Update gen_build_yaml.py * Regen projects * Reformat * Update third_party/upb to 950cdab42fe4c83f06a2be46eeb46a068e486eed * Update third_party/upb to c9c31241bc39922b092a81d192badd50cccaaa81 * Update src/upb/gen_build_yaml.py * Generated projects * Update third_party/upb to a02d92e0257a35f11d4a58b6a932506cbdbb2f29 * Patching in https://github.com/protocolbuffers/upb/pull/524 * Sed script went too far. Co-authored-by: Nicolas 'Pixel' Noble <nicolas@nobis-crew.org> |
||
|---|---|---|
| .. | ||
| .bazelci | ||
| .github/workflows | ||
| bazel | ||
| benchmarks | ||
| cmake | ||
| doc | ||
| python | ||
| third_party | ||
| upb | ||
| upbc | ||
| .bazelignore | ||
| .bazelrc | ||
| .clang-format | ||
| .gitignore | ||
| BUILD | ||
| CONTRIBUTING.md | ||
| DESIGN.md | ||
| LICENSE | ||
| README.md | ||
| WORKSPACE | ||
| rename.sed | ||
| run_sed.sh | ||
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.