v27.0
版本发布时间: 2024-05-23 22:41:40
protocolbuffers/protobuf最新发布版本:v28.1(2024-09-12 01:21:10)
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- Future-proof edition 2023 against feature value support windows. (https://github.com/protocolbuffers/protobuf/commit/fea6847e408d58e40a2f10ab124ae795afd703d4)
- Mark deleted fields in
descriptor.proto
reserved (https://github.com/protocolbuffers/protobuf/commit/d2da4636c06ccad04371434dabbf24ca1c6ee83e) - Add extension declarations for known features. (https://github.com/protocolbuffers/protobuf/commit/f8d0a5b1dd6f5655be3c0d1a8aa1fec88e80c13a)
- Refactored the Java generator into separate packages and targets. (https://github.com/protocolbuffers/protobuf/commit/bd81fd95f30af51e86a36cf0279abec17890a324)
- Officially release Editions in 27.0. (https://github.com/protocolbuffers/protobuf/commit/baa83b6b43113a9b39c77e40dc4b10640abda657)
- Define lifetimes of edition 2023 features (https://github.com/protocolbuffers/protobuf/commit/77f62de93e2e84d6aab0364629919779970fb9f1)
- Implement feature lifetime validation in protoc and the C++ runtime. (https://github.com/protocolbuffers/protobuf/commit/b3b4497d61cabf1d0d37b10178f93c570ec67ac6)
- Add edition lifetime options for feature specs. (https://github.com/protocolbuffers/protobuf/commit/b09b3e46fe2a111d412251f6d043649334e9cbee)
- Enable editions support for Java Lite. (https://github.com/protocolbuffers/protobuf/commit/500c953d105d0447479be259a5fb0b6f7124e978)
- Release edition defaults CLI arguments. (https://github.com/protocolbuffers/protobuf/commit/7a0e10e0219fd753b97c2879eb9a92584a419105)
- Update protoc release to include editions language features protos for Java and C++ (https://github.com/protocolbuffers/protobuf/commit/6483c4755daadf1bceb95c4519851c52e8842d2e)
C++
- Future-proof edition 2023 against feature value support windows. (https://github.com/protocolbuffers/protobuf/commit/fea6847e408d58e40a2f10ab124ae795afd703d4)
- Prohibit using features in the same file they're defined in. (https://github.com/protocolbuffers/protobuf/commit/8c5f3a747bae377c92a780970416945c32780bfd)
- Fix validation checks of implicit presence. (https://github.com/protocolbuffers/protobuf/commit/bdf6b10e7c2cca02a79a96dac05560fba330cb96)
- Clarify map behaviors in editions. (https://github.com/protocolbuffers/protobuf/commit/61c91874c6817cdda85c2c256c3093be34f3eb41)
- Ensure we allocate overaligned types with aligned
operator new
. (https://github.com/protocolbuffers/protobuf/commit/11ef0ffb873ebd270ab0266270ea965a04c5f2e5) - Fix text-format delimited field handling.(https://github.com/protocolbuffers/protobuf/commit/29c69ff00b58b60e67fcf40fd810009bd39b86c6)
- In debug mode, after clearing
oneof
messages on arenas, poison them if ASAN. (https://github.com/protocolbuffers/protobuf/commit/8826bafcf507120bdb77883e9a9c0c43a5f5a302) - Allow
string_type
for Edition 2023. (https://github.com/protocolbuffers/protobuf/commit/d8251ebc43cb21d3239a38554a2f0a618f368a78) - Breaking change: Ensure we allocate overaligned types with aligned
operator new
. (https://github.com/protocolbuffers/protobuf/commit/11ef0ffb873ebd270ab0266270ea965a04c5f2e5) - Python JSON parser: Ignore invalid enum string values if
ignore_unknown_fields
is set (#15887) (https://github.com/protocolbuffers/protobuf/commit/86abf35ef5ee5b1004ec11bebb36d84c2ef6645e) - Move
java_features.proto
tojava/core/srce/main/resources
(https://github.com/protocolbuffers/protobuf/commit/274bc7f26ff9da996714cf5cd011a7edaf6ce34c) - Add an RAII namespace printer helper for C++ codegen. (https://github.com/protocolbuffers/protobuf/commit/8599ab5a5934579e9cb775b2cf2bcc69e67c2747)
- Enable editions support for Java Lite. (https://github.com/protocolbuffers/protobuf/commit/500c953d105d0447479be259a5fb0b6f7124e978)
- Add an RAII
ifndef
helper for C++ codegen. (https://github.com/protocolbuffers/protobuf/commit/1087274e7dc3ea6864af39a46091160b98e809f1) - Clear
oneof
message fields even on arena on non-OPT builds. (https://github.com/protocolbuffers/protobuf/commit/5c183bda866e4410a66cda550d6afa2428408879) - Implement edition 2023 support in all Ruby runtimes. (https://github.com/protocolbuffers/protobuf/commit/bca8fb6117cf24785edb238d96bffe2c3a6d7164)
- Release edition defaults CLI arguments. (https://github.com/protocolbuffers/protobuf/commit/7a0e10e0219fd753b97c2879eb9a92584a419105)
- Deprecate
Arena::CreateMessage
for OSS. (https://github.com/protocolbuffers/protobuf/commit/d4bfe52d998dae068ea7e2d44decd234bb090c46) - Open sourcing
reflection_visit_fieds
. (https://github.com/protocolbuffers/protobuf/commit/cfc07df845a6b5cfc6837e56f3bf8ed20e06eb76) - Fixed the use of c++ keywords within namespace names (#15954) (https://github.com/protocolbuffers/protobuf/commit/988194a591f0b82b1ae52590e4daa5f0519ef8c7)
- Fix pkg-config metadata for shared abseil on windows (#15888) (https://github.com/protocolbuffers/protobuf/commit/fe6edca15b2d80df79ab31117dc49621ef461202)
- Add
GetStringView()
andGetRepeatedStringView()
with scratch. (https://github.com/protocolbuffers/protobuf/commit/a3f5af066fcb16bc2e90e28c006597aef1904eab) - Avoid a 'may be used uninitialized' warning when built with '-c opt'. (#15846) (https://github.com/protocolbuffers/protobuf/commit/eb70b343aab7584ed164a6ab4b39789427d0474f)
- Add software prefetch to
ByteSizeLong
(https://github.com/protocolbuffers/protobuf/commit/948ca2e0f3e74a2444bc4c3cc8da1d0a4cb82058) - Add prefetching in arena blocks. (https://github.com/protocolbuffers/protobuf/commit/9e57b8e0d800b90d38ab70ac12f086310eb2484e)
- Rename the
includingDefaultValueWithoutPresenceFields
andalways_print_without_presence_fields
toalwaysPrintFieldsWithNoPresence
in the C++, Py and Java JSON serializers for consistency. (https://github.com/protocolbuffers/protobuf/commit/7d43131a0a3a2a7640208849eeac016c6c61374e) - Remove tags for arena cleanup nodes now that we have dedicated string cleanup blocks. (https://github.com/protocolbuffers/protobuf/commit/202b10639242d3ee1d10c5577618aa008e222ec4)
- Avoid unused-parameter warning in field accessor listeners. (https://github.com/protocolbuffers/protobuf/commit/f4d5c2c571038146de2ee2b22f399527510501d2)
- Add new
always_print_without_presence_fields
option to the C++ JSON serializer. (https://github.com/protocolbuffers/protobuf/commit/671b61b523dbec8bf8e41a61d5a8f689c3e2bb9f) - Fail to build descriptor if
ctype
is specified for non string/bytes fields (https://github.com/protocolbuffers/protobuf/commit/8b4c7a1f33eb6849b57b6457d12adbd001109273) - Check
ctype()
inDescriptorBuilder
for edition 2023 and beyond. (https://github.com/protocolbuffers/protobuf/commit/307aeac9cf1b31a217921198e46a847179723240) - Fail building descriptors if
ctype
is used for fields other than string or bytes. (https://github.com/protocolbuffers/protobuf/commit/403e2078b4501359f04b2c0b60bf37b9305a9e0e) - Fix generation of
HasExtension
andExtensionSize
functions to restrict to the (https://github.com/protocolbuffers/protobuf/commit/9f5be076540d3b7374987ba42499080075dd6678) - Add the privacy manifest to the C++ CocoaPod. (https://github.com/protocolbuffers/protobuf/commit/982ea24a9471f5bfbf411568aec8c938dfa7f5ae)
Java
- Lazily resolve features for proto2 and proto3 for compatibility with old open source gencode that does not invoke feature resolution from gencode static init. (#16907) (https://github.com/protocolbuffers/protobuf/commit/4483c6bb28a117a3c9e635a5a87465278218b6c7)
- Add
java
to reserved names to escape extensions tojava_
. This may break existing references to gencode for extensions namedjava
. (https://github.com/protocolbuffers/protobuf/commit/c18cb9578209b74038e663fe62398b8f9633ccce) - Deprecate building from source with Maven to be removed in 4.28.x. (https://github.com/protocolbuffers/protobuf/commit/51b48a47913516f9985b232c0ed6e05d4631f753)
- Split bootstrapped
java_features.proto
to keep it from leaking out. (https://github.com/protocolbuffers/protobuf/commit/d56cb7d768e19f5b64b49ff6fd91688973bdedb6) - Refactored the Java generator into separate packages and targets. (https://github.com/protocolbuffers/protobuf/commit/bd81fd95f30af51e86a36cf0279abec17890a324)
- Define lifetimes of edition 2023 features (https://github.com/protocolbuffers/protobuf/commit/77f62de93e2e84d6aab0364629919779970fb9f1)
- Check that size is non-negative when reading string or bytes in
StreamDecoder
. (https://github.com/protocolbuffers/protobuf/commit/a94f57bd69e9a5999ba67736e4d70a9d7f96aaf5) - Fix text-format delimited field handling (https://github.com/protocolbuffers/protobuf/commit/29c69ff00b58b60e67fcf40fd810009bd39b86c6)
- Move
java_features.proto
tojava/core/srce/main/resources
(https://github.com/protocolbuffers/protobuf/commit/274bc7f26ff9da996714cf5cd011a7edaf6ce34c) - Add
java_features.proto
tokotlin_mvn
release (https://github.com/protocolbuffers/protobuf/commit/369732a581f44adc5a4dc5a03c866e9c7f04dc14) - Enable editions support for Java Lite. (https://github.com/protocolbuffers/protobuf/commit/500c953d105d0447479be259a5fb0b6f7124e978)
- Fix descriptor to access type via
getType()
s.t. messages using delimited encoding are consistently treated as groups for Java lite. (https://github.com/protocolbuffers/protobuf/commit/9f001a965872b1c82e0f61e53aefb92109357213) - Make
UnsafeByteOperations
stable; removing experimental annotation. (https://github.com/protocolbuffers/protobuf/commit/0070ac118863d7bfd12fa3eeab09e78178e41c65) - Fix features inheritance of
oneof
fields and extensions and fix/move unit tests to actually run. (https://github.com/protocolbuffers/protobuf/commit/eb10ebd169593600e57106d6cdc84d6ad226f9a8) - Add software prefetch to
ByteSizeLong
(https://github.com/protocolbuffers/protobuf/commit/948ca2e0f3e74a2444bc4c3cc8da1d0a4cb82058) - Rename the
includingDefaultValueWithoutPresenceFields
andalways_print_without_presence_fields
toalwaysPrintFieldsWithNoPresence
in the C++, Py and Java JSON serializers for consistency. (https://github.com/protocolbuffers/protobuf/commit/7d43131a0a3a2a7640208849eeac016c6c61374e) - Add a new
includingDefaultValueWithoutPresenceFields
option to the Java parser which is intended to replace the currentincludingDefaultValueFields
. (https://github.com/protocolbuffers/protobuf/commit/58baeb4c3b664f8918d24cef5151083d9da9767c)
Kotlin
- Add
java_features.proto
tokotlin_mvn
release (https://github.com/protocolbuffers/protobuf/commit/369732a581f44adc5a4dc5a03c866e9c7f04dc14)
Csharp
- Regenerate stale files (https://github.com/protocolbuffers/protobuf/commit/c3417f582fd3d1f825bde4edfd9dc8a9fb3ba65c)
- Optimize JSON parsing in
JsonTokenizer
. (https://github.com/protocolbuffers/protobuf/commit/68e6e3e8eecd31b0078422f688a3f01fb881d367) - Avoid string concatenation when looking up enum values by name. (https://github.com/protocolbuffers/protobuf/commit/e6684ac037940c962c7fc3bd7b247b0e583bae2e)
- Cache
StringBuilder
instances in the .NETJsonTextTokenizer
. (https://github.com/protocolbuffers/protobuf/commit/fac929d9aa607ccdfd078344ac12cee7d2b3fdda) - Enable Editions in the C# generator. (https://github.com/protocolbuffers/protobuf/commit/421040b32b002828f0a37404b62e1454fb610761)
- Runtime support for Protobuf Editions in C#. (https://github.com/protocolbuffers/protobuf/commit/450022de9939f5eaf9f33696c17005ee7609eecc)
- Tweak "group to property name" mapping for C#. Under editions, where fields using a delimited encoding have independent field names from type names, we want to use the specified field name. (https://github.com/protocolbuffers/protobuf/commit/139ea4d38525281349e38bcfadce449a6990421c)
- Ignore invalid enum string values in JSON, when invalid fields are being ignored. (https://github.com/protocolbuffers/protobuf/commit/55e50ba40679eb82269c62872116b76c5923d74d)
Objective-C
- Optimize startup be reducing selector lookup. (https://github.com/protocolbuffers/protobuf/commit/b375d010bf57a6d673125330ec47f6e6a7e03f5c)
- Add the privacy manifest to the ObjC CocoaPod. (https://github.com/protocolbuffers/protobuf/commit/0d9151519f28a2221c980594257d88c8bfe1be51)
Python
- Add temporary alias for
system_python.bzl
at previous location . (#16787) (https://github.com/protocolbuffers/protobuf/commit/ffd753fb637b35b9b9c937eec31efc532546da5d) - Implement feature lifetime validation in
protoc
and the C++ runtime. (https://github.com/protocolbuffers/protobuf/commit/b3b4497d61cabf1d0d37b10178f93c570ec67ac6) - Fix text-format delimited field handling (https://github.com/protocolbuffers/protobuf/commit/29c69ff00b58b60e67fcf40fd810009bd39b86c6)
- Python JSON parser: Ignore invalid enum string values if
ignore_unknown_fields
is set (#15887) (https://github.com/protocolbuffers/protobuf/commit/86abf35ef5ee5b1004ec11bebb36d84c2ef6645e) - Fix upb python: DO NOT create empty optional field after sorting empty repeated field (https://github.com/protocolbuffers/protobuf/commit/7cf02389b30088182269a862f235712f60ab278a)
- Enable Protobuf Python version check. (https://github.com/protocolbuffers/protobuf/commit/0442ed62cbea989742933d6c90f4f0a70078959a)
- Register Scalar/MessageMapContainerTypes as virtual subclasses of MutableMapping instead of inheriting directly. (https://github.com/protocolbuffers/protobuf/commit/5b32936822e64b796fa18fcff53df2305c6b7686)
- Rename the
includingDefaultValueWithoutPresenceFields
andalways_print_without_presence_fields
toalwaysPrintFieldsWithNoPresence
in the C++, Py and Java JSON serializers for consistency. (https://github.com/protocolbuffers/protobuf/commit/7d43131a0a3a2a7640208849eeac016c6c61374e) - Add new
including_default_value_without_presence_fields
to Python JSON serializer. (https://github.com/protocolbuffers/protobuf/commit/25c6d34d4ef6e19e490790b015764847f172a1a5) - Adhere to PEP 8 (#15127) (https://github.com/protocolbuffers/protobuf/commit/21ab7459ee43c0d5079e9f7708d453f68a5fd0e5)
PHP
- Don't break the trace (#11311) (https://github.com/protocolbuffers/protobuf/commit/d67f921f90e3aa03f65c3e1e507ca7017c8327a6)
- Fix inconsistent timestamp json encode/decode (#12396) (https://github.com/protocolbuffers/protobuf/commit/47e92cd689466a01ab128ac0bb02cfbde3a1fb46)
- Feat: more readable phpdoc escaping (#11208) (https://github.com/protocolbuffers/protobuf/commit/f929439ccd19872d71f56050e6ba7af3cd7c753c)
PHP C-Extension
- Regenerate stale files (https://github.com/protocolbuffers/protobuf/commit/c3417f582fd3d1f825bde4edfd9dc8a9fb3ba65c)
- See also UPB changes below, which may affect PHP C-Extension.
Ruby
- Add bigdecimal to dependencies (#16379) (https://github.com/protocolbuffers/protobuf/commit/d810ef6be77c079b890e92a20e5b37cfd8768a0b)
- Implement service & method descriptor lookup in Ruby (#15817) (https://github.com/protocolbuffers/protobuf/commit/2082ee8bb5a7966d7e921c848778eb0dec431d56)
- Implement edition 2023 support in all Ruby runtimes. (https://github.com/protocolbuffers/protobuf/commit/bca8fb6117cf24785edb238d96bffe2c3a6d7164)
- Ruby implement
memsize
functions for native types (#10291) (https://github.com/protocolbuffers/protobuf/commit/87cbdddbf0055d2dfeb87245984126fba7549d3e) - Moved
ObjectCache
into an internal module. (https://github.com/protocolbuffers/protobuf/commit/f824f6d0d7337b193e5a6d277236b79706a6c319) - [Ruby] Delegate difference, intersection, union from
RepeatedField
toArray
(#15652) (https://github.com/protocolbuffers/protobuf/commit/11eab86cc0ba1aecaa0dbb5e4a530cec274aa989) - Move the
RubyMessage.java
JSON "include defaults" to use alwaysPrintFieldsWithNoPresence. (https://github.com/protocolbuffers/protobuf/commit/4d23fa068a5eed1284645ef0d5ed32068986068f) - Increased the size of the error message buffer by 4x, to 511 bytes. (https://github.com/protocolbuffers/protobuf/commit/32a6f7a18c1bbf6c6eab3fa027bd0b33b62654d0)
Ruby C-Extension
- Regenerate stale files (https://github.com/protocolbuffers/protobuf/commit/c3417f582fd3d1f825bde4edfd9dc8a9fb3ba65c)
- Implement service & method descriptor lookup in Ruby (#15817) (https://github.com/protocolbuffers/protobuf/commit/2082ee8bb5a7966d7e921c848778eb0dec431d56)
- Implement edition 2023 support in all Ruby runtimes. (https://github.com/protocolbuffers/protobuf/commit/bca8fb6117cf24785edb238d96bffe2c3a6d7164)
- Ruby implement
memsize
functions for native types (#10291) (https://github.com/protocolbuffers/protobuf/commit/87cbdddbf0055d2dfeb87245984126fba7549d3e) - Moved
ObjectCache
into an internal module. (https://github.com/protocolbuffers/protobuf/commit/f824f6d0d7337b193e5a6d277236b79706a6c319) - See also UPB changes below, which may affect Ruby C-Extension.
UPB (Python/PHP/Ruby C-Extension)
- Regenerate stale files (https://github.com/protocolbuffers/protobuf/commit/c3417f582fd3d1f825bde4edfd9dc8a9fb3ba65c)
- Setup upb installation with
cmake
. (https://github.com/protocolbuffers/protobuf/commit/6898451f5e4c84e79a6f48ea6c46959960743970) - Fix text-format delimited field handling (https://github.com/protocolbuffers/protobuf/commit/29c69ff00b58b60e67fcf40fd810009bd39b86c6)
- Print non-extension fields by field number order instead of
.proto
file order. (https://github.com/protocolbuffers/protobuf/commit/8612d5e771877123e7fb74d91aaef3912a870a9a) - Implement service & method descriptor lookup in Ruby (#15817) (https://github.com/protocolbuffers/protobuf/commit/2082ee8bb5a7966d7e921c848778eb0dec431d56)
- Implement edition 2023 support in all Ruby runtimes. (https://github.com/protocolbuffers/protobuf/commit/bca8fb6117cf24785edb238d96bffe2c3a6d7164)
- Adds mutable extension accessors to the codegen for upb C for getting mutable extension messages. (https://github.com/protocolbuffers/protobuf/commit/e8244da7c65cac3a410711fd324de73b78a645e7)
- Ruby implement
memsize
functions for native types (#10291) (https://github.com/protocolbuffers/protobuf/commit/87cbdddbf0055d2dfeb87245984126fba7549d3e) - Increased the size of the error message buffer by 4x, to 511 bytes. (https://github.com/protocolbuffers/protobuf/commit/32a6f7a18c1bbf6c6eab3fa027bd0b33b62654d0)
Other
- MODULE.bazel fixes for protobuf BCR release. (#16927) (https://github.com/protocolbuffers/protobuf/commit/f396506571fa1837704588b38cfb099f36c84fe3)
- Fix whitespace merge issue in gencode (https://github.com/protocolbuffers/protobuf/commit/f8a4a6880ec6453c5a9427a240169e917eacd3a3)
- Work around windows path length limitations by moving immutable -> full in open source (new generator paths) and shortening long file names. (#16825) (https://github.com/protocolbuffers/protobuf/commit/615e7045c5cee13cff3484f67dfb5d7fdd851909)
- Move the windows path length workarounds out of protobuf-ci (https://github.com/protocolbuffers/protobuf/commit/9d715cb69d198c520a0ff953251a08ddc909f7a7)
- Update
src/file_lists.cmake
for staleness (https://github.com/protocolbuffers/protobuf/commit/cd337dda70a25ccfee0f53daf758f8516b8af0c1) - Add
system_python
toprotobuf_deps.bzl
. (https://github.com/protocolbuffers/protobuf/commit/65ee12380e284c1ca8a3a1921c2682876896a87c) - Migrate bazel tests to protobuf-ci. (https://github.com/protocolbuffers/protobuf/commit/1ee203b04546d3575b102535b57188b2ccbaaca1)
- Fix bazel cache issues in 7.0.0 (https://github.com/protocolbuffers/protobuf/commit/16acf7ed86f5fcc2f2b68b108b397412121bb6c6)
- Add redirects for C++ and Java proto rules (https://github.com/protocolbuffers/protobuf/commit/9da1b86c30a12286f63501fe7eace2153ed2bc34)
- Add redirects for proto rules (https://github.com/protocolbuffers/protobuf/commit/d4d34abd7d66dc93c8f7f52f28411cd9c2867c29)
- Feat: automate publishing releases to Bazel Central Registry (#16014) (https://github.com/protocolbuffers/protobuf/commit/d2b71b347df6c8af5c3ee1c833f41b7772e3f250)
- Add PrivacyInfo.xcprivacy (#15557) (https://github.com/protocolbuffers/protobuf/commit/684660f025703afbc4775dedf9a0bf732b696cf1)
1、 protobuf-27.0.tar.gz 5.99MB
2、 protobuf-27.0.zip 7.62MB
3、 protoc-27.0-linux-aarch_64.zip 3.05MB
4、 protoc-27.0-linux-ppcle_64.zip 3.34MB
5、 protoc-27.0-linux-s390_64.zip 3.96MB
6、 protoc-27.0-linux-x86_32.zip 3.34MB
7、 protoc-27.0-linux-x86_64.zip 3.08MB
8、 protoc-27.0-osx-aarch_64.zip 2.26MB
9、 protoc-27.0-osx-universal_binary.zip 4.45MB
10、 protoc-27.0-osx-x86_64.zip 2.24MB
11、 protoc-27.0-win32.zip 3.13MB
12、 protoc-27.0-win64.zip 3.08MB