v3.20.0
版本发布时间: 2022-03-26 00:08:25
protocolbuffers/protobuf最新发布版本:v28.1(2024-09-12 01:21:10)
2022-03-25 version 3.20.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript)
Ruby
- Dropped Ruby 2.3 and 2.4 support for CI and releases. (#9311)
- Added Ruby 3.1 support for CI and releases (#9566).
- Message.decode/encode: Add recursion_limit option (#9218/#9486)
- Allocate with xrealloc()/xfree() so message allocation is visible to the Ruby GC. In certain tests this leads to much lower memory usage due to more frequent GC runs (#9586).
- Fix conversion of singleton classes in Ruby (#9342)
- Suppress warning for intentional circular require (#9556)
- JSON will now output shorter strings for double and float fields when possible without losing precision.
- Encoding and decoding of binary format will now work properly on big-endian systems.
- UTF-8 verification was fixed to properly reject surrogate code points.
- Unknown enums for proto2 protos now properly implement proto2's behavior of putting such values in unknown fields.
Java
- Revert "Standardize on Array copyOf" (#9400)
- Resolve more java field accessor name conflicts (#8198)
- Don't support map fields in DynamicMessage.Builder.{getFieldBuilder,getRepeatedFieldBuilder}
- Fix parseFrom to only throw InvalidProtocolBufferException
- InvalidProtocolBufferException now allows arbitrary wrapped Exception types.
- Fix bug in
FieldSet.Builder.mergeFrom
- Flush CodedOutputStream also flushes underlying OutputStream
- When oneof case is the same and the field type is Message, merge the subfield. (previously it was replaced.)’
- Add @CheckReturnValue to some protobuf types
- Report original exceptions when parsing JSON
- Add more info to @deprecated javadoc for set/get/has methods
- Fix initialization bug in doc comment line numbers
- Fix comments for message set wire format.
Kotlin
- Add test scope to kotlin-test for protobuf-kotlin-lite (#9518)
- Add orNull extensions for optional message fields.
- Add orNull extensions to all proto3 message fields.
Python
- Dropped support for Python < 3.7 (#9480)
- Protoc is now able to generate python stubs (.pyi) with --pyi_out
- Pin multibuild scripts to get manylinux1 wheels back (#9216)
- Fix type annotations of some Duration and Timestamp methods.
- Repeated field containers are now generic in field types and could be used in type annotations. *[Breaking change] Protobuf python generated codes are simplified. Descriptors and message classes' definitions are now dynamic created in internal/builder.py. Insertion Points for messages classes are discarded.
- has_presence is added for FieldDescriptor in python
- Loosen indexing type requirements to allow valid index() implementations rather than only PyLongObjects.
- Fix the deepcopy bug caused by not copying message_listener.
- Added python JSON parse recursion limit (default 100)
- Path info is added for python JSON parse errors
- Pure python repeated scalar fields will not able to pickle. Convert to list first.
- Timestamp.ToDatetime() now accepts an optional tzinfo parameter. If specified, the function returns a timezone-aware datetime in the given time zone. If omitted or None, the function returns a timezone-naive UTC datetime (as previously).
- Adds client_streaming and server_streaming fields to MethodDescriptor.
- Add "ensure_ascii" parameter to json_format.MessageToJson. This allows smaller JSON serializations with UTF-8 or other non-ASCII encodings.
- Added experimental support for directly assigning numpy scalars and array.
- Improve the calculation of public_dependencies in DescriptorPool.
- [Breaking Change] Disallow setting fields to numpy singleton arrays or repeated fields to numpy multi-dimensional arrays. Numpy arrays should be indexed or flattened explicitly before assignment.
Compiler
- Migrate IsDefault(const std::string*) and UnsafeSetDefault(const std::string*)
- Implement strong qualified tags for TaggedPtr
- Rework allocations to power-of-two byte sizes.
- Migrate IsDefault(const std::string*) and UnsafeSetDefault(const std::string*)
- Implement strong qualified tags for TaggedPtr
- Make TaggedPtr Set...() calls explicitly spell out the content type.
- Check for parsing error before verifying UTF8.
- Enforce a maximum message nesting limit of 32 in the descriptor builder to guard against stack overflows
- Fixed bugs in operators for RepeatedPtrIterator
- Assert a maximum map alignment for allocated values
- Fix proto1 group extension protodb parsing error
- Do not log/report the same descriptor symbol multiple times if it contains more than one invalid character.
- Add UnknownFieldSet::SerializeToString and SerializeToCodedStream.
- Remove explicit default pointers and deprecated API from protocol compiler
Arenas
- Change Repeated*Field to reuse memory when using arenas.
- Implements pbarenaz for profiling proto arenas
- Introduce CreateString() and CreateArenaString() for cleaner semantics
- Fix unreferenced parameter for MSVC builds
- Add UnsafeSetAllocated to be used for one-of string fields.
- Make Arena::AllocateAligned() a public function.
- Determine if ArenaDtor related code generation is necessary in one place.
- Implement on demand register ArenaDtor for InlinedStringField
C++
- Enable testing via CTest (#8737)
- Add option to use external GTest in CMake (#8736)
- CMake: Set correct sonames for libprotobuf-lite.so and libprotoc.so (#8635) (#9529)
- Add cmake option
protobuf_INSTALL
to not install files (#7123) - CMake: Allow custom plugin options e.g. to generate mocks (#9105)
- CMake: Use linker version scripts (#9545)
- Manually *struct Cord fields to work better with arenas.
- Manually destruct map fields.
- Generate narrower code
- Fix https://github.com/protocolbuffers/protobuf/issues/9378 by removing shadowed cached_size field
- Remove GetPointer() and explicit nullptr defaults.
- Add proto_h flag for speeding up large builds
- Add missing overload for reference wrapped fields.
- Add MergedDescriptorDatabase::FindAllFileNames()
- RepeatedField now defines an iterator type instead of using a pointer.
- Remove obsolete macros GOOGLE_PROTOBUF_HAS_ONEOF and GOOGLE_PROTOBUF_HAS_ARENAS.
PHP
- Fix: add missing reserved classnames (#9458)
- PHP 8.1 compatibility (#9370)
C#
- Fix trim warnings (#9182)
- Fixes NullReferenceException when accessing FieldDescriptor.IsPacked (#9430)
- Add ToProto() method to all descriptor classes (#9426)
- Add an option to preserve proto names in JsonFormatter (#6307)
Objective-C
- Add prefix_to_proto_package_mappings_path option. (#9498)
- Rename
proto_package_to_prefix_mappings_path
topackage_to_prefix_mappings_path
. (#9552) - Add a generation option to control use of forward declarations in headers. (#9568)
1、 protobuf-all-3.20.0.tar.gz 7.45MB
2、 protobuf-all-3.20.0.zip 9.66MB
3、 protobuf-cpp-3.20.0.tar.gz 4.61MB
4、 protobuf-cpp-3.20.0.zip 5.61MB
5、 protobuf-csharp-3.20.0.tar.gz 5.33MB
6、 protobuf-csharp-3.20.0.zip 6.57MB
7、 protobuf-java-3.20.0.tar.gz 5.29MB
8、 protobuf-java-3.20.0.zip 6.66MB
9、 protobuf-js-3.20.0.tar.gz 4.86MB
10、 protobuf-js-3.20.0.zip 6MB
11、 protobuf-objectivec-3.20.0.tar.gz 4.99MB
12、 protobuf-objectivec-3.20.0.zip 6.15MB
13、 protobuf-php-3.20.0.tar.gz 4.91MB
14、 protobuf-php-3.20.0.zip 6.03MB
15、 protobuf-python-3.20.0.tar.gz 4.92MB
16、 protobuf-python-3.20.0.zip 6.04MB
17、 protobuf-ruby-3.20.0.tar.gz 4.83MB
18、 protobuf-ruby-3.20.0.zip 5.89MB
19、 protoc-3.20.0-linux-aarch_64.zip 1.72MB
20、 protoc-3.20.0-linux-ppcle_64.zip 1.86MB
21、 protoc-3.20.0-linux-s390_64.zip 2.01MB
22、 protoc-3.20.0-linux-x86_32.zip 1.57MB
23、 protoc-3.20.0-linux-x86_64.zip 1.64MB
24、 protoc-3.20.0-osx-aarch_64.zip 2.58MB
25、 protoc-3.20.0-osx-x86_64.zip 2.58MB
26、 protoc-3.20.0-win32.zip 1.14MB
27、 protoc-3.20.0-win64.zip 1.47MB