Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 117 additions & 1 deletion content/includes/version-tables.css
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,120 @@ tbody td.gray {

tbody td.yellow {
background: #fff2cc;
}
}

/* version-table */

table.version-table tr.end-of-life th {
background: #f4cccc;
}
table.version-table tr.internal-support th {
background: #fce5cd;
}
table.version-table tr.maintenance th {
background: #fff2cc;
}
table.version-table tr.active th {
background: #d9ead3;
text-decoration: underline;
}
table.version-table tr.future th {
background: #fff;
}
table.version-table tr.future td {
font-style: italic;
}

table.version-table td:nth-child(4) {
text-align: start;
}

/* version-chart */

table.version-chart tr.end-of-life th {
background: #f4cccc;
}
table.version-chart tr.internal-support th {
background: #fce5cd;
}
table.version-chart tr.maintenance th {
background: #fff2cc;
}
table.version-chart tr.active th {
background: #d9ead3;
text-decoration: underline;
}
table.version-chart tr.future th {
background: #fff;
}
table.version-chart tr.future td {
font-style: italic;
}

table.version-chart td.internal-support {
background: #fce5cd;
}
table.version-chart td.maintenance {
background: #fff2cc;
}
table.version-chart td.active {
background: #d9ead3;
text-decoration: underline;
}

/* latest release column */

/* visually replace 'yyQq' heading with string 'Latest' */
table.version-chart th.latest-release span {
display: none;
}
table.version-chart th.latest-release::after {
content: "Latest"
}

/* draw a focus rectangle around the latest release column */
table.version-chart th.latest-release {
border-top: 2px solid #e06666 !important;
border-left: 2px solid #e06666 !important;
border-right: 2px solid #e06666 !important;
}
table.version-chart td.latest-release {
font-weight: bold;
border-left: 2px solid #e06666 !important;
border-right: 2px solid #e06666 !important;
}
table.version-chart tr:last-child td.latest-release {
border-bottom: 2px solid #e06666 !important;
}

/* future release columns */
table.version-chart td:not(:has(~ .latest-release)):not(.latest-release) {
font-style: italic;
}

/* legend */

table.legend th {
font-weight: normal;
}

table.legend tr.end-of-life th {
background: #f4cccc;
}
table.legend tr.internal-support th {
background: #fce5cd;
}
table.legend tr.maintenance th {
background: #fff2cc;
}
table.legend tr.active th {
background: #d9ead3;
text-decoration: underline;
}
table.legend tr.future th {
background: #fff;
}

table.legend td:nth-child(2) {
text-align: start;
}
76 changes: 76 additions & 0 deletions content/news/2024-11-07.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
+++
title = "Changes Announced on November 7, 2024"
linkTitle = "November 7, 2024"
toc_hide = "true"
description = "Changes announced for Protocol Buffers on November 7, 2024."
type = "docs"
+++

The following sections cover planned breaking changes in the v30 release,
expected in 2025 Q1. Also included are some changes that aren't breaking but may
require action on your part. These are in addition to those mentioned in the
[News article from October 2](/news/2024-10-02).

These describe changes as we anticipate them being implemented, but due to the
flexible nature of software some of these changes may not land or may vary from
how they are described in this topic.

## Introduce ASAN Poisoning After Clearing Oneof Messages on Arena

This change adds a hardening check that affects C++ protobufs using Arenas.
Oneof messages allocated on the protobuf arena will now be cleared in debug and
poisoned in ASAN mode. After calling clear, future attempts to use the memory
region will cause a crash in ASAN as a use-after-free error.

This implementation
[requires C++17](/news/2024-10-02#drop-cpp-14).

## Python setdefault Behavior Change for Map Fields

Starting in v30, `setdefault` will be similar to `dict` for `ScalarMap`, except
that both key and value must be set. `setdefault` will be rejected for
`MessageMaps`.

## Remove Deprecated py_proto_library Macro

The deprecated internal `py_proto_library` Bazel macro in `protobuf.bzl` will be
removed in v30.x.

This should be replaced by the official `py_proto_library` which will be moved
to protobuf in `bazel/py_proto_library` as of v29.x. This implementation was
previously available in `rules_python` prior to v29.x.

## Python Nested Message Class \_\_qualname\_\_ Contains the Outer Message Name

Python nested message class `__qualname__` now contains the outer message name.
Prior to v30, `__qualname__` has the same result with `__name__` for nested
message, in that the outer message name was not included.

For example:

```python
message Foo {
message Bar {
bool bool_field = 1;
}
}
nested = test_pb2.Foo.Bar()
self.assertEqual('Bar', nested.__class__.__name__)
self.assertEqual('Foo.Bar', nested.__class__.__qualname__) # It was 'Bar' before
```

## Dropping our C++ CocoaPods release

In v30, we will be dropping our C++ CocoaPods release, which has been broken
since v4.x.x. C++ users should use our
[GitHub release](https://github.com/protocolbuffers/protobuf/releases) directly
instead.

## Ruby and PHP Errors in JSON Parsing

v30 fixes non-conformance in JSON parsing of strings in numeric fields per the
[JSON spec](https://protobuf.dev/programming-guides/json/).

This fix will not be accompanied by a major version bump, but Ruby and PHP will
now raise errors for non-numeric strings (e.g. "", "12abc", "abc") in numeric
fields. v29.x will include a warning for these error cases.
3 changes: 3 additions & 0 deletions content/news/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ New news topics will also be published to the
The following news topics provide information in the reverse order in which it
was released.

* [November 7, 2024](/news/2024-11-07) - More breaking
changes in the upcoming 30.x release
* [October 2, 2024](/news/2024-10-02) - Breaking
changes in the upcoming 30.x release
* [October 1, 2024](/news/2024-10-01) - Changes to
Expand Down Expand Up @@ -84,6 +86,7 @@ release notes will be more complete. Also, not everything from the chronological
listing will be in these topics, as some content is not specific to a particular
release.

* [Version 30.x](/news/v30)
* [Version 29.x](/news/v29)
* [Version 26.x](/news/v26)
* [Version 25.x](/news/v25)
Expand Down
Loading
Loading