Merge 21.x back to main
diff --git a/BUILD.bazel b/BUILD.bazel
index 98584b6..e634a09 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -13,6 +13,217 @@
 exports_files(["LICENSE"])
 
 ################################################################################
+# Protobuf Runtime Library
+################################################################################
+
+cc_library(
+    name = "protobuf_lite",
+    srcs = [
+        # AUTOGEN(protobuf_lite_srcs)
+        "src/google/protobuf/any_lite.cc",
+        "src/google/protobuf/arena.cc",
+        "src/google/protobuf/arenastring.cc",
+        "src/google/protobuf/arenaz_sampler.cc",
+        "src/google/protobuf/extension_set.cc",
+        "src/google/protobuf/generated_enum_util.cc",
+        "src/google/protobuf/generated_message_tctable_lite.cc",
+        "src/google/protobuf/generated_message_util.cc",
+        "src/google/protobuf/implicit_weak_message.cc",
+        "src/google/protobuf/inlined_string_field.cc",
+        "src/google/protobuf/io/coded_stream.cc",
+        "src/google/protobuf/io/io_win32.cc",
+        "src/google/protobuf/io/strtod.cc",
+        "src/google/protobuf/io/zero_copy_stream.cc",
+        "src/google/protobuf/io/zero_copy_stream_impl.cc",
+        "src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
+        "src/google/protobuf/map.cc",
+        "src/google/protobuf/message_lite.cc",
+        "src/google/protobuf/parse_context.cc",
+        "src/google/protobuf/repeated_field.cc",
+        "src/google/protobuf/repeated_ptr_field.cc",
+        "src/google/protobuf/stubs/bytestream.cc",
+        "src/google/protobuf/stubs/common.cc",
+        "src/google/protobuf/stubs/int128.cc",
+        "src/google/protobuf/stubs/status.cc",
+        "src/google/protobuf/stubs/statusor.cc",
+        "src/google/protobuf/stubs/stringpiece.cc",
+        "src/google/protobuf/stubs/stringprintf.cc",
+        "src/google/protobuf/stubs/structurally_valid.cc",
+        "src/google/protobuf/stubs/strutil.cc",
+        "src/google/protobuf/stubs/time.cc",
+        "src/google/protobuf/wire_format_lite.cc",
+    ],
+    hdrs = glob([
+        "src/google/protobuf/**/*.h",
+        "src/google/protobuf/**/*.inc",
+    ]),
+    copts = COPTS,
+    includes = ["src/"],
+    linkopts = LINK_OPTS,
+    visibility = ["//visibility:public"],
+)
+
+cc_library(
+    name = "protobuf",
+    srcs = [
+        # AUTOGEN(protobuf_srcs)
+        "src/google/protobuf/any.cc",
+        "src/google/protobuf/any.pb.cc",
+        "src/google/protobuf/api.pb.cc",
+        "src/google/protobuf/compiler/importer.cc",
+        "src/google/protobuf/compiler/parser.cc",
+        "src/google/protobuf/descriptor.cc",
+        "src/google/protobuf/descriptor.pb.cc",
+        "src/google/protobuf/descriptor_database.cc",
+        "src/google/protobuf/duration.pb.cc",
+        "src/google/protobuf/dynamic_message.cc",
+        "src/google/protobuf/empty.pb.cc",
+        "src/google/protobuf/extension_set_heavy.cc",
+        "src/google/protobuf/field_mask.pb.cc",
+        "src/google/protobuf/generated_message_bases.cc",
+        "src/google/protobuf/generated_message_reflection.cc",
+        "src/google/protobuf/generated_message_tctable_full.cc",
+        "src/google/protobuf/io/gzip_stream.cc",
+        "src/google/protobuf/io/printer.cc",
+        "src/google/protobuf/io/tokenizer.cc",
+        "src/google/protobuf/map_field.cc",
+        "src/google/protobuf/message.cc",
+        "src/google/protobuf/reflection_ops.cc",
+        "src/google/protobuf/service.cc",
+        "src/google/protobuf/source_context.pb.cc",
+        "src/google/protobuf/struct.pb.cc",
+        "src/google/protobuf/stubs/substitute.cc",
+        "src/google/protobuf/text_format.cc",
+        "src/google/protobuf/timestamp.pb.cc",
+        "src/google/protobuf/type.pb.cc",
+        "src/google/protobuf/unknown_field_set.cc",
+        "src/google/protobuf/util/delimited_message_util.cc",
+        "src/google/protobuf/util/field_comparator.cc",
+        "src/google/protobuf/util/field_mask_util.cc",
+        "src/google/protobuf/util/internal/datapiece.cc",
+        "src/google/protobuf/util/internal/default_value_objectwriter.cc",
+        "src/google/protobuf/util/internal/error_listener.cc",
+        "src/google/protobuf/util/internal/field_mask_utility.cc",
+        "src/google/protobuf/util/internal/json_escaping.cc",
+        "src/google/protobuf/util/internal/json_objectwriter.cc",
+        "src/google/protobuf/util/internal/json_stream_parser.cc",
+        "src/google/protobuf/util/internal/object_writer.cc",
+        "src/google/protobuf/util/internal/proto_writer.cc",
+        "src/google/protobuf/util/internal/protostream_objectsource.cc",
+        "src/google/protobuf/util/internal/protostream_objectwriter.cc",
+        "src/google/protobuf/util/internal/type_info.cc",
+        "src/google/protobuf/util/internal/utility.cc",
+        "src/google/protobuf/util/json_util.cc",
+        "src/google/protobuf/util/message_differencer.cc",
+        "src/google/protobuf/util/time_util.cc",
+        "src/google/protobuf/util/type_resolver_util.cc",
+        "src/google/protobuf/wire_format.cc",
+        "src/google/protobuf/wrappers.pb.cc",
+    ],
+    hdrs = glob([
+        "src/**/*.h",
+        "src/**/*.inc",
+    ]),
+    copts = COPTS,
+    includes = ["src/"],
+    linkopts = LINK_OPTS,
+    visibility = ["//visibility:public"],
+    deps = [":protobuf_lite"] + select({
+        "//build_defs:config_msvc": [],
+        "//conditions:default": ["@zlib//:zlib"],
+    }),
+)
+
+# This provides just the header files for use in projects that need to build
+# shared libraries for dynamic loading. This target is available until Bazel
+# adds native support for such use cases.
+# TODO(keveman): Remove this target once the support gets added to Bazel.
+cc_library(
+    name = "protobuf_headers",
+    hdrs = glob([
+        "src/**/*.h",
+        "src/**/*.inc",
+    ]),
+    includes = ["src/"],
+    visibility = ["//visibility:public"],
+)
+
+filegroup(
+    name = "well_known_type_protos",
+    srcs = [
+        "src/google/protobuf/any.proto",
+        "src/google/protobuf/api.proto",
+        "src/google/protobuf/duration.proto",
+        "src/google/protobuf/empty.proto",
+        "src/google/protobuf/field_mask.proto",
+        "src/google/protobuf/source_context.proto",
+        "src/google/protobuf/struct.proto",
+        "src/google/protobuf/timestamp.proto",
+        "src/google/protobuf/type.proto",
+        "src/google/protobuf/wrappers.proto",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+filegroup(
+    name = "built_in_runtime_protos",
+    srcs = [
+        "src/google/protobuf/compiler/plugin.proto",
+        "src/google/protobuf/descriptor.proto",
+    ],
+    visibility = ["//:__subpackages__"],
+)
+
+exports_files(
+    srcs = [
+        "src/google/protobuf/any.proto",
+        "src/google/protobuf/api.proto",
+        "src/google/protobuf/compiler/plugin.proto",
+        "src/google/protobuf/descriptor.proto",
+        "src/google/protobuf/duration.proto",
+        "src/google/protobuf/empty.proto",
+        "src/google/protobuf/field_mask.proto",
+        "src/google/protobuf/source_context.proto",
+        "src/google/protobuf/struct.proto",
+        "src/google/protobuf/timestamp.proto",
+        "src/google/protobuf/type.proto",
+        "src/google/protobuf/wrappers.proto",
+    ],
+    visibility = ["//pkg:__pkg__"],
+)
+
+alias(
+    name = "lite_well_known_protos",
+    actual = ":well_known_type_protos",
+    visibility = ["//visibility:public"],
+)
+
+adapt_proto_library(
+    name = "cc_wkt_protos_genproto",
+    visibility = ["//visibility:public"],
+    deps = [
+        "//:any_proto",
+        "//:api_proto",
+        "//:compiler_plugin_proto",
+        "//:descriptor_proto",
+        "//:duration_proto",
+        "//:empty_proto",
+        "//:field_mask_proto",
+        "//:source_context_proto",
+        "//:struct_proto",
+        "//:timestamp_proto",
+        "//:type_proto",
+        "//:wrappers_proto",
+    ],
+)
+
+cc_library(
+    name = "cc_wkt_protos",
+    deprecation = "Only for backward compatibility. Do not use.",
+    visibility = ["//visibility:public"],
+)
+
+################################################################################
 # Well Known Types Proto Library Rules
 #
 # https://developers.google.com/protocol-buffers/docs/reference/google.protobuf
diff --git a/CHANGES.txt b/CHANGES.txt
index ffb9c08..7571a8d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,23 @@
+2022-05-19 version 21.0-rc2(C++/Java/Python/PHP/Objective-C/C#/Ruby)
+
+  Python
+  * Fix windows builds
+  * Throw more helpful error if generated code is out of date
+  * Fixed two reference leaks
+
+  Ruby
+  * Support x64-mingw-ucrt platform
+
+  PHP
+  * Fix SEGV by not writing to shared memory for zend_class_entry
+
+  C#
+  * Suppress warning CS8981
+
+  Other
+  * Fix Maven release to release actual osx_aarch64 binary
+  * Fix protoc zips to have the proto files for well known types
+
 2022-05-10 version 21.0-rc1 (C++/Java/Python/PHP/Objective-C/C#/Ruby)
 
   C++
diff --git a/Protobuf-C++.podspec b/Protobuf-C++.podspec
index 9d8815a..1297ad3 100644
--- a/Protobuf-C++.podspec
+++ b/Protobuf-C++.podspec
@@ -1,6 +1,6 @@
 Pod::Spec.new do |s|
   s.name     = 'Protobuf-C++'
-  s.version  = '3.21.0-rc1'
+  s.version  = '3.21.0-rc2'
   s.summary  = 'Protocol Buffers v3 runtime library for C++.'
   s.homepage = 'https://github.com/google/protobuf'
   s.license  = 'BSD-3-Clause'
@@ -8,7 +8,7 @@
   s.cocoapods_version = '>= 1.0'
 
   s.source = { :git => 'https://github.com/google/protobuf.git',
-               :tag => "v#{s.version}" }
+               :tag => "v21.0-rc2" }
 
   s.source_files = 'src/google/protobuf/*.{h,cc,inc}',
                    'src/google/protobuf/stubs/*.{h,cc}',
diff --git a/Protobuf.podspec b/Protobuf.podspec
index 37d7fc9..643635d 100644
--- a/Protobuf.podspec
+++ b/Protobuf.podspec
@@ -5,7 +5,7 @@
 # dependent projects use the :git notation to refer to the library.
 Pod::Spec.new do |s|
   s.name     = 'Protobuf'
-  s.version  = '3.21.0-rc1'
+  s.version  = '3.21.0-rc2'
   s.summary  = 'Protocol Buffers v.3 runtime library for Objective-C.'
   s.homepage = 'https://github.com/protocolbuffers/protobuf'
   s.license  = 'BSD-3-Clause'
@@ -13,7 +13,7 @@
   s.cocoapods_version = '>= 1.0'
 
   s.source = { :git => 'https://github.com/protocolbuffers/protobuf.git',
-               :tag => "v#{s.version}" }
+               :tag => "v21.0-rc2" }
 
   s.source_files = 'objectivec/*.{h,m}',
                    'objectivec/google/protobuf/Any.pbobjc.h',
diff --git a/configure.ac b/configure.ac
index 7cf5200..61246b2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@
 # In the SVN trunk, the version should always be the next anticipated release
 # version with the "-pre" suffix.  (We used to use "-SNAPSHOT" but this pushed
 # the size of one file name in the dist tarfile over the 99-char limit.)
-AC_INIT([Protocol Buffers],[3.21.0-rc-1],[protobuf@googlegroups.com],[protobuf])
+AC_INIT([Protocol Buffers],[3.21.0-rc-2],[protobuf@googlegroups.com],[protobuf])
 
 AM_MAINTAINER_MODE([enable])
 
diff --git a/csharp/Google.Protobuf.Tools.nuspec b/csharp/Google.Protobuf.Tools.nuspec
index 25c0609..92a860e 100644
--- a/csharp/Google.Protobuf.Tools.nuspec
+++ b/csharp/Google.Protobuf.Tools.nuspec
@@ -5,7 +5,7 @@
     <title>Google Protocol Buffers tools</title>
     <summary>Tools for Protocol Buffers - Google's data interchange format.</summary>
     <description>See project site for more info.</description>
-    <version>3.21.0-rc1</version>
+    <version>3.21.0-rc2</version>
     <authors>Google Inc.</authors>
     <owners>protobuf-packages</owners>
     <licenseUrl>https://github.com/protocolbuffers/protobuf/blob/main/LICENSE</licenseUrl>
diff --git a/csharp/src/Google.Protobuf/Google.Protobuf.csproj b/csharp/src/Google.Protobuf/Google.Protobuf.csproj
index 40986da..d634551 100644
--- a/csharp/src/Google.Protobuf/Google.Protobuf.csproj
+++ b/csharp/src/Google.Protobuf/Google.Protobuf.csproj
@@ -4,7 +4,7 @@
     <Description>C# runtime library for Protocol Buffers - Google's data interchange format.</Description>
     <Copyright>Copyright 2015, Google Inc.</Copyright>
     <AssemblyTitle>Google Protocol Buffers</AssemblyTitle>
-    <VersionPrefix>3.21.0-rc1</VersionPrefix>
+    <VersionPrefix>3.21.0-rc2</VersionPrefix>
     <!-- C# 7.2 is required for Span/BufferWriter/ReadOnlySequence -->
     <LangVersion>7.2</LangVersion>
     <Authors>Google Inc.</Authors>
diff --git a/java/README.md b/java/README.md
index 41cbc86..1fbc624 100644
--- a/java/README.md
+++ b/java/README.md
@@ -23,7 +23,7 @@
 <dependency>
   <groupId>com.google.protobuf</groupId>
   <artifactId>protobuf-java</artifactId>
-  <version>3.21.0-rc-1</version>
+  <version>3.21.0-rc-2</version>
 </dependency>
 ```
 
@@ -37,7 +37,7 @@
 <dependency>
   <groupId>com.google.protobuf</groupId>
   <artifactId>protobuf-java-util</artifactId>
-  <version>3.21.0-rc-1</version>
+  <version>3.21.0-rc-2</version>
 </dependency>
 ```
 
@@ -45,7 +45,7 @@
 
 If you are using Gradle, add the following to your `build.gradle` file's dependencies:
 ```
-    implementation 'com.google.protobuf:protobuf-java:3.21.0-rc-1'
+    implementation 'com.google.protobuf:protobuf-java:3.21.0-rc-2'
 ```
 Again, be sure to check that the version number matches (or is newer than) the version number of protoc that you are using.
 
diff --git a/java/bom/pom.xml b/java/bom/pom.xml
index ce950a2..a770cbb 100644
--- a/java/bom/pom.xml
+++ b/java/bom/pom.xml
@@ -4,7 +4,7 @@
 
   <groupId>com.google.protobuf</groupId>
   <artifactId>protobuf-bom</artifactId>
-  <version>3.21.0-rc-1</version>
+  <version>3.21.0-rc-2</version>
   <packaging>pom</packaging>
 
   <name>Protocol Buffers [BOM]</name>
diff --git a/java/core/pom.xml b/java/core/pom.xml
index 8a33a50..bffa295 100644
--- a/java/core/pom.xml
+++ b/java/core/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.21.0-rc-1</version>
+    <version>3.21.0-rc-2</version>
   </parent>
 
   <artifactId>protobuf-java</artifactId>
diff --git a/java/kotlin-lite/pom.xml b/java/kotlin-lite/pom.xml
index a4737d8..fd3734d 100644
--- a/java/kotlin-lite/pom.xml
+++ b/java/kotlin-lite/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.21.0-rc-1</version>
+    <version>3.21.0-rc-2</version>
   </parent>
 
   <artifactId>protobuf-kotlin-lite</artifactId>
diff --git a/java/kotlin/pom.xml b/java/kotlin/pom.xml
index a3f6640..c9eeb6d 100644
--- a/java/kotlin/pom.xml
+++ b/java/kotlin/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.21.0-rc-1</version>
+    <version>3.21.0-rc-2</version>
   </parent>
 
   <artifactId>protobuf-kotlin</artifactId>
diff --git a/java/lite.md b/java/lite.md
index fd6c163..633478b 100644
--- a/java/lite.md
+++ b/java/lite.md
@@ -29,7 +29,7 @@
 <dependency>
   <groupId>com.google.protobuf</groupId>
   <artifactId>protobuf-javalite</artifactId>
-  <version>3.21.0-rc-1</version>
+  <version>3.21.0-rc-2</version>
 </dependency>
 ```
 
diff --git a/java/lite/pom.xml b/java/lite/pom.xml
index d62c1b3..c10edfd 100644
--- a/java/lite/pom.xml
+++ b/java/lite/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.21.0-rc-1</version>
+    <version>3.21.0-rc-2</version>
   </parent>
 
   <artifactId>protobuf-javalite</artifactId>
diff --git a/java/pom.xml b/java/pom.xml
index a1d6ab0..467c06d 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -4,7 +4,7 @@
 
   <groupId>com.google.protobuf</groupId>
   <artifactId>protobuf-parent</artifactId>
-  <version>3.21.0-rc-1</version>
+  <version>3.21.0-rc-2</version>
   <packaging>pom</packaging>
 
   <name>Protocol Buffers [Parent]</name>
diff --git a/java/util/pom.xml b/java/util/pom.xml
index f20e1e5..a12fd22 100644
--- a/java/util/pom.xml
+++ b/java/util/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.google.protobuf</groupId>
     <artifactId>protobuf-parent</artifactId>
-    <version>3.21.0-rc-1</version>
+    <version>3.21.0-rc-2</version>
   </parent>
 
   <artifactId>protobuf-java-util</artifactId>
diff --git a/php/ext/google/protobuf/package.xml b/php/ext/google/protobuf/package.xml
index d1d5d87..deda5c5 100644
--- a/php/ext/google/protobuf/package.xml
+++ b/php/ext/google/protobuf/package.xml
@@ -10,10 +10,10 @@
   <email>protobuf-opensource@google.com</email>
   <active>yes</active>
  </lead>
- <date>2022-05-10</date>
- <time>11:33:40</time>
+ <date>2022-05-19</date>
+ <time>13:35:18</time>
  <version>
-  <release>3.21.0RC1</release>
+  <release>3.21.0RC2</release>
   <api>3.21.0</api>
  </version>
  <stability>
@@ -1298,5 +1298,20 @@
    <notes>
    </notes>
   </release>
+  <release>
+   <version>
+    <release>3.21.0RC2</release>
+    <api>3.21.0</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2022-05-19</date>
+   <time>13:35:18</time>
+   <license uri="https://opensource.org/licenses/BSD-3-Clause">BSD-3-Clause</license>
+   <notes>
+   </notes>
+  </release>
  </changelog>
 </package>
diff --git a/php/ext/google/protobuf/protobuf.h b/php/ext/google/protobuf/protobuf.h
index 292a0ee..f95179b 100644
--- a/php/ext/google/protobuf/protobuf.h
+++ b/php/ext/google/protobuf/protobuf.h
@@ -127,7 +127,7 @@
   ZEND_ARG_INFO(0, value)
 ZEND_END_ARG_INFO()
 
-#define PHP_PROTOBUF_VERSION "3.21.0RC1"
+#define PHP_PROTOBUF_VERSION "3.21.0RC2"
 
 // ptr -> PHP object cache. This is a weak map that caches lazily-created
 // wrapper objects around upb types:
diff --git a/pkg/BUILD.bazel b/pkg/BUILD.bazel
index f01b517..93d816e 100644
--- a/pkg/BUILD.bazel
+++ b/pkg/BUILD.bazel
@@ -16,17 +16,27 @@
 
 pkg_files(
     name = "wkt_protos_files",
-    srcs = ["//src/google/protobuf:well_known_type_protos"],
+    srcs = [
+        "//:src/google/protobuf/any.proto",
+        "//:src/google/protobuf/api.proto",
+        "//:src/google/protobuf/descriptor.proto",
+        "//:src/google/protobuf/duration.proto",
+        "//:src/google/protobuf/empty.proto",
+        "//:src/google/protobuf/field_mask.proto",
+        "//:src/google/protobuf/source_context.proto",
+        "//:src/google/protobuf/struct.proto",
+        "//:src/google/protobuf/timestamp.proto",
+        "//:src/google/protobuf/type.proto",
+        "//:src/google/protobuf/wrappers.proto",
+    ],
     prefix = "include/google/protobuf",
     visibility = ["//visibility:private"],
 )
 
 pkg_files(
-    name = "descriptor_protos_files",
-    srcs = [
-        "//:descriptor_proto",
-    ],
-    prefix = "include/google/protobuf",
+    name = "compiler_plugin_protos_files",
+    srcs = ["//:src/google/protobuf/compiler/plugin.proto"],
+    prefix = "include/google/protobuf/compiler",
     visibility = ["//visibility:private"],
 )
 
@@ -65,6 +75,7 @@
 pkg_zip(
     name = "protoc_release",
     srcs = [
+        ":compiler_plugin_protos_files",
         ":descriptor_protos_files",
         ":protoc_files",
         ":protoc_readme",
diff --git a/protobuf_deps.bzl b/protobuf_deps.bzl
index 0f3c76a..362ae65 100644
--- a/protobuf_deps.bzl
+++ b/protobuf_deps.bzl
@@ -114,6 +114,6 @@
         _github_archive(
             name = "upb",
             repo = "https://github.com/protocolbuffers/upb",
-            commit = "c3cfd09b0184bcbdade71a3d788df02c83e897f2",
-            sha256 = "4a9f79385fc0c1e3e7ba5c34220db53f956c8c42d636bafc6a563da2facf8c3f",
+            commit = "12efc9b096f35b62055a217f45e6b0fe5fb1a099",
+            sha256 = "de0ab4ee1e2d8f01b494de39cd70b611e190b63943f1d5c448d4ecb9560dc16f",
         )
diff --git a/protobuf_version.bzl b/protobuf_version.bzl
index 94e2247..5725bdd 100644
--- a/protobuf_version.bzl
+++ b/protobuf_version.bzl
@@ -1,3 +1,3 @@
-PROTOC_VERSION = '21.0-rc-1'
-PROTOBUF_JAVA_VERSION = '3.21.0-rc-1'
-PROTOBUF_PYTHON_VERSION = '4.21.0-rc-1'
+PROTOC_VERSION = '21.0-rc-2'
+PROTOBUF_JAVA_VERSION = '3.21.0-rc-2'
+PROTOBUF_PYTHON_VERSION = '4.21.0-rc-2'
diff --git a/protoc-artifacts/pom.xml b/protoc-artifacts/pom.xml
index 7f285ca..80451f9 100644
--- a/protoc-artifacts/pom.xml
+++ b/protoc-artifacts/pom.xml
@@ -8,7 +8,7 @@
   </parent>
   <groupId>com.google.protobuf</groupId>
   <artifactId>protoc</artifactId>
-  <version>21.0-rc-1</version>
+  <version>3.21.0-rc-2</version>
   <packaging>pom</packaging>
   <name>Protobuf Compiler</name>
   <description>
@@ -71,11 +71,7 @@
                   <type>exe</type>
                 </artifact>
                 <artifact>
-                  <!-- Reuse a compatible osx-x86_64 version until binary
-                       support for osx-aarch_64 is added. TODO: use
-                       <file>${basedir}/target/osx/aarch_64/protoc.exe</file>
-                       -->
-                  <file>${basedir}/target/osx/x86_64/protoc.exe</file>
+                  <file>${basedir}/target/osx/aarch_64/protoc.exe</file>
                   <classifier>osx-aarch_64</classifier>
                   <type>exe</type>
                 </artifact>
diff --git a/python/google/protobuf/__init__.py b/python/google/protobuf/__init__.py
index 49039d5..bd2faa4 100644
--- a/python/google/protobuf/__init__.py
+++ b/python/google/protobuf/__init__.py
@@ -30,4 +30,4 @@
 
 # Copyright 2007 Google Inc. All Rights Reserved.
 
-__version__ = '4.21.0rc1'
+__version__ = '4.21.0rc2'
diff --git a/ruby/google-protobuf.gemspec b/ruby/google-protobuf.gemspec
index ff55b64..f86cda7 100644
--- a/ruby/google-protobuf.gemspec
+++ b/ruby/google-protobuf.gemspec
@@ -1,6 +1,6 @@
 Gem::Specification.new do |s|
   s.name        = "google-protobuf"
-  s.version     = "3.21.0.rc.1"
+  s.version     = "3.21.0.rc.2"
   git_tag       = "v#{s.version.to_s.sub('.rc.', '-rc')}" # Converts X.Y.Z.rc.N to vX.Y.Z-rcN, used for the git tag
   s.licenses    = ["BSD-3-Clause"]
   s.summary     = "Protocol Buffers"
diff --git a/ruby/pom.xml b/ruby/pom.xml
index 0d53cd1..0514dbe 100644
--- a/ruby/pom.xml
+++ b/ruby/pom.xml
@@ -9,7 +9,7 @@
 
     <groupId>com.google.protobuf.jruby</groupId>
     <artifactId>protobuf-jruby</artifactId>
-    <version>3.21.0-rc-1</version>
+    <version>3.21.0-rc-2</version>
     <name>Protocol Buffer JRuby native extension</name>
     <description>
       Protocol Buffers are a way of encoding structured data in an efficient yet
@@ -76,7 +76,7 @@
         <dependency>
           <groupId>com.google.protobuf</groupId>
           <artifactId>protobuf-java-util</artifactId>
-          <version>3.21.0-rc-1</version>
+          <version>3.21.0-rc-2</version>
         </dependency>
         <dependency>
             <groupId>org.jruby</groupId>
diff --git a/src/google/protobuf/port_def.inc b/src/google/protobuf/port_def.inc
index 0335630..78b97e6 100644
--- a/src/google/protobuf/port_def.inc
+++ b/src/google/protobuf/port_def.inc
@@ -193,7 +193,7 @@
 #ifdef PROTOBUF_VERSION_SUFFIX
 #error PROTOBUF_VERSION_SUFFIX was previously defined
 #endif
-#define PROTOBUF_VERSION_SUFFIX "-rc1"
+#define PROTOBUF_VERSION_SUFFIX "-rc2"
 
 #if defined(PROTOBUF_NAMESPACE) || defined(PROTOBUF_NAMESPACE_ID)
 #error PROTOBUF_NAMESPACE or PROTOBUF_NAMESPACE_ID was previously defined
diff --git a/src/google/protobuf/stubs/common.h b/src/google/protobuf/stubs/common.h
index 8b581ba..36a4b08 100644
--- a/src/google/protobuf/stubs/common.h
+++ b/src/google/protobuf/stubs/common.h
@@ -85,7 +85,7 @@
 #define GOOGLE_PROTOBUF_VERSION 3021000
 
 // A suffix string for alpha, beta or rc releases. Empty for stable releases.
-#define GOOGLE_PROTOBUF_VERSION_SUFFIX "-rc1"
+#define GOOGLE_PROTOBUF_VERSION_SUFFIX "-rc2"
 
 // The minimum header version which works with the current version of
 // the library.  This constant should only be used by protoc's C++ code