commit | 550f9b021bd3a4aa13e31b3b59305cfb0e067735 | [log] [tgz] |
---|---|---|
author | Adam Cozzette <acozzette@google.com> | Tue Jun 13 16:07:58 2023 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Jun 13 16:08:36 2023 -0700 |
tree | 6c4ef2e232d84dd24a71e534a37169373c89d58f | |
parent | 0ea9f73be35e35db242ccc65aa9c87487b792324 [diff] |
Fix handling of public imports in upb `protos` generator I recently ran into an issue with public imports and the `protos` generator. The includes of fwd.h files are currently generated based on where the message or extension is defined, but when public imports are involved, this fwd.h header might not be in the direct dependencies. When the `#include` points to a transitive dependency then this can result in a layering violation. This CL fixes the problem by generating fwd.h includes for all direct dependencies, and making sure the fwd.h files themselves contain `#include` lines to export their public dependencies. PiperOrigin-RevId: 540102455
μ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 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.
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:
upb also supports some features that C++ does not:
However there are a few features it does not support:
protoc
.For Ruby, use RubyGems:
$ gem install google-protobuf
For PHP, use PECL:
$ sudo pecl install protobuf
For Python, use PyPI:
$ sudo pip install protobuf
Alternatively, you can build and install upb using vcpkg dependency manager:
git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install ./vcpkg install upb
The upb port in vcpkg is kept up to date by microsoft team members and community contributors.
If the version is out of date, please create an issue or pull request on the vcpkg repository.
Please see CONTRIBUTING.md.