Releases: bufbuild/buf
v1.37.0
v1.36.0
- Add
--list-services
and--list-methods
flags tobuf curl
, which trigger the command to list
known services or methods in the RPC schema, instead of invoking an RPC method. - Add
clean
as a top-level option inbuf.gen.yaml
, matching thebuf generate --clean
flag. If
set to true, this will delete the directories, jar files, or zip files set toout
for each
plugin. - Fix git input handling of annotated tags.
- Update
buf registry login
to complete the login flow in the browser by default. This allows
users to login with their browser and have the token automatically provided to the CLI. - Add
buf registry organization {create, delete, info, update}
commands to manage BSR
organizations. Removebuf beta registry organization
commands. - Add
buf registry module {create, delete, deprecate, info, undeprecate, update}
commands to
manage BSR modules. Removebuf beta registry repository
commands. - Add
buf registry label {archive, info, list, unarchive}
commands to manage BSR module labels.
Removebuf beta registry label
commands andbuf beta registry {archive, unarchive}
. - Add
buf registry commit {add-label, info, list, resolve}
to manage BSR module commits. Remove
buf beta registry commit
commands.
v1.35.1
- Fix the git input parameter
ref
to align with thegit
notion of a ref. This allows for the use of branch names, tag names, and commit hashes. - Fix unexpected
buf build
errors with absolute path directory inputs without workspace and/or module configurations (e.g.buf.yaml
,buf.work.yaml
) and proto file paths set to the--path
flag.
v1.35.0
- Add
buf generate --clean
flag that will delete the directories, jar files, or zip files that the
plugins will write to, prior to generation. Allows cleaning of existing assets without having
to callrm -rf
. - Deprecate
--username
flag on and username prompt onbuf registry login
. A username is no longer
required to log in.
v1.34.0
- Add
buf config ls-modules
command to list configured modules. - Fix issue where
buf generate
would succeed on missing insertion points and panic on empty insertion point files. - Update
buf generate
to allow the use of Editions syntax when doing local code generation by proxying to aprotoc
binary (for languages where code gen is implemented inside ofprotoc
instead of in a plugin: Java, C++, Python, etc). - Allow use of an array of strings for the
protoc_path
property of forbuf.gen.yaml
, where the first array element is the actual path and other array elements are extra arguments that are passed toprotoc
each time it is invoked.
v1.33.0
- Allow user to override
--source-control-url
and--create-default-label
when using--git-metadata
withbuf push
. - Fix
buf push --git-metadata
when local tags point to different objects than the remote tags. - Fix issue where comment ignores were not respected for
PROTOVALIDATE
lint rule violations. - Add
buf beta registry label {create,get,list}
to replacebuf beta registry {draft, tag}
commands. - Update
buf beta commit {get,list}
command outputs to display create time and stop displaying associated tags. - Change the behavior of
buf beta commit list <buf.build/owner/repository>
when the reference is empty. It now lists commits in the repository instead of listing commits of the default label. - Update output of
buf format
to canonicalize the punctuation used in message literals in option values. The output now always uses{
and}
instead of<
and>
; it adds:
separators between field names and message values if the source omitted them, and it removes unnecessary separators between fields (,
and;
are allowed, but neither is needed). - Update
buf format -w
so that it does not touch files whose contents don't actually change. This eliminates noisy notifications to file-system-watcher tools that are watching the directory that contains proto sources. - Update
buf generate
to work with plugins provided by protoc for versions v24.0 to v25.3. Editions support was experimental in these releases, and the plugins advertise incomplete support for editions, which triggersbuf
to report an error. With this fix, these plugins can be used again as long as none of the input files use editions syntax. - Add
buf push --exclude-unnamed
flag to exclude unnamed modules when pushing to the BSR.
v1.32.2
- Update
buf generate
to warn instead of error when proto3 optional is required but not supported by a plugin.
v1.32.1
- Fix archive and git inputs so that
--path
and--exclude-path
paths are relative to the#subdir
rather than the root of the input. This fixes an unintended behavior change that was introduced inv1.32.0
. - Add
module
input forprotoc-gen-buf-lint
andprotoc-gen-buf-breaking
to allow users to specify the module forv2
configuration files.
v1.32.0
This release contains the (completely backwards-compatible) next generation of the Buf CLI. The Buf CLI and its associated configuration have been completely overhauled to support monorepos as first-class citizens. We'd call it a v2 of buf, but it's not. Buf is enterprise-grade software, and we want you to be minimally impacted. The v1.32.0
release of buf introduces v2
config formats for both buf.yaml
and buf.gen.yaml
. All your current commands and v1
configuration continue to work, so you can upgrade to v2
configuration when appropriate.
To read more about what's new, check out our blog and our docs:
- Introducing the next generation of the Buf CLI: still v1 and backwards-compatible
- Introducing the newly improved BSR UI and buf push experience
- Migrate to v2 configuration files
- Add version
v2
forbuf.yaml
andbuf.gen.yaml
configuration files. - Add
buf config migrate
to migrate configuration files to the latest version (nowv2
). - Move
buf mod init
tobuf config init
.buf mod init
is now deprecated. - Move
buf mod ls-lint-rules
tobuf config ls-lint-rules
.buf mod ls-lint-rules
is now deprecated. - Move
buf mod ls-breaking-rules
tobuf config ls-breaking-rules
.buf mod ls-breaking-rules
is now deprecated. - Move
buf mod prune
tobuf dep prune
.buf mod prune
is now deprecated. - Move
buf mod update
tobuf dep update
.buf mod update
is now deprecated. - Move
buf mod {clear-cache,cc}
tobuf registry cc
.buf mod {clear-cache,cc}
is now deprecated. - Move
buf beta graph
to stable asbuf dep graph
. - Change the default visibility of
buf push --create-visibility
toprivate
when the--create
flag is set. Users are no longer required to set--create-visibility
when runningbuf push --create
. - Add
buf push --label
, which allows users to set labels when pushing new commits to the BSR. - Add
buf push --source-control-url
, which allows users to associate commits pushed to the BSR with a URL to a source code repository. - Add
buf push --create-default-label
, which allows users to set a default label for a repository when callingbuf push --create
. - Add
buf push --git-metadata
, which automatically sets appropriate--label
,--source-control-url
, and--create-default-label
flags based on the current Git repository. - Add
buf convert --validate
to apply protovalidate rules to incoming messages specified with--from
. - Deprecate
buf mod open
. - Delete
buf beta migrate-v1beta1
This is now replaced withbuf config migrate
. - Add
buf registry sdk version
to get the version of a Generated SDK for a module and plugin. - Add
buf beta registry archive
andbuf beta registry unarchive
commands for archiving and unarchiving labels on the BSR. - Add support for Protobuf Editions. This allows
buf
to be used with sources that use edition 2023, instead of proto2 or proto3 syntax. This also updates theprotoc-gen-buf-breaking
andprotoc-gen-buf-lint
Protobuf plugins to support files that use edition 2023. - Update
buf breaking
rules to work with Protobuf Editions. To support Editions, some rules have been deprecated and replaced with Editions-aware rules. All deprecated rules continue to work for existing users.FIELD_SAME_CTYPE
has been replaced withFIELD_SAME_CPP_STRING_TYPE
, which considers bothctype
field options and new(pb.cpp).string_type
features when deciding on backwards compatibility.FIELD_SAME_LABEL
has been replaced with three rules that all check "cardinality". The new rules can distinguish between maps and other repeated fields and between implicit and explicit field presence. The new rules are:FIELD_SAME_CARDINALITY
in theFILE
andPACKAGE
categories.FIELD_WIRE_COMPATIBLE_CARDINALITY
in theWIRE
category.FIELD_WIRE_JSON_COMPATIBLE_CARDINALITY
in theWIRE_JSON
category.
FILE_SAME_JAVA_STRING_CHECK_UTF8
has been replaced withFIELD_SAME_JAVA_UTF8_VALIDATION
, which considers both thejava_string_check_utf8
file option and(pb.java).utf8_validation
features when deciding on backwards compatibility.- Add to the existing
FILE_SAME_SYNTAX
rule with a few related rules that can catch the same sort of compatibility issues, but in an Editions source file that changes feature values:MESSAGE_SAME_JSON_FORMAT
andENUM_SAME_JSON_FORMAT
catch changes to thejson_format
feature, which controls whether support for the JSON format is best-effort or properly supported. When supported, the compiler performs more checks relating to field name collisions for the JSON format as well as for FieldMask usage.FIELD_SAME_UTF8_VALIDATION
catches changes to theutf8_validation
feature, which controls validation of string values.ENUM_SAME_TYPE
catches changes to an enum's type, open vs. closed.
- Add support for extensions to
buf breaking
. All existing rules for fields are now applied to extensions, except forFIELD_NO_DELETE
(and its variants). There are also newEXTENSION_NO_DELETE
andPACKAGE_EXTENSION_NO_DELETE
rules for catching deletions of an extension. The new rules are not active by default in existingv1
andv1beta1
configurations, for backwards-compatibility reasons. Migrate your config tov2
to use them. - Add support for top-level extensions to
buf lint
. It previously only checked extensions that were defined inside of messages. - Add a new
FIELD_NOT_REQUIRED
lint rule that prevents use of required in proto2 files and offeatures.field_presence = LEGACY_REQUIRED
in Editions files. This new rule is not active by default in existingv1
andv1beta1
configurations, for backwards-compatibility reasons. Migrate your config tov2
to use them.
v1.32.0-beta.1
This is the first beta release of the next generation of the Buf CLI. This beta release is being used by some of our customers to ensure we've kept compatibility, and to try some of its new features. Don't worry - the next generation of the buf
CLI continues to be v1
, and is completely backwards-compatible - all of your workflows will continue to work. Buf is enterprise-grade software, and we want you to be minimally impacted.
There's some exciting improvements coming in the next generation of the buf
CLI, and we look forward to sharing it more widely in the coming weeks. If you'd like to be part of the private beta, email us with the subject line "Beta" and we'll be happy to talk - we'll add more users as we have capacity. While you are free to give this beta release a spin without being added to our private beta, we wouldn't recommend using it outside of our private beta just yet!