Skip to content

Releases: bufbuild/buf

v1.37.0

16 Aug 19:09
186b026
Compare
Choose a tag to compare
  • Add STABLE_PACKAGE_NO_IMPORT_UNSTABLE lint rule which disallows files from stable packages
    to import files from unstable packages.
  • Fix plugin push failures when pushing an image built with containerd image store.

v1.36.0

06 Aug 19:21
3eeb006
Compare
Choose a tag to compare
  • Add --list-services and --list-methods flags to buf 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 in buf.gen.yaml, matching the buf generate --clean flag. If
    set to true, this will delete the directories, jar files, or zip files set to out 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. Remove buf beta registry organization commands.
  • Add buf registry module {create, delete, deprecate, info, undeprecate, update} commands to
    manage BSR modules. Remove buf beta registry repository commands.
  • Add buf registry label {archive, info, list, unarchive} commands to manage BSR module labels.
    Remove buf beta registry label commands and buf 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

24 Jul 20:29
f37053e
Compare
Choose a tag to compare
  • Fix the git input parameter ref to align with the git 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

22 Jul 20:19
da90244
Compare
Choose a tag to compare
  • 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 call rm -rf.
  • Deprecate --username flag on and username prompt on buf registry login. A username is no longer
    required to log in.

v1.34.0

21 Jun 19:55
3b5b535
Compare
Choose a tag to compare
  • 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 a protoc binary (for languages where code gen is implemented inside of protoc instead of in a plugin: Java, C++, Python, etc).
  • Allow use of an array of strings for the protoc_path property of for buf.gen.yaml, where the first array element is the actual path and other array elements are extra arguments that are passed to protoc each time it is invoked.

v1.33.0

13 Jun 16:08
2d796a7
Compare
Choose a tag to compare
  • Allow user to override --source-control-url and --create-default-label when using --git-metadata with buf 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 replace buf 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 triggers buf 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

28 May 18:32
47016f1
Compare
Choose a tag to compare
  • Update buf generate to warn instead of error when proto3 optional is required but not supported by a plugin.

v1.32.1

21 May 20:27
2127dde
Compare
Choose a tag to compare
  • 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 in v1.32.0.
  • Add module input for protoc-gen-buf-lint and protoc-gen-buf-breaking to allow users to specify the module for v2 configuration files.

v1.32.0

16 May 17:13
c8b0995
Compare
Choose a tag to compare

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:


  • Add version v2 for buf.yaml and buf.gen.yaml configuration files.
  • Add buf config migrate to migrate configuration files to the latest version (now v2).
  • Move buf mod init to buf config init. buf mod init is now deprecated.
  • Move buf mod ls-lint-rules to buf config ls-lint-rules. buf mod ls-lint-rules is now deprecated.
  • Move buf mod ls-breaking-rules to buf config ls-breaking-rules. buf mod ls-breaking-rules is now deprecated.
  • Move buf mod prune to buf dep prune. buf mod prune is now deprecated.
  • Move buf mod update to buf dep update. buf mod update is now deprecated.
  • Move buf mod {clear-cache,cc} to buf registry cc. buf mod {clear-cache,cc} is now deprecated.
  • Move buf beta graph to stable as buf dep graph.
  • Change the default visibility of buf push --create-visibility to private when the --create flag is set. Users are no longer required to set --create-visibility when running buf 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 calling buf 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 with buf 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 and buf 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 the protoc-gen-buf-breaking and protoc-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 with FIELD_SAME_CPP_STRING_TYPE, which considers both ctype 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:
      1. FIELD_SAME_CARDINALITY in the FILE and PACKAGE categories.
      2. FIELD_WIRE_COMPATIBLE_CARDINALITY in the WIRE category.
      3. FIELD_WIRE_JSON_COMPATIBLE_CARDINALITY in the WIRE_JSON category.
    • FILE_SAME_JAVA_STRING_CHECK_UTF8 has been replaced with FIELD_SAME_JAVA_UTF8_VALIDATION, which considers both the java_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:
      1. MESSAGE_SAME_JSON_FORMAT and ENUM_SAME_JSON_FORMAT catch changes to the json_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.
      2. FIELD_SAME_UTF8_VALIDATION catches changes to the utf8_validation feature, which controls validation of string values.
      3. 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 for FIELD_NO_DELETE (and its variants). There are also new EXTENSION_NO_DELETE and PACKAGE_EXTENSION_NO_DELETE rules for catching deletions of an extension. The new rules are not active by default in existing v1 and v1beta1 configurations, for backwards-compatibility reasons. Migrate your config to v2 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 of features.field_presence = LEGACY_REQUIRED in Editions files. This new rule is not active by default in existing v1 and v1beta1 configurations, for backwards-compatibility reasons. Migrate your config to v2 to use them.

v1.32.0-beta.1

23 Apr 18:01
9d0f181
Compare
Choose a tag to compare
v1.32.0-beta.1 Pre-release
Pre-release

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!