-
Latest Version
-
Operating System
Windows 10 (64-bit) / Windows 11
-
User Rating
Click to vote -
Author / Product
-
Filename
protoc-22.0-win64.zip
Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system.
Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of Protocol Buffers 22.0.
For those interested in downloading the most recent release of Protocol Buffers or reading our review, simply click here.
All old versions distributed on our website are completely virus-free and available for download at no cost.
We would love to hear from you
If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!
What's new in this version:
Announcements:
- This version includes breaking changes to: Cpp
- [Cpp] Migrate to Abseil's logging library
- [Cpp] proto2::Map::value_type changes to std::pair<const K, V>
- [Cpp] Mark final ZeroCopyInputStream, ZeroCopyOutputStream, and DefaultFieldComparator classes
- [Cpp] Add a dependency on Abseil
- [Cpp] Remove all autotools usage
- [Cpp] Add C++20 reserved keywords
- [Cpp] Delete Arena::Init
- [Cpp] Replace JSON parser with new implementation
- [Cpp] Make RepeatedField::GetArena non-const in order to support split RepeatedFields.
- You can refer to our migration guide for details on what C++ code changes will be necessary to be compatible with 22.0
- Protobuf News may include additional announcements or pre-announcements for upcoming changes
Compiler:
- Breaking change: Migrate to Abseil's logging library
- Add debug_redact field option to protobuf
- Protoc: accept capital X to indicate hex escape in string literals
- Gracefully handle weird placement of linebreaks around comments
- Open up visibility for some compiler internals
- Protoc: validate reserved names are identifiers
- Protoc: validate custom json_name configuration
- Protoc: fix consistency with parsing very large decimal numbers
- Use protoc version for --version
- Fix for grpc.tools #17995 & protobuf #7474 (handle UTF-8 paths in argumentfile)
- Print full path name of source .proto file on error
- Include proto message type in the annotation comments.
- Maven artifact suffix format has changed to -RCN instead of -rc-N
C++:
- Document known quirks of EnumDescriptor::is_closed() when importing across files with different syntaxes
- Add C++ support for retention attribute
- Breaking change: Migrate to Abseil's logging library
- No longer define no_threadlocal on OpenBSD
- CMake: Enable projects to set the C++ version
- Breaking Change: Add a dependency on Abseil
- Upgrade third_party/googletest submodule to current main branch
- Breaking Change: Remove all autotools usage
- CMake: use add_compile_options instead of add_definitions for compile options
- Fix #9947: make the ABI identical between debug and non-debug builds
- Allow for CMAKE_INSTALL_LIBDIR to be absolute
- Add header search paths to protobuf-c++ spec
- Cpp_generated_lib_linked support is removed in protoc
- Reduced .pb.o object file size slightly by explicitly instantiating
- Breaking Change: Add C++20 reserved keywords
- Fixed crash in ThreadLocalStorage for pre-C++17 compilers on 32-bit ARM
- Clarified that JSON API non-OK statuses are not a stable API
- Added a default implementation of MessageDifferencer::Reporter methods
- Proto2::MapPair is now an alias to std::pair
- Hide C++ RepeatedField::UnsafeArenaSwap
- Use table-driven parser for reflection based objects
- Add ARM-optimized Varint decoding functions
- Minor optimization for parsing groups
- Declare ReflectiveProtoHook class
- Reduce size of VarintParse code in protocol buffers, by calling the shared
- Avoid inlining some large heavily duplicated routines in repeated_ptr_field.h
- Add ReflectiveProtoHook to Reflection.
- Turns on table-driven parser for reflection based objects.
- Save code space by avoiding inlining of large-in-aggregate code-space MessageLite::~MessageLite destructor.
- Undefine the macro linux when compiling protobuf
- Reduce memory consumption of MessageSet parsing.
- Save code space by avoiding inlining of large-in-aggregate code-space MessageLite::~MessageLite destructor.
- Breaking Change: Delete Arena::Init
- Make a PROTOBUF_POISON/UNPOISON to reduce noise in the source
- Put alignment functions in "arena_align.h"
- Split off cleanup arena functions into "arena_cleanup.h"
- Fix signed / unsigned match in CHECK_EQ
- Kill Atomic<>. it's not pulling it's weight
- Move AllocationPolicy out of arena_impl, and unify arena_config for bazel
- Fix failure case in table-driven parser.
- Breaking Change: Replace JSON parser with new implementation
- Introduce the Printer::{SetRedactDebugString,SetRandomizeDebugString} private flags
- Introduce global flags to control Printer::{SetRedactDebugString, SetRandomizeDebugString}
- Proto3 string fields no longer trigger clang-tidy warning bugprone-branch-clone
- Fix the API of DescriptorUpgrader::set_allow_unknown_dependencies to set to True always, and to populate into the DescriptorPool as well
- Report line numbers consistently in text-format deprecated-field warnings
- Fixed C++ code generation for protos that use int32_t, uint32_t, int64_t, uint64_t, size_t as field names
- Annotate generated C++ public aliases for enum types
- Change default arena max block size from 8K to 32K
- Begin emitting semantic metadata for some C++ proto features
Java:
- Document known quirks of EnumDescriptor::is_closed() when importing across files with different syntaxes
- Use LazyStringArrayList directly in gencode
- Add Java support for retention attribute
- Expect fail when serialize inf and nan for Value.number_value in json format
- Create a helper function that can make a mutable copy of any ProtobufList
- Add debug_redact field option to protobuf
- Remove unused package private class ProtobufLists
- Mark UnmodifiableLazyStringList deprecated. UnmodifiableLazyStringList is unnecessary and will be removed in a future release
- Make emptyList public and mark the public EMPTY field as deprecated
- Enable Text format parser to skip unknown short-formed repeated fields
- Expose internal setExtension method for Kotlin
- Mark default instance as immutable first to avoid race during static initialization of default instances
- Add serialVersionUID to ByteString and subclasses
- Fix serialization warnings in generated code when compiling with Java 18 and above
- Fix Timestamps fromDate for negative 'exact second' java.sql.Timestamps
- Fix Timestamps.fromDate to correctly handle java.sql.Timestamps before unix epoch
- Performance improvement for repeated use of FieldMaskUtil#merge by caching
- Optimized Java proto serialization gencode for protos having many extension ranges with few fields in between
- More thoroughly annotate public generated code in Java lite protocol buffers
- Fixed Bug in proto3 java lite repeated enum fields. Failed to call copyOnWrite before modifying previously built message. Causes modification to already "built" messages that should be immutable
- Fix Java reflection serialization of empty packed fields
- Refactoring java full runtime to reuse sub-message builders and prepare to migrate parsing logic from parse constructor to builder
- Move proto wireformat parsing functionality from the private "parsing constructor" to the Builder class
- Change the Lite runtime to prefer merging from the wireformat into mutable messages rather than building up a new immutable object before merging. This way results in fewer allocations and copy operations.
- Make message-type extensions merge from wire-format instead of building up instances and merging afterwards. This has much better performance.
- Fix TextFormat parser to build up recurring (but supposedly not repeated) sub-messages directly from text rather than building a new sub-message and merging the fully formed message into the existing field
- Fix bug in nested builder caching logic where cleared sub-field builders would remain dirty after a clear and build in a parent layer
- Add exemplar variants of the Java Any.is() and Any.unpack() methods
- Use bit-field int values in buildPartial to skip work on unset groups
- OperaOpera 115.0 Build 5322.109 (64-bit)
- 4K Download4K Video Downloader+ 1.10.3 (64-bit)
- PhotoshopAdobe Photoshop CC 2025 26.2 (64-bit)
- OKXOKX - Buy Bitcoin or Ethereum
- iTop VPNiTop VPN 6.2.0 - Fast, Safe & Secure
- Premiere ProAdobe Premiere Pro CC 2025 25.1
- BlueStacksBlueStacks 10.41.642.1001
- Hero WarsHero Wars - Online Action Game
- TradingViewTradingView - Trusted by 60 Million Traders
- LockWiperiMyFone LockWiper (Android) 5.7.2
Comments and User Reviews