-
New compiler that is faster and uses less memory than the outgoing one.
- When generating source code info, the new compiler is 20% faster, and allocates
13% less memory. - If not generating source code info, the new compiler is 50% faster and
allocates 35% less memory. - In addition to allocating less memory through the course of a compilation, the
new compiler releases some memory much earlier, allowing it to be garbage
collected much sooner. This means that by the end of a very large compilation
process, less than half as much memory is live/pinned to the heap, decreasing
overall memory pressure.
The new compiler also addresses a few bugs where Buf would accept proto sources
that protoc would reject:- In proto3 files, field and enum names undergo a validation that they are
sufficiently different so that there will be no conflicts in JSON names. - Fully-qualified names of elements (like a message, enum, or service) may not
conflict with package names. - A oneof or extend block may not contain empty statements.
- Package names may not be >= 512 characters in length or contain > 100 dots.
- Nesting depth of messages may not be > 32.
- Field types and method input/output types may not refer to synthetic
map entry messages.
- When generating source code info, the new compiler is 20% faster, and allocates
-
Push lint and breaking configuration to the registry.
-
Include
LICENSE
file in the module onbuf push
. -
Formatter better edits/preserves whitespace around inline comments.
-
Formatter correctly indents multi-line block (C-style) comments.
-
Formatter now indents trailing comments at the end of an indented block body
(including contents of message and array literals and elements in compact options)
the same as the rest of the body (instead of out one level, like the closing
punctuation). -
Formatter uses a compact, single-line representation for array and message literals
in option values that are sufficiently simple (single scalar element or field). -
buf beta convert
flags have changed from--input
to--from
and--output
/-o
to--to
-
Fully qualified type names now must be passed to the
input
argument and--type
flag separately