Gogs bef6e57d0d first commit 3 週間 前
..
.bazelci bef6e57d0d first commit 3 週間 前
.github bef6e57d0d first commit 3 週間 前
bazel bef6e57d0d first commit 3 週間 前
benchmarks bef6e57d0d first commit 3 週間 前
cmake bef6e57d0d first commit 3 週間 前
doc bef6e57d0d first commit 3 週間 前
python bef6e57d0d first commit 3 週間 前
third_party bef6e57d0d first commit 3 週間 前
upb bef6e57d0d first commit 3 週間 前
upbc bef6e57d0d first commit 3 週間 前
.bazelignore bef6e57d0d first commit 3 週間 前
.bazelrc bef6e57d0d first commit 3 週間 前
.clang-format bef6e57d0d first commit 3 週間 前
.gitignore bef6e57d0d first commit 3 週間 前
BUILD bef6e57d0d first commit 3 週間 前
CONTRIBUTING.md bef6e57d0d first commit 3 週間 前
DESIGN.md bef6e57d0d first commit 3 週間 前
LICENSE bef6e57d0d first commit 3 週間 前
README.md bef6e57d0d first commit 3 週間 前
WORKSPACE bef6e57d0d first commit 3 週間 前
rename.sed bef6e57d0d first commit 3 週間 前
run_sed.sh bef6e57d0d first commit 3 週間 前

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.