diff --git a/Dependencies.txt b/Dependencies.txt
index ab021c4fed..2e7db0f54b 100644
--- a/Dependencies.txt
+++ b/Dependencies.txt
@@ -1,6 +1,6 @@
ZLIB=1.3.1
abseil-cpp=20240722.0
-Protobuf=v28.3
+Protobuf=v29.0
Eigen=3.4.0
Re2=2024-04-01
CoinUtils=2.11.6
diff --git a/MODULE.bazel b/MODULE.bazel
index 45719fb04a..f8a02d7a57 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -24,7 +24,7 @@ bazel_dep(name = "google_benchmark", version = "1.8.5", repo_name = "com_google_
bazel_dep(name = "googletest", version = "1.15.2", repo_name = "com_google_googletest")
bazel_dep(name = "highs", version = "1.8.1")
bazel_dep(name = "platforms", version = "0.0.10")
-bazel_dep(name = "protobuf", version = "28.3", repo_name = "com_google_protobuf")
+bazel_dep(name = "protobuf", version = "29.0", repo_name = "com_google_protobuf")
bazel_dep(name = "pybind11_abseil", version = "202402.0", repo_name = "org_pybind11_abseil")
bazel_dep(name = "pybind11_bazel", version = "2.13.6")
bazel_dep(name = "pybind11_protobuf", version = "0.0.0-20240524-1d7a729")
diff --git a/bazel/notebook_requirements.in b/bazel/notebook_requirements.in
index 42519ad128..e7f3ec2513 100644
--- a/bazel/notebook_requirements.in
+++ b/bazel/notebook_requirements.in
@@ -2,7 +2,7 @@
absl-py==2.1.0
immutabledict==3.0.0
numpy==2.1.1
-protobuf==5.28.3
+protobuf==5.29.0
requests==2.32.0
scipy==1.14.1
diff --git a/bazel/notebook_requirements.txt b/bazel/notebook_requirements.txt
index 2bd8ab8f79..f0d57c51bf 100644
--- a/bazel/notebook_requirements.txt
+++ b/bazel/notebook_requirements.txt
@@ -216,7 +216,7 @@ prometheus-client==0.17.1
# via jupyter-server
prompt-toolkit==3.0.39
# via ipython
-protobuf==5.28.3
+protobuf==5.29.0
# via
# -r bazel/notebook_requirements.in
# mypy-protobuf
diff --git a/bazel/ortools_requirements.in b/bazel/ortools_requirements.in
index fdd6cb7df1..bbb6fa5c73 100644
--- a/bazel/ortools_requirements.in
+++ b/bazel/ortools_requirements.in
@@ -2,7 +2,7 @@
absl-py==2.1.0
immutabledict==3.0.0
numpy==2.1.1
-protobuf==5.28.3
+protobuf==5.29.0
requests==2.32.3
scipy==1.14.1
diff --git a/bazel/ortools_requirements.txt b/bazel/ortools_requirements.txt
index a94c259f3a..ed900c52a4 100644
--- a/bazel/ortools_requirements.txt
+++ b/bazel/ortools_requirements.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.13
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# bazel run //bazel:ortools_requirements.update
@@ -45,7 +45,7 @@ platformdirs==3.10.0
# via
# black
# virtualenv
-protobuf==5.28.3
+protobuf==5.29.0
# via
# -r bazel/ortools_requirements.in
# mypy-protobuf
diff --git a/cmake/dependencies/CMakeLists.txt b/cmake/dependencies/CMakeLists.txt
index 952565f478..156d6de52f 100644
--- a/cmake/dependencies/CMakeLists.txt
+++ b/cmake/dependencies/CMakeLists.txt
@@ -108,10 +108,10 @@ if(BUILD_Protobuf)
FetchContent_Declare(
Protobuf
GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git"
- GIT_TAG "v28.3"
+ GIT_TAG "v29.0"
GIT_SHALLOW TRUE
GIT_SUBMODULES ""
- PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/protobuf-v28.3.patch"
+ PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/protobuf-v29.0.patch"
)
FetchContent_MakeAvailable(Protobuf)
list(POP_BACK CMAKE_MESSAGE_INDENT)
diff --git a/cmake/host.CMakeLists.txt b/cmake/host.CMakeLists.txt
index 28baee21a8..c778130230 100644
--- a/cmake/host.CMakeLists.txt
+++ b/cmake/host.CMakeLists.txt
@@ -121,9 +121,9 @@ set(protobuf_WITH_ZLIB OFF)
FetchContent_Declare(
protobuf
GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git"
- GIT_TAG "v28.3"
+ GIT_TAG "v29.0"
GIT_SUBMODULES ""
- PATCH_COMMAND git apply "${CMAKE_CURRENT_LIST_DIR}/@PATCHES_PATH@/protobuf-v28.3.patch")
+ PATCH_COMMAND git apply "${CMAKE_CURRENT_LIST_DIR}/@PATCHES_PATH@/protobuf-v29.0.patch")
FetchContent_MakeAvailable(protobuf)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
diff --git a/ortools/dotnet/Google.OrTools-full.csproj.in b/ortools/dotnet/Google.OrTools-full.csproj.in
index 86acea665e..146d715cbb 100644
--- a/ortools/dotnet/Google.OrTools-full.csproj.in
+++ b/ortools/dotnet/Google.OrTools-full.csproj.in
@@ -184,7 +184,7 @@
-
+
diff --git a/ortools/dotnet/Google.OrTools-local.csproj.in b/ortools/dotnet/Google.OrTools-local.csproj.in
index 83175a918a..3046c35785 100644
--- a/ortools/dotnet/Google.OrTools-local.csproj.in
+++ b/ortools/dotnet/Google.OrTools-local.csproj.in
@@ -172,7 +172,7 @@
-
+
diff --git a/ortools/java/pom-full.xml.in b/ortools/java/pom-full.xml.in
index 0172065fa7..3cb0a1426b 100644
--- a/ortools/java/pom-full.xml.in
+++ b/ortools/java/pom-full.xml.in
@@ -109,7 +109,7 @@
com.google.protobuf
protobuf-java
- 4.28.3
+ 4.29.0
diff --git a/ortools/java/pom-local.xml.in b/ortools/java/pom-local.xml.in
index d6544d6bca..6eec65f8dd 100644
--- a/ortools/java/pom-local.xml.in
+++ b/ortools/java/pom-local.xml.in
@@ -81,7 +81,7 @@
com.google.protobuf
protobuf-java
- 4.28.3
+ 4.29.0
diff --git a/ortools/python/setup.py.in b/ortools/python/setup.py.in
index 68fd5375ef..2aabccf3e3 100644
--- a/ortools/python/setup.py.in
+++ b/ortools/python/setup.py.in
@@ -46,7 +46,7 @@ setup(
'absl-py >= 2.0.0',
'numpy >= 1.13.3',
'pandas >= 2.0.0',
- 'protobuf >= 5.28.3,<5.29',
+ 'protobuf >= 5.29.0,<5.30',
'immutabledict >= 3.0.0',
],
package_data={
diff --git a/patches/BUILD.bazel b/patches/BUILD.bazel
index 427983058a..f112ce791d 100644
--- a/patches/BUILD.bazel
+++ b/patches/BUILD.bazel
@@ -14,7 +14,7 @@
exports_files([
"abseil-cpp-20240722.0.patch",
"highs-v1.8.1.patch",
- "protobuf-v28.3.patch",
+ "protobuf-v29.0.patch",
"pybind11_abseil.patch",
"pybind11_bazel.patch",
"pybind11_protobuf.patch",
diff --git a/patches/protobuf-v28.3.patch b/patches/protobuf-v29.0.patch
similarity index 100%
rename from patches/protobuf-v28.3.patch
rename to patches/protobuf-v29.0.patch