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.
 
 
 
 
 
 
Josh Haberman d493500abc Sync from Google-internal development. 10 years ago
benchmarks Sync to internal Google development. 11 years ago
dynasm Sync with 8 months of Google-internal development. 12 years ago
examples Sync with internal Google development. 13 years ago
tests Sync from Google-internal development. 10 years ago
tools Sync from internal Google development. 11 years ago
upb Sync from Google-internal development. 10 years ago
.gitignore Makefile is much improved ("make deps" works again, etc). 16 years ago
LICENSE Update copyright to be Google Inc. 14 years ago
Makefile Sync from Google development. 11 years ago
README Sync to internal Google development. 11 years ago
perf-regression-test.py Decoder redesign in preparation for packed fields and start/endseq. 14 years ago
perf-tests.sh Fix perf-tests.sh to skip building non-upb tests. 13 years ago

README


upb - a small, low-level protocol buffer library

BUILDING
========

To build (the core library is ANSI C99 and has no dependencies):
$ make

Other useful targets:
$ make test
$ make benchmark
$ make lua (requires lua libraries to be installed)

The tests and benchmarks have the following dependencies
(Ubuntu package names in parentheses):
- Google's protobuf compiler + libraries (protobuf-compiler, libprotobuf-dev)
- Lua binary and libraries (lua5.1, liblua5.1-dev)

Issue tracking is on Google Code:
http://code.google.com/p/upb/issues/list

A manual is forthcoming, for now see wiki docs at:
https://github.com/haberman/upb/wiki

API
===

The public C/C++ API is defined by all of the .h files in upb/ except .int.h
files (which are internal-only).

The .h files define both C and C++ APIs. Both languages have 100% complete and
first-class APIs. The C++ API is a wrapper around the C API, but all of the
wrapping is done in inline methods in .h files, so there is no overhead to this.

For a more detailed description of the scheme we use to provide both C and C++
APIs, see: https://github.com/haberman/upb/wiki/CAndCPlusPlusAPI

All of the code that is under upb/ but *not* under upb/bindings/ forms the
namespace of upb's cross-language public API. For example, the code in
upb/descriptor would be exposed as follows:

* in C/C++:
#include "upb/descriptor/X.h"

* in Lua:
require "upb.descriptor"

* in Python:
import upb.descriptor

* etc.

STABILITY / STATUS
==================

API and ABI are both subject to change! Please do not distribute as a shared
library for this reason (for now at least).

Parsing is becoming stable, but serialization is in very early stages.

The Python bindings are completely broken and Lua only supports schemas for the
moment.

CONTACT
=======

Author: Josh Haberman (jhaberman@gmail.com, haberman@google.com)
See LICENSE for copyright information.