Mass API rename and clang-reformat (#485)

* Wave 1: upb_fielddef.

* upb_fielddef itself.

* upb_oneofdef.

* upb_msgdef.

* ExtensionRange.

* upb_enumdef

* upb_enumvaldef

* upb_filedef

* upb_methoddef

* upb_servicedef

* upb_symtab

* upb_defpool_init

* upb_wellknown and upb_syntax_t

* Some constants.

* upb_status

* upb_strview

* upb_arena

* upb.h constants

* reflection

* encode

* JSON decode.

* json encode.

* msg_internal.

* Formatted with clang-format.

* Some naming fixups and comment reformatting.

* More refinements.

* A few more stragglers.

* Fixed PyObject_HEAD with semicolon. Removed TODO entries.
84 files changed
tree: 09f6958fe46875f20f00a17e0dddd0e11ec57b5f
  1. .bazelci/
  2. .github/
  3. bazel/
  4. benchmarks/
  5. cmake/
  6. doc/
  7. python/
  8. tests/
  9. third_party/
  10. upb/
  11. upbc/
  12. .bazelignore
  13. .bazelrc
  14. .gitignore
  15. BUILD
  16. CONTRIBUTING.md
  17. DESIGN.md
  18. LICENSE
  19. README.md
  20. rename.sed
  21. run_sed.sh
  22. WORKSPACE
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.