An open API service providing package, version and dependency metadata of many open source software ecosystems and registries.

github.com/bufbuild/protocompile

Package protocompile provides the entry point for a high performance native Go protobuf compiler. "Compile" in this case just means parsing and validating source and generating fully-linked descriptors in the end. Unlike the protoc command-line tool, this package does not try to use the descriptors to perform code generation. The various sub-packages represent the various compile phases and contain models for the intermediate results. Those phases follow: This package provides an easy-to-use interface that does all the relevant phases, based on the inputs given. If an input is provided as source, all phases apply. If an input is provided as a descriptor proto, only phases 3 to 5 apply. Nothing is necessary if provided a linked descriptor (which is usually only the case for select system dependencies). This package is also capable of taking advantage of multiple CPU cores, so a compilation involving thousands of files can be done very quickly by compiling things in parallel. A Resolver is how the compiler locates artifacts that are inputs to the compilation. For example, it can load protobuf source code that must be processed. A Resolver could also supply some already-compiled dependencies as fully-linked descriptors, alleviating the need to re-compile them. A Resolver can provide any of the following in response to a query for an input. Compilation will use the Resolver to load the files that are to be compiled and also to load all dependencies (i.e. other files imported by those being compiled). A Compiler accepts a list of file names and produces the list of descriptors. A Compiler has several fields that control how it works but only the Resolver field is required. A minimal Compiler, that resolves files by loading them from the file system based on the current working directory, can be had with the following simple snippet: This minimal Compiler will use default parallelism, equal to the number of CPU cores detected; it will not generate source code info in the resulting descriptors; and it will fail fast at the first sign of any error. All of these aspects can be customized by setting other fields.

Ecosystem
proxy.golang.org
Latest Release
v0.14.1
over 1 year ago
Versions
17
Dependent Packages
1,262
Dependent Repos
1,311
Links
Registry proxy.golang.org
Source Repository
Docs Documentation
JSON API View JSON
CodeMeta codemeta.json
Package Details
PURL pkg:golang/github.com/bufbuild/protocompile
spec
License Apache-2.0
Namespace github.com/bufbuild
First Release over 3 years ago
Last Synced 25 days ago
Repository
Stars 291 on GitHub
Forks 22 on GitHub
Docker Dependents 218
Docker Downloads 1,128,358,891
Commits 170
Committers 10
Avg per Author 17.0
DDS 0.7
Rankings on proxy.golang.org
Overall Top 2.8%
Dependent packages Top 0.2%
Dependent repos Top 0.2%
Forks Top 9.0%
Docker downloads Top 0.1%