News Announcements for Version 25.x

Changes announced for Protocol Buffers version 25.x.

The following announcements are specific to Version 25.x. For information presented chronologically, see News.

Python Breaking Change

In v25 message.UnknownFields() will be deprecated in pure Python and C++ extensions. It will be removed in v26. Use the new UnknownFieldSet(message) support in unknown_fields.py as a replacement.

μpb Moving to the Protobuf Git Repository

Starting with the v25 release, μpb now lives in the protobuf repo instead of in its former location in a separate repo. All μpb development going forward will take place only in the new location.

The merger of the two repos will simplify and speed up our development process by removing the need to update pinned version dependencies between protobuf and μpb. Changes to μpb now take effect immediately in protobuf code and vice versa, without the need for a manual upgrade step.

We expect that most users will not need to take much, if any, action to accommodate the change. μpb is the engine behind our Ruby, PHP, and Python implementations, but you will most likely not notice the change unless you have code that refers to μpb directly.

If you refer to μpb from a Bazel project, you will need to update μpb references to point to protobuf instead (for example, replace @upb with @com_google_protobuf). We are keeping μpb file paths and Bazel targets the same to minimize the need for additional changes, but there are two exceptions:

  • The upbc directory has been renamed upb_generator.
  • The top-level BUILD file for μpb has moved into the upb directory. So, for example, references to @upb//:reflection should now be written @com_google_protobuf//upb:reflection.