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 97c3de35fe Added google3 version of test wrapper. 3 years ago
.bazelci Install additional packages to run test on Bazel CI 3 years ago
.github/workflows ubsan apparently requires libunwind-dev. 3 years ago
bazel Added google3 version of test wrapper. 3 years ago
benchmarks Ran clang-format. 3 years ago
cmake Changed generated code deps to avoid deps on core libraries. 3 years ago
doc Addressed PR comments. 3 years ago
python Factored out common logic around our python test wrappers. 3 years ago
third_party Used the original/native file structure. And fixed an __aarch64__ define. 3 years ago
upb Fix for proto2 files that use proto3 enums. 3 years ago
upbc Update protoc-gen-upbdefs.cc 3 years ago
.bazelignore Added missing .bazelignore file. 3 years ago
.bazelrc Fixed a handful of reference leaks found in a debug build of Python (#484) 3 years ago
.clang-format Added .clang-format for the project. 3 years ago
.gitignore Grudgingly moved to separate files for SVGs. 3 years ago
BUILD Added explicit dep on :table from Python. 3 years ago
CONTRIBUTING.md Updated some docs and removed/rearranged some obsolete stuff. 3 years ago
DESIGN.md Fleshed out DESIGN.md a bit more. 3 years ago
LICENSE Updated Google, Inc. to Google LLC. 4 years ago
README.md Added support for extensions. 3 years ago
WORKSPACE Put load statement back where it was. 3 years ago
rename.sed Fix mistake in previous rename: upb_MessageDef_FindFieldByNameWithSize. 3 years ago
run_sed.sh Added back missing underscore. 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.