grpc/third_party/upb
Esun Kim c08eb4fc41
Attempt to upgrade upb to the latest (#28685)
* 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>
2022-02-28 09:26:31 -08:00
..
.bazelci Upgrade upb to 0e0de7d9 (#27984) 2021-11-15 14:44:35 -08:00
.github/workflows Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
bazel Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
benchmarks Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
cmake Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
doc Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
python Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
third_party Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
upb Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
upbc Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
.bazelignore Upgrade upb to 0e0de7d9 (#27984) 2021-11-15 14:44:35 -08:00
.bazelrc Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
.clang-format Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
.gitignore Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
BUILD Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
CONTRIBUTING.md Upgrade upb to 0e0de7d9 (#27984) 2021-11-15 14:44:35 -08:00
DESIGN.md Upgrade upb to 0e0de7d9 (#27984) 2021-11-15 14:44:35 -08:00
LICENSE Upb upgrade to the lastest (#26869) 2021-08-06 10:30:53 -07:00
README.md Upgrade upb to 0e0de7d9 (#27984) 2021-11-15 14:44:35 -08:00
WORKSPACE Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
rename.sed Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00
run_sed.sh Attempt to upgrade upb to the latest (#28685) 2022-02-28 09:26:31 -08:00

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.