This is an automated email from the ASF dual-hosted git repository.
philo-he pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git
The following commit(s) were added to refs/heads/main by this push:
new 3a13aefc7a [GLUTEN-6887][VL] Daily Update Velox Version (2026_06_12)
(#12281)
3a13aefc7a is described below
commit 3a13aefc7ac0370550d0d066283afa41a3b84de6
Author: Gluten Performance Bot
<[email protected]>
AuthorDate: Thu Jun 18 19:17:54 2026 +0100
[GLUTEN-6887][VL] Daily Update Velox Version (2026_06_12) (#12281)
Upstream Velox's New Commits:
97d08923f by Chengcheng Jin, build(cudf): Add cudf label to cudf pull
request (#16976)
68b3e46e0 by Richard Barnes, refactor: Migrate PrestoCastHooks from
double-conversion to fast_float (#17807)
306fdacea by Krishna Pai, feat: Add forwardedProbeColumns to
IndexLookupJoinNode (#17737)
f3e7bcfc0 by Liangcai Li, fix(cudf): Evaluate row constructor dereferences
(#17460)
2c0b18f7a by Kyle Hubert, fix(cudf): Fix UCX output buffer lifetime after
async cuDF concat (#17533)
cc0fbeb76 by Luis GarcΓ©s-Erice, fix(cudf): Fix
velox_cudf_iceberg_deletion_vector_test (#17767)
683337aaf by Anup Kesavan, refactor(parquet): Avoid copying logical type
(#17782)
25f1fe493 by Orri Erling, feat: Support in-place ops, fix fused/standalone
syncs, broadcast shapes (#17770)
e5d15ee37 by Xiaoxuan Meng, feat: Add synchronous io_uring batch reads for
local files (#17788)
457bb8ffd by Ping Liu, refactor: FileFormat's hand-rolled toString() switch
to VELOX_DEFINE_ENUM_NAME (#17777)
1d05baea9 by Ping Liu, fix(build): Dwrf proto build error (#17716)
69fd99226 by dependabot[bot], build(ci): Bump astral-sh/setup-uv from 7.1.2
to 8.2.0 (#17762)
9fcf58381 by Orri Erling, feat(torchwave): Zero-copy parallel
reference-frame load (#17751)
ca38b8971 by Matt Gara, feat(cudf): Add basic support for timestamp and
date (#16634)
73c7ae2b7 by Zac Wen, feat: Support lazy reader creation in HiveIndexSource
(#17786)
f59223d35 by Zhenyuan Zhao, fix: Clean up parquet thrift (#17784)
cce26b637 by Zac Wen, refactor: Unify partitioned and non-partitioned paths
with SplitGroup (#17772)
c0f92ff76 by Xiaoxuan Meng, test: Make cached duplicate-region test
deterministic (#17780)
adead10dd by Heidi Han, feat(types): Serialize enum types in toSql and
parse enum kinds case-insensitively (#17717)
904df4b67 by peterenescu, build: Use FBThrift instead of Apache Thrift
(#16019) (#16019) (#16019)
f68e7ae9f by dependabot[bot], build(ci): Bump pypa/cibuildwheel from 3.3.0
to 4.0.0 (#17763)
379847068 by dependabot[bot], build(deps): Bump
@babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.7 in /website
(#17771)
4c0441d83 by Deepthi Bose, feat(function): Add Google Polyline encoding and
decoding Presto scalar functions (#16516)
48590c71d by Daniel Bauer, feat(cudf): Support DATE identity partition
columns in Iceberg reader (#17755)
9d0fbd54f by Orri Erling, fix: Force alwaysSingleBlock ops to a single
block in makeGrid (#17769)
a3d93dff0 by lifulong, fix(parquet): LIST/MAP reader: null buffer size()
stale after ensureCapacity (#17496)
d66364f74 by Kyle Hubert, fix(UCX): Fix UCX intra-node fast-path selection
(#17753)
75a7b56bb by Bradley Dice, build(cuda): Allow DNF fallback for adapter CUDA
installs (#17712)
c26556994 by Matt Gara, fix(cudf): Transfer hash join build input ownership
(#17754)
450598d99 by Masha Basmanova, docs(review): Make design and maintainability
a first-class review pass (#17766)
9febb8c58 by zhli1142015, perf(window): Skip RowContainer round-trip in
streaming window build (#17558)
ceecbfc43 by Xiaoxuan Meng, fix: Support duplicate regions in
CachedBufferedInput (#17757)
5aad32741 by Xiaoxuan Meng, feat: Support duplicate regions in
DirectBufferedInput (#17756)
91e3fb5e0 by Prashant Golash, perf: Lazy per-column I/O for projected
columns in Nimble (#17350)
1bb178337 by Christian Zentgraf, feat(ci): Add ASAN and UBSAN build and CI
job (#15444)
99cf749ec by dependabot[bot], build(deps): Bump axios from 1.15.2 to 1.16.0
in /website (#17742)
27d515493 by Apurva Kumar, feat: IcebergMergeSink: composite DataSink for
UPDATE/MERGE (#17738)
3e97e9763 by Pramod Satya, test(cudf): Add tests for parquet stats
filtering for decimals (#17432)
c441ece28 by Xiaoxuan Meng, perf: Coalesce exact duplicate IO ranges
1f90087b4 by Ping Liu, refactor: Rename inconsistent Hive Parquet config
keys (#17733)
d171ea054 by Zhenyuan Zhao, fix(iceberg): Support reading flatmap as struct
(#17741)
Co-authored-by: glutenperfbot <[email protected]>
Co-authored-by: Yuan <[email protected]>
---
.github/workflows/util/check.py | 5 +-
.github/workflows/velox_backend_arm.yml | 1 +
.github/workflows/velox_backend_x86.yml | 2 +-
.../org/apache/gluten/config/VeloxConfig.scala | 2 +-
cpp/velox/CMakeLists.txt | 58 ++++++++++++
cpp/velox/config/VeloxConfig.h | 2 +-
cpp/velox/utils/ConfigExtractor.cc | 4 +-
dev/build-arrow.sh | 6 +-
dev/check.py | 2 +
dev/ci-velox-buildshared-centos-9.sh | 5 +-
...velox-buildstatic-centos-7-enhanced-features.sh | 1 +
dev/ci-velox-buildstatic-centos-7.sh | 1 +
dev/vcpkg/README.md | 16 +---
dev/vcpkg/init.sh | 4 +-
.../fbthrift/compactv1-protocol-refiller.patch | 23 +++++
dev/vcpkg/ports/fbthrift/fix-deps.patch | 47 +++++++++
dev/vcpkg/ports/fbthrift/fix-fmt-include.patch | 13 +++
dev/vcpkg/ports/fbthrift/fix-test.patch | 16 ++++
dev/vcpkg/ports/fbthrift/folly-has-liburing.diff | 13 +++
dev/vcpkg/ports/fbthrift/portfile.cmake | 102 ++++++++++++++++++++
dev/vcpkg/ports/fbthrift/vcpkg.json | 35 +++++++
dev/vcpkg/ports/folly/adding-api.patch | 34 -------
dev/vcpkg/ports/folly/fix-absolute-dir.patch | 14 ---
dev/vcpkg/ports/folly/fix-deps.patch | 74 +++++++++------
dev/vcpkg/ports/folly/fix-perf_scoped-target.patch | 14 +++
dev/vcpkg/ports/folly/portfile.cmake | 8 +-
dev/vcpkg/ports/folly/vcpkg.json | 2 +-
dev/vcpkg/ports/mvfst/portfile.cmake | 21 +++++
dev/vcpkg/ports/mvfst/removexsk.patch | 13 +++
dev/vcpkg/ports/mvfst/vcpkg.json | 30 ++++++
dev/vcpkg/vcpkg-configuration.json | 6 ++
dev/vcpkg/vcpkg.json | 9 +-
docs/velox-configuration.md | 2 +-
ep/build-velox/src/get-velox.sh | 5 +-
ep/build-velox/src/socket.h | 105 +++++++++++++++++++++
35 files changed, 575 insertions(+), 120 deletions(-)
diff --git a/.github/workflows/util/check.py b/.github/workflows/util/check.py
index 7861c0aca3..755a4868b1 100755
--- a/.github/workflows/util/check.py
+++ b/.github/workflows/util/check.py
@@ -63,10 +63,7 @@ def get_files(commit, path):
for name in files:
filelist.append(os.path.join(root, name))
- return [
- file
- for file in filelist
- ]
+ return [file for file in filelist if "ep/build-velox" not in file]
def help(args):
diff --git a/.github/workflows/velox_backend_arm.yml
b/.github/workflows/velox_backend_arm.yml
index 13a4515d08..178d430c11 100644
--- a/.github/workflows/velox_backend_arm.yml
+++ b/.github/workflows/velox_backend_arm.yml
@@ -66,6 +66,7 @@ jobs:
- name: Build Gluten native libraries
run: |
df -a
+ pip install cmake==3.31.4
bash dev/ci-velox-buildstatic-centos-9.sh
ccache -s
- name: "Save ccache"
diff --git a/.github/workflows/velox_backend_x86.yml
b/.github/workflows/velox_backend_x86.yml
index 3b97c86b3a..ad3cf96ecf 100644
--- a/.github/workflows/velox_backend_x86.yml
+++ b/.github/workflows/velox_backend_x86.yml
@@ -1178,7 +1178,7 @@ jobs:
mkdir -p /work/.ccache
cd /work
- bash dev/builddeps-veloxbe.sh --run_setup_script=OFF
--build_arrow=OFF --build_tests=ON --build_benchmarks=ON --enable_gpu=ON
+ bash dev/builddeps-veloxbe.sh --run_setup_script=ON
--build_arrow=OFF --build_tests=ON --build_benchmarks=ON --enable_gpu=ON
rm -rf ep/build-velox/build/velox_ep
build/mvn clean package -Pbackends-velox -Pspark-3.4 -DskipTests
ccache -s
diff --git
a/backends-velox/src/main/scala/org/apache/gluten/config/VeloxConfig.scala
b/backends-velox/src/main/scala/org/apache/gluten/config/VeloxConfig.scala
index 13ec2dfebe..3a1ce682b8 100644
--- a/backends-velox/src/main/scala/org/apache/gluten/config/VeloxConfig.scala
+++ b/backends-velox/src/main/scala/org/apache/gluten/config/VeloxConfig.scala
@@ -305,7 +305,7 @@ object VeloxConfig extends ConfigRegistry {
.createWithDefault(10000)
val MAX_TARGET_FILE_SIZE_SESSION =
- buildConf("spark.gluten.sql.columnar.backend.velox.maxTargetFileSize")
+
buildConf("spark.gluten.sql.columnar.backend.velox.parquetMaxTargetFileSize")
.doc(
"The target file size for each output file when writing data. " +
"0 means no limit on target file size, and the actual file size will
be determined by " +
diff --git a/cpp/velox/CMakeLists.txt b/cpp/velox/CMakeLists.txt
index 2c98d9c78c..b267aa6e95 100644
--- a/cpp/velox/CMakeLists.txt
+++ b/cpp/velox/CMakeLists.txt
@@ -376,6 +376,64 @@ else()
endif()
target_link_libraries(velox PUBLIC external::geos)
+find_package(veloxthrift CONFIG)
+if(veloxthrift_FOUND AND TARGET veloxthrift::veloxthrift)
+ add_library(external::veloxthrift ALIAS veloxthrift::veloxthrift)
+else()
+ message(STATUS "import Velox bundled veloxthrift")
+ import_library(
+ external::veloxthrift
+
${VELOX_BUILD_PATH}/velox/dwio/parquet/thrift/libvelox_dwio_parquet_thrift_raw.a
+ )
+endif()
+target_link_libraries(velox PUBLIC external::veloxthrift)
+
+# Link thrift libraries - check vcpkg first, then fall back to system libraries
+# Determine vcpkg triplet directory based on architecture
+if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)")
+ set(VCPKG_TRIPLET_DIR "x64-linux-avx")
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(arm64)")
+ set(VCPKG_TRIPLET_DIR "arm64-linux-neon")
+else()
+ message(
+ WARNING
+ "Unknown processor type for vcpkg: ${CMAKE_SYSTEM_PROCESSOR}, defaulting
to x64-linux-avx"
+ )
+ set(VCPKG_TRIPLET_DIR "x64-linux-avx")
+endif()
+
+if(DEFINED VCPKG_INSTALLED_DIR
+ AND EXISTS
"${VCPKG_INSTALLED_DIR}/${VCPKG_TRIPLET_DIR}/lib/libthriftcpp2.a")
+ message(
+ STATUS
+ "Using vcpkg thrift libraries from
${VCPKG_INSTALLED_DIR}/${VCPKG_TRIPLET_DIR}"
+ )
+ target_link_libraries(
+ velox
+ PRIVATE ${VCPKG_INSTALLED_DIR}/${VCPKG_TRIPLET_DIR}/lib/libthriftcpp2.a
+
${VCPKG_INSTALLED_DIR}/${VCPKG_TRIPLET_DIR}/lib/libthriftprotocol.a)
+else()
+ message(STATUS "Using system thrift libraries from /usr/local/lib")
+ find_library(
+ THRIFTCPP2_LIB
+ NAMES thriftcpp2
+ PATHS /usr/local/lib
+ NO_DEFAULT_PATH)
+ find_library(
+ THRIFTPROTOCOL_LIB
+ NAMES thriftprotocol
+ PATHS /usr/local/lib
+ NO_DEFAULT_PATH)
+
+ if(THRIFTCPP2_LIB AND THRIFTPROTOCOL_LIB)
+ target_link_libraries(velox PRIVATE ${THRIFTCPP2_LIB}
${THRIFTPROTOCOL_LIB})
+ else()
+ message(
+ FATAL_ERROR
+ "Could not find thrift libraries. Please install them or use vcpkg.")
+ endif()
+endif()
+
find_package(simdjson CONFIG)
if(simdjson_FOUND AND TARGET simdjson::simdjson)
target_link_libraries(velox PUBLIC simdjson::simdjson)
diff --git a/cpp/velox/config/VeloxConfig.h b/cpp/velox/config/VeloxConfig.h
index 5d8c3bd4d9..b88cd505ad 100644
--- a/cpp/velox/config/VeloxConfig.h
+++ b/cpp/velox/config/VeloxConfig.h
@@ -174,7 +174,7 @@ const std::string kAllowInt32Narrowing =
"spark.gluten.sql.columnar.backend.velo
// write files
const std::string kMaxPartitions =
"spark.gluten.sql.columnar.backend.velox.maxPartitionsPerWritersSession";
-const std::string kMaxTargetFileSize =
"spark.gluten.sql.columnar.backend.velox.maxTargetFileSize";
+const std::string kParquetMaxTargetFileSize =
"spark.gluten.sql.columnar.backend.velox.parquetMaxTargetFileSize";
const std::string kGlogVerboseLevel =
"spark.gluten.sql.columnar.backend.velox.glogVerboseLevel";
const uint32_t kGlogVerboseLevelDefault = 0;
diff --git a/cpp/velox/utils/ConfigExtractor.cc
b/cpp/velox/utils/ConfigExtractor.cc
index a236d3ea7c..bc226541a8 100644
--- a/cpp/velox/utils/ConfigExtractor.cc
+++ b/cpp/velox/utils/ConfigExtractor.cc
@@ -233,8 +233,8 @@ std::shared_ptr<facebook::velox::config::ConfigBase>
createHiveConnectorSessionC
configs[facebook::velox::connector::hive::HiveConfig::kReadTimestampUnitSession]
= std::string("6");
configs[facebook::velox::connector::hive::HiveConfig::kMaxPartitionsPerWritersSession]
=
conf->get<std::string>(kMaxPartitions, "10000");
- configs[facebook::velox::connector::hive::HiveConfig::kMaxTargetFileSize] =
- conf->get<std::string>(kMaxTargetFileSize, "0B"); // 0 means no limit on
target file size
+
configs[facebook::velox::connector::hive::HiveConfig::kParquetMaxTargetFileSize]
=
+ conf->get<std::string>(kParquetMaxTargetFileSize, "0B"); // 0 means no
limit on target file size
configs[facebook::velox::connector::hive::HiveConfig::kIgnoreMissingFilesSession]
=
conf->get<bool>(kIgnoreMissingFiles, false) ? "true" : "false";
configs[facebook::velox::connector::hive::HiveConfig::kParquetUseColumnNamesSession]
=
diff --git a/dev/build-arrow.sh b/dev/build-arrow.sh
index 007047a8ad..8c9a4686e6 100755
--- a/dev/build-arrow.sh
+++ b/dev/build-arrow.sh
@@ -53,11 +53,11 @@ function build_arrow_cpp() {
-DARROW_PROTOBUF_USE_SHARED=OFF \
-DARROW_DEPENDENCY_USE_SHARED=OFF \
-DARROW_DEPENDENCY_SOURCE=BUNDLED \
- -DARROW_WITH_THRIFT=ON \
-DARROW_WITH_LZ4=ON \
-DARROW_WITH_SNAPPY=ON \
-DARROW_WITH_ZLIB=${ARROW_WITH_ZLIB} \
-DARROW_WITH_ZSTD=ON \
+ -DBoost_NO_BOOST_CMAKE=TRUE \
-DARROW_JEMALLOC=OFF \
-DARROW_SIMD_LEVEL=NONE \
-DARROW_RUNTIME_SIMD_LEVEL=NONE \
@@ -68,10 +68,6 @@ function build_arrow_cpp() {
-DARROW_BUILD_SHARED=OFF \
-DARROW_BUILD_STATIC=ON
- # Install thrift.
- cd _build/thrift_ep-prefix/src/thrift_ep-build
- ${SUDO} cmake --install ./ --prefix "${INSTALL_PREFIX}"/
- popd
}
function build_arrow_java() {
diff --git a/dev/check.py b/dev/check.py
index b81b1a6844..89b7a9155d 100755
--- a/dev/check.py
+++ b/dev/check.py
@@ -218,6 +218,8 @@ def get_files(commit, path):
if "_build" not in file
and "cmake-build-debug" not in file
and "cpp-ch" not in file
+ and "dev" not in file
+ and "ep/build-velox" not in file
]
diff --git a/dev/ci-velox-buildshared-centos-9.sh
b/dev/ci-velox-buildshared-centos-9.sh
index d4008d125c..846765df7e 100755
--- a/dev/ci-velox-buildshared-centos-9.sh
+++ b/dev/ci-velox-buildshared-centos-9.sh
@@ -24,5 +24,8 @@ if [ "$(uname -m)" = "aarch64" ]; then
export VCPKG_FORCE_SYSTEM_BINARIES=1;
fi
-./dev/builddeps-veloxbe.sh --run_setup_script=OFF --build_arrow=OFF
--build_tests=ON \
+
+export VELOX_BUILD_SHARED=ON
+
+./dev/builddeps-veloxbe.sh --run_setup_script=ON --build_arrow=ON
--build_tests=ON \
--build_examples=ON --build_benchmarks=ON
diff --git a/dev/ci-velox-buildstatic-centos-7-enhanced-features.sh
b/dev/ci-velox-buildstatic-centos-7-enhanced-features.sh
index ce385f0cd2..63cb8ccb4a 100755
--- a/dev/ci-velox-buildstatic-centos-7-enhanced-features.sh
+++ b/dev/ci-velox-buildstatic-centos-7-enhanced-features.sh
@@ -18,5 +18,6 @@
set -e
export NUM_THREADS=2
+cp ep/build-velox/src/socket.h /usr/include/asm-generic/socket.h
./dev/builddeps-veloxbe.sh --enable_vcpkg=ON --build_arrow=OFF
--build_tests=ON --build_benchmarks=ON \
--build_examples=OFF --enable_s3=ON --enable_gcs=ON
--enable_hdfs=ON --enable_abfs=ON --enable_enhanced_features=ON
diff --git a/dev/ci-velox-buildstatic-centos-7.sh
b/dev/ci-velox-buildstatic-centos-7.sh
index 2c71a70222..1990d4c7d3 100755
--- a/dev/ci-velox-buildstatic-centos-7.sh
+++ b/dev/ci-velox-buildstatic-centos-7.sh
@@ -18,5 +18,6 @@
set -e
export NUM_THREADS=4
+cp ep/build-velox/src/socket.h /usr/include/asm-generic/socket.h
./dev/builddeps-veloxbe.sh --enable_vcpkg=ON --build_arrow=OFF
--build_tests=OFF --build_benchmarks=OFF \
--build_examples=OFF --enable_s3=ON --enable_gcs=ON
--enable_hdfs=ON --enable_abfs=ON
diff --git a/dev/vcpkg/README.md b/dev/vcpkg/README.md
index 19615e7d63..549d70295e 100644
--- a/dev/vcpkg/README.md
+++ b/dev/vcpkg/README.md
@@ -2,14 +2,14 @@
## Overview
-Currently, the `builtin-baseline` set in `vcpkg.json` is the commit hash for
the `2025.09.17` tag of vcpkg.
+Currently, the `builtin-baseline` set in `vcpkg.json` is the commit hash for
the `2026.03.18` tag of vcpkg.
The versions of all dependency libraries are determined by their respective
ports at this vcpkg version,
except for those overridden in `vcpkg.json`, `vcpkg-configuration.json`, and
overlay ports.
## Build in docker
For main branch code, you can follow the commands below.
-- Pull the docker image: `docker pull apache/gluten:vcpkg-centos-7`
+- Pull the docker image: `docker pull apache/gluten:vcpkg-centos-7-gcc13`
- Build native code: `bash dev/ci-velox-buildstatic-centos-7.sh`
- Build JVM code: `mvn clean install -Pbackends-velox -Pspark-3.5 -DskipTests`
@@ -25,15 +25,7 @@ Please install build depends on your system to compile all
libraries:
sudo $GLUTEN_REPO/dev/vcpkg/setup-build-depends.sh
```
-GCC 11 is the minimum required compiler. It needs to be enabled beforehand.
Take Centos 7/8 as example:
-
-``` sh
-# CentOS 8
-source /opt/rh/gcc-toolset-11/enable
-
-# CentOS 7
-source /opt/rh/devtoolset-11/enable
-```
+GCC 12 is the minimum required compiler. It needs to be enabled beforehand.
For unsupported linux distro, you can install the following packages from
package manager.
@@ -42,7 +34,7 @@ For unsupported linux distro, you can install the following
packages from packag
* wget
* curl
* git >= 2.7.4
-* gcc >= 11
+* gcc >= 12
* pkg-config
* autotools
* flex >= 2.6.0
diff --git a/dev/vcpkg/init.sh b/dev/vcpkg/init.sh
index 6683ba9151..410373f229 100755
--- a/dev/vcpkg/init.sh
+++ b/dev/vcpkg/init.sh
@@ -70,7 +70,7 @@ cd "$SCRIPT_ROOT"
if [ ! -d "$VCPKG_ROOT" ] || [ -z "$(ls "$VCPKG_ROOT")" ]; then
# The builtin-baseline (commit hash) specified in vcpkg.json should exist
in this branch.
# Therefore, upgrading the builtin-baseline may require updating the
branch.
- git clone https://github.com/microsoft/vcpkg.git --branch 2025.09.17
"$VCPKG_ROOT"
+ git clone https://github.com/microsoft/vcpkg.git --branch 2026.03.18
"$VCPKG_ROOT"
fi
[ -f "$VCPKG" ] || "$VCPKG_ROOT/bootstrap-vcpkg.sh" -disableMetrics
@@ -92,7 +92,7 @@ if [ "${VCPKG_DYNAMIC_OPENSSL:-OFF}" = "ON" ]; then
fi
-$VCPKG install --no-print-usage \
+$VCPKG install --no-print-usage --allow-unsupported \
--triplet="${VCPKG_TRIPLET}" --host-triplet="${VCPKG_TRIPLET}"
${EXTRA_FEATURES}
# For fixing a build error like below when gluten's build type is Debug:
diff --git a/dev/vcpkg/ports/fbthrift/compactv1-protocol-refiller.patch
b/dev/vcpkg/ports/fbthrift/compactv1-protocol-refiller.patch
new file mode 100644
index 0000000000..315590b44d
--- /dev/null
+++ b/dev/vcpkg/ports/fbthrift/compactv1-protocol-refiller.patch
@@ -0,0 +1,23 @@
+--- a/thrift/lib/cpp2/protocol/ProtocolReaderWithRefill.h
++++ b/thrift/lib/cpp2/protocol/ProtocolReaderWithRefill.h
+@@ -172,6 +172,20 @@
+ protocol_.skipBytes(bytes);
+ }
+
++ protected:
++ /**
++ * Allow derived refill readers to use this helper where they cannot access
++ * CompactProtocolReader::in_ directly (due to not having a friend
++ * declaration).
++ * Allows users to implement refill readers for CompactV1ProtocolReader if
++ * necessary, without supporting it in the Thrift codebase or having to
patch
++ * in a friend declaration.
++ */
++ template <typename T>
++ T readLEFromBuffer() {
++ return protocol_.in_.template readLE<T>();
++ }
++
+ private:
+ /**
+ * Make sure a varint can be read from the current buffer after idx bytes.
diff --git a/dev/vcpkg/ports/fbthrift/fix-deps.patch
b/dev/vcpkg/ports/fbthrift/fix-deps.patch
new file mode 100644
index 0000000000..0e423cdf07
--- /dev/null
+++ b/dev/vcpkg/ports/fbthrift/fix-deps.patch
@@ -0,0 +1,47 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2f214f5..b45f528 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -118,12 +118,15 @@ endif ()
+
+ # Find required dependencies for thrift/lib
+ if (THRIFT_LIB_ONLY OR build_all)
+- find_package(Gflags REQUIRED)
+- find_package(Glog REQUIRED)
++ find_package(gflags CONFIG REQUIRED)
++ set(LIBGFLAGS_LIBRARY gflags::gflags)
++ find_package(glog CONFIG REQUIRED)
++ set(GLOG_LIBRARIES glog::glog)
+ find_package(fizz CONFIG REQUIRED)
+ find_package(wangle CONFIG REQUIRED)
+ find_package(ZLIB REQUIRED)
+- find_package(Zstd REQUIRED)
++ find_package(zstd CONFIG REQUIRED)
++ set(ZSTD_LIBRARIES zstd::libzstd)
+ find_package(Xxhash REQUIRED)
+ find_package(mvfst CONFIG REQUIRED)
+ # https://cmake.org/cmake/help/v3.9/module/FindThreads.html
+diff --git a/thrift/cmake/FBThriftConfig.cmake.in
b/thrift/cmake/FBThriftConfig.cmake.in
+index e279485..4dd8bd1 100644
+--- a/thrift/cmake/FBThriftConfig.cmake.in
++++ b/thrift/cmake/FBThriftConfig.cmake.in
+@@ -29,9 +29,16 @@ else()
+ set_and_check(FBTHRIFT_COMPILER "@PACKAGE_BIN_INSTALL_DIR@/thrift1")
+ endif()
+
+-find_dependency(Xxhash REQUIRED)
+-find_dependency(ZLIB REQUIRED)
+-find_package(mvfst CONFIG REQUIRED)
++find_dependency(xxHash CONFIG)
++find_dependency(ZLIB)
++find_dependency(mvfst CONFIG)
++find_dependency(fizz CONFIG)
++find_dependency(fmt CONFIG)
++find_dependency(folly CONFIG)
++find_dependency(gflags CONFIG)
++find_dependency(glog CONFIG)
++find_dependency(wangle CONFIG)
++find_dependency(zstd CONFIG)
+
+ if (NOT TARGET FBThrift::thriftcpp2)
+ include("${FBTHRIFT_CMAKE_DIR}/FBThriftTargets.cmake")
diff --git a/dev/vcpkg/ports/fbthrift/fix-fmt-include.patch
b/dev/vcpkg/ports/fbthrift/fix-fmt-include.patch
new file mode 100644
index 0000000000..ca216df456
--- /dev/null
+++ b/dev/vcpkg/ports/fbthrift/fix-fmt-include.patch
@@ -0,0 +1,13 @@
+diff --git a/thrift/lib/cpp2/server/RoundRobinRequestPile.h
b/thrift/lib/cpp2/server/RoundRobinRequestPile.h
+index 3a06c5b..bae9387 100644
+--- a/thrift/lib/cpp2/server/RoundRobinRequestPile.h
++++ b/thrift/lib/cpp2/server/RoundRobinRequestPile.h
+@@ -21,6 +21,8 @@
+ #include <limits>
+ #include <memory>
+
++#include <fmt/ranges.h>
++
+ #include <folly/Executor.h>
+ #include <folly/concurrency/UnboundedQueue.h>
+ #include <folly/io/async/AtomicNotificationQueue.h>
diff --git a/dev/vcpkg/ports/fbthrift/fix-test.patch
b/dev/vcpkg/ports/fbthrift/fix-test.patch
new file mode 100644
index 0000000000..918ea51b82
--- /dev/null
+++ b/dev/vcpkg/ports/fbthrift/fix-test.patch
@@ -0,0 +1,16 @@
+diff --git a/thrift/lib/cpp2/CMakeLists.txt b/thrift/lib/cpp2/CMakeLists.txt
+index 439f0814..3374dd34 100644
+--- a/thrift/lib/cpp2/CMakeLists.txt
++++ b/thrift/lib/cpp2/CMakeLists.txt
+@@ -15,11 +15,6 @@
+ # Set the cpp2 directory
+ set(LIB_CPP2_HOME ${CMAKE_CURRENT_SOURCE_DIR})
+
+-if (enable_tests)
+- add_subdirectory(protocol/test)
+-endif ()
+-add_subdirectory(test)
+-
+ #######
+ # CMAKE variables only have local/subdirectory scope
+ # So even though this is defined in ../thrift/CMakeLists.txt as a variable
diff --git a/dev/vcpkg/ports/fbthrift/folly-has-liburing.diff
b/dev/vcpkg/ports/fbthrift/folly-has-liburing.diff
new file mode 100644
index 0000000000..47dc5b6ce4
--- /dev/null
+++ b/dev/vcpkg/ports/fbthrift/folly-has-liburing.diff
@@ -0,0 +1,13 @@
+diff --git a/thrift/lib/cpp2/security/SSLUtil.cpp
b/thrift/lib/cpp2/security/SSLUtil.cpp
+index 571ffef..8803f37 100644
+--- a/thrift/lib/cpp2/security/SSLUtil.cpp
++++ b/thrift/lib/cpp2/security/SSLUtil.cpp
+@@ -144,7 +144,7 @@ folly::AsyncSocketTransport::UniquePtr toFDSocket(
+
+ auto sock = fizzSock->template getUnderlyingTransport<folly::AsyncSocket>();
+ folly::AsyncSocketTransport::UniquePtr ret;
+-#if defined(__linux__) && __has_include(<liburing.h>)
++#if defined(__linux__) && FOLLY_HAS_LIBURING
+ if (!sock &&
+ fizzSock->template getUnderlyingTransport<folly::AsyncIoUringSocket>())
{
+ // `AsyncFdSocket` currently lacks uring support, so hardcode
`AsyncSocket`
diff --git a/dev/vcpkg/ports/fbthrift/portfile.cmake
b/dev/vcpkg/ports/fbthrift/portfile.cmake
new file mode 100644
index 0000000000..ea16a0152c
--- /dev/null
+++ b/dev/vcpkg/ports/fbthrift/portfile.cmake
@@ -0,0 +1,102 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO facebook/fbthrift
+ REF "v${VERSION}"
+ SHA512
32f2a648496a321b6aaf55197c2dc1412d030ca82f8d8a5ca0516379379a0f71dc17e2edcb2be3972f76603935c7dcae29769c067caa1ec8a33e7f4efb251581
+ HEAD_REF main
+ PATCHES
+ fix-deps.patch
+ folly-has-liburing.diff
+ fix-fmt-include.patch
+ compactv1-protocol-refiller.patch # patch from velox
+)
+
+file(REMOVE "${SOURCE_PATH}/thrift/cmake/FindGMock.cmake")
+file(REMOVE "${SOURCE_PATH}/thrift/cmake/FindOpenSSL.cmake")
+file(REMOVE "${SOURCE_PATH}/thrift/cmake/FindZstd.cmake")
+file(REMOVE "${SOURCE_PATH}/build/fbcode_builder/CMake/FindGflags.cmake")
+file(REMOVE "${SOURCE_PATH}/build/fbcode_builder/CMake/FindGlog.cmake")
+file(REMOVE "${SOURCE_PATH}/build/fbcode_builder/CMake/FindGMock.cmake")
+file(REMOVE "${SOURCE_PATH}/build/fbcode_builder/CMake/FindLibEvent.cmake")
+file(REMOVE "${SOURCE_PATH}/build/fbcode_builder/CMake/FindSodium.cmake")
+file(REMOVE "${SOURCE_PATH}/build/fbcode_builder/CMake/FindZstd.cmake")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ "-Dthriftpy=OFF"
+ "-Denable_tests=OFF"
+)
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/fbthrift)
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+# There should be no empty directories in vcpkg/packages/fbthrift_x64-linux
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/include/thrift/common/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp/transport/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp/util/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/async/metadata/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/debug_thrift_data_difference/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/detail/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/dynamic/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/folly_dynamic/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/frozen/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/patch/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/protocol/detail/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/protocol/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/protocol/tool"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/reflection/demo"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/reflection/docs"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/runtime/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/schema/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/security/extensions/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/security/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/server/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/core/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/http2/common/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/http2/server/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/http2/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/inmemory/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/rocket/client/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/rocket/compression/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/rocket/core/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/rocket/framing/parser/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/rocket/payload/test"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/transport/rocket/server/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/util/gtest/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/util/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/cpp2/visitation/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/py3/benchmark"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/py3/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/any/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/benchmark"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/capi/benchmark"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/conformance"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/conformance/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/server/interceptor/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/server/test"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/test/adapters"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/test/cpp_conversion"
+
"${CURRENT_PACKAGES_DIR}/include/thrift/lib/python/test/request_context_extractor"
+ "${CURRENT_PACKAGES_DIR}/include/thrift/lib/thrift/annotation"
+)
+vcpkg_copy_tools(TOOL_NAMES thrift1 AUTO_CLEAN)
+vcpkg_copy_pdbs()
+
+if(EXISTS "${CURRENT_PACKAGES_DIR}/share/fbthrift/FBThriftConfig.cmake")
+
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/fbthrift/FBThriftConfig.cmake"
+ "${PACKAGE_PREFIX_DIR}/lib/cmake/fbthrift"
"${PACKAGE_PREFIX_DIR}/share/fbthrift")
+
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/fbthrift/FBThriftConfig.cmake"
+ "${PACKAGE_PREFIX_DIR}/bin/thrift1.exe"
"${PACKAGE_PREFIX_DIR}/tools/fbthrift/thrift1.exe")
+
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/fbthrift/FBThriftConfig.cmake"
+ "${PACKAGE_PREFIX_DIR}/bin/thrift1"
"${PACKAGE_PREFIX_DIR}/tools/fbthrift/thrift1")
+endif()
+
+# Only used internally and removed in master
+vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/fbthrift/FBThriftTargets.cmake"
"LOCATION_HH=\\\"${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/thrift/compiler/location.hh\\\""
"" IGNORE_UNCHANGED)
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/dev/vcpkg/ports/fbthrift/vcpkg.json
b/dev/vcpkg/ports/fbthrift/vcpkg.json
new file mode 100644
index 0000000000..b9d08323f2
--- /dev/null
+++ b/dev/vcpkg/ports/fbthrift/vcpkg.json
@@ -0,0 +1,35 @@
+{
+ "name": "fbthrift",
+ "version-string": "2026.02.23.00",
+ "description": "Facebook's branch of Apache Thrift, including a new C++
server.",
+ "homepage": "https://github.com/facebook/fbthrift",
+ "license": "Apache-2.0",
+ "supports": "x64 & static",
+ "dependencies": [
+ "boost-context",
+ "boost-filesystem",
+ "boost-program-options",
+ "boost-regex",
+ "boost-system",
+ "boost-thread",
+ "fizz",
+ "fmt",
+ "folly",
+ "gflags",
+ "glog",
+ "mvfst",
+ "openssl",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "wangle",
+ "xxhash",
+ "zlib",
+ "zstd"
+ ]
+}
diff --git a/dev/vcpkg/ports/folly/adding-api.patch
b/dev/vcpkg/ports/folly/adding-api.patch
deleted file mode 100644
index 67973b93a0..0000000000
--- a/dev/vcpkg/ports/folly/adding-api.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/folly/system/HardwareConcurrency.cpp
b/folly/system/HardwareConcurrency.cpp
-index 71213c80a..cd1852034 100644
---- a/folly/system/HardwareConcurrency.cpp
-+++ b/folly/system/HardwareConcurrency.cpp
-@@ -36,4 +36,18 @@ unsigned int hardware_concurrency() noexcept {
- return std::thread::hardware_concurrency();
- }
-
-+unsigned int available_concurrency() noexcept {
-+#if defined(__linux__) && !defined(__ANDROID__)
-+ cpu_set_t cpuset;
-+ if (!sched_getaffinity(0, sizeof(cpuset), &cpuset)) {
-+ auto count = CPU_COUNT(&cpuset);
-+ if (count != 0) {
-+ return count;
-+ }
-+ }
-+#endif
-+
-+ return std::thread::hardware_concurrency();
-+}
-+
- } // namespace folly
-diff --git a/folly/system/HardwareConcurrency.h
b/folly/system/HardwareConcurrency.h
-index 7c497634c..71dfb5db1 100644
---- a/folly/system/HardwareConcurrency.h
-+++ b/folly/system/HardwareConcurrency.h
-@@ -20,4 +20,6 @@ namespace folly {
-
- unsigned int hardware_concurrency() noexcept;
-
-+unsigned int available_concurrency() noexcept;
-+
- } // namespace folly
diff --git a/dev/vcpkg/ports/folly/fix-absolute-dir.patch
b/dev/vcpkg/ports/folly/fix-absolute-dir.patch
deleted file mode 100644
index fac930a188..0000000000
--- a/dev/vcpkg/ports/folly/fix-absolute-dir.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index bc99ce3..d887a7e 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -481,9 +481,6 @@ add_library(folly_test_util
- ${FOLLY_DIR}/test/DeterministicSchedule.cpp
- ${FOLLY_DIR}/json/JsonTestUtil.cpp
- )
--target_compile_definitions(folly_test_util PUBLIC
-- FOLLY_CERTS_DIR="${FOLLY_DIR}/io/async/test/certs"
--)
- set_property(TARGET folly_test_util PROPERTY VERSION ${PACKAGE_VERSION})
- target_link_libraries(folly_test_util
- PUBLIC
diff --git a/dev/vcpkg/ports/folly/fix-deps.patch
b/dev/vcpkg/ports/folly/fix-deps.patch
index 6aa5891798..500b3a71db 100644
--- a/dev/vcpkg/ports/folly/fix-deps.patch
+++ b/dev/vcpkg/ports/folly/fix-deps.patch
@@ -1,8 +1,8 @@
diff --git a/CMake/folly-config.cmake.in b/CMake/folly-config.cmake.in
-index 0b96f0a..d5a200f 100644
+index 5fc83ac..7efb0fc 100644
--- a/CMake/folly-config.cmake.in
+++ b/CMake/folly-config.cmake.in
-@@ -29,10 +29,31 @@ endif()
+@@ -34,10 +34,31 @@ endif()
set(FOLLY_LIBRARIES Folly::folly)
# Find folly's dependencies
@@ -31,13 +31,13 @@ index 0b96f0a..d5a200f 100644
+endif()
set(Boost_USE_STATIC_LIBS "@FOLLY_BOOST_LINK_STATIC@")
--find_dependency(Boost 1.51.0 MODULE
-+find_dependency(Boost
+-find_package(Boost 1.69.0 REQUIRED
++find_dependency(Boost 1.69.0
COMPONENTS
context
filesystem
diff --git a/CMake/folly-config.h.cmake b/CMake/folly-config.h.cmake
-index 9a309fb..7e6e05f 100644
+index 1da1cc1..701ec99 100644
--- a/CMake/folly-config.h.cmake
+++ b/CMake/folly-config.h.cmake
@@ -16,6 +16,9 @@
@@ -51,24 +51,11 @@ index 9a309fb..7e6e05f 100644
#include <TargetConditionals.h> // @manual
#endif
diff --git a/CMake/folly-deps.cmake b/CMake/folly-deps.cmake
-index 6ce4c67..a347cf0 100644
+index 1c41750..6ab485c 100644
--- a/CMake/folly-deps.cmake
+++ b/CMake/folly-deps.cmake
-@@ -35,7 +35,7 @@ else()
- endif()
- set(Boost_USE_STATIC_LIBS "${FOLLY_BOOST_LINK_STATIC}")
-
--find_package(Boost 1.51.0 MODULE
-+find_package(Boost
- COMPONENTS
- context
- filesystem
-@@ -45,17 +45,21 @@ find_package(Boost 1.51.0 MODULE
- thread
- REQUIRED
- )
-+set(Boost_LIBRARIES Boost::boost Boost::context Boost::filesystem
Boost::program_options Boost::regex Boost::system Boost::thread)
- list(APPEND FOLLY_LINK_LIBRARIES ${Boost_LIBRARIES})
+@@ -57,14 +57,17 @@ find_package(Boost 1.69.0 REQUIRED
+ # Per-target Boost dependencies are specified via EXTERNAL_DEPS
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIRS})
-find_package(DoubleConversion MODULE REQUIRED)
@@ -89,7 +76,7 @@ index 6ce4c67..a347cf0 100644
set(FOLLY_HAVE_LIBGFLAGS ${LIBGFLAGS_FOUND})
if(LIBGFLAGS_FOUND)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBGFLAGS_LIBRARY})
-@@ -64,16 +68,22 @@ if(LIBGFLAGS_FOUND)
+@@ -73,7 +76,8 @@ if(LIBGFLAGS_FOUND)
set(FOLLY_LIBGFLAGS_INCLUDE ${LIBGFLAGS_INCLUDE_DIR})
endif()
@@ -97,8 +84,11 @@ index 6ce4c67..a347cf0 100644
+find_package(GLOG NAMES glog REQUIRED)
+set(GLOG_LIBRARY glog::glog)
set(FOLLY_HAVE_LIBGLOG ${GLOG_FOUND})
- list(APPEND FOLLY_LINK_LIBRARIES ${GLOG_LIBRARY})
+ list(APPEND FOLLY_LINK_LIBRARIES glog::glog)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${GLOG_INCLUDE_DIR})
+@@ -83,11 +87,16 @@ if (EXISTS "${GLOG_INCLUDE_DIR}/glog/export.h")
+ list(APPEND FOLLY_CXX_FLAGS -DGLOG_USE_GLOG_EXPORT)
+ endif()
-find_package(LibEvent MODULE REQUIRED)
+find_package(LIBEVENT NAMES Libevent REQUIRED)
@@ -114,7 +104,7 @@ index 6ce4c67..a347cf0 100644
set(FOLLY_HAVE_LIBZ ${ZLIB_FOUND})
if (ZLIB_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRS})
-@@ -106,21 +116,24 @@ if (LIBLZMA_FOUND)
+@@ -120,21 +129,24 @@ if (LIBLZMA_FOUND)
list(APPEND FOLLY_LINK_LIBRARIES ${LIBLZMA_LIBRARIES})
endif()
@@ -142,7 +132,7 @@ index 6ce4c67..a347cf0 100644
set(FOLLY_HAVE_LIBSNAPPY ${SNAPPY_FOUND})
if (SNAPPY_FOUND)
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR})
-@@ -136,14 +149,19 @@ list(APPEND FOLLY_LINK_LIBRARIES ${LIBIBERTY_LIBRARIES})
+@@ -150,14 +162,19 @@ list(APPEND FOLLY_LINK_LIBRARIES ${LIBIBERTY_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBIBERTY_INCLUDE_DIRS})
find_package(LibAIO)
@@ -163,7 +153,7 @@ index 6ce4c67..a347cf0 100644
list(APPEND FOLLY_LINK_LIBRARIES ${LIBSODIUM_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBSODIUM_INCLUDE_DIRS})
-@@ -160,6 +178,8 @@ list(APPEND FOLLY_LINK_LIBRARIES ${LIBUNWIND_LIBRARIES})
+@@ -174,6 +191,8 @@ list(APPEND FOLLY_LINK_LIBRARIES ${LIBUNWIND_LIBRARIES})
list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBUNWIND_INCLUDE_DIRS})
if (LIBUNWIND_FOUND)
set(FOLLY_HAVE_LIBUNWIND ON)
@@ -172,8 +162,32 @@ index 6ce4c67..a347cf0 100644
endif()
if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
list(APPEND FOLLY_LINK_LIBRARIES "execinfo")
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 49dd964..b84f338 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -273,7 +273,8 @@ folly_resolve_deferred_dependencies()
+ # This points to the SSL test certificates used by TestSSLServer and related
tests
+ if(TARGET folly_testing_test_util)
+ target_compile_definitions(folly_testing_test_util INTERFACE
+- FOLLY_CERTS_DIR="${FOLLY_DIR}/io/async/test/certs"
++ $<BUILD_INTERFACE:FOLLY_CERTS_DIR="${FOLLY_DIR}/io/async/test/certs">
++ $<INSTALL_INTERFACE:FOLLY_CERTS_DIR="share/folly/">
+ )
+ endif()
+
+@@ -285,7 +286,8 @@ add_library(folly_test_util
+ ${FOLLY_DIR}/json/JsonTestUtil.cpp
+ )
+ target_compile_definitions(folly_test_util PUBLIC
+- FOLLY_CERTS_DIR="${FOLLY_DIR}/io/async/test/certs"
++ $<BUILD_INTERFACE:FOLLY_CERTS_DIR="${FOLLY_DIR}/io/async/test/certs">
++ $<INSTALL_INTERFACE:FOLLY_CERTS_DIR="share/folly">
+ )
+ set_property(TARGET folly_test_util PROPERTY VERSION ${PACKAGE_VERSION})
+ target_link_libraries(folly_test_util
diff --git a/folly/io/async/AsyncIO.cpp b/folly/io/async/AsyncIO.cpp
-index 93cda44..ac090bb 100644
+index 2760e0f..a51c16c 100644
--- a/folly/io/async/AsyncIO.cpp
+++ b/folly/io/async/AsyncIO.cpp
@@ -35,7 +35,7 @@
@@ -186,12 +200,12 @@ index 93cda44..ac090bb 100644
// debugging helpers
namespace {
diff --git a/folly/io/async/AsyncIO.h b/folly/io/async/AsyncIO.h
-index b1a6f52..ba84609 100644
+index 36c6df2..02ff518 100644
--- a/folly/io/async/AsyncIO.h
+++ b/folly/io/async/AsyncIO.h
@@ -18,7 +18,7 @@
- #include <folly/experimental/io/AsyncBase.h>
+ #include <folly/io/async/AsyncBase.h>
-#if __has_include(<libaio.h>)
+#if FOLLY_HAS_LIBAIO
@@ -211,7 +225,7 @@ index 8e81aaa..c7f4a67 100644
-#define FOLLY_HAS_LIBURING 0
#endif
diff --git a/folly/io/async/SimpleAsyncIO.cpp
b/folly/io/async/SimpleAsyncIO.cpp
-index 807a2be..551a003 100644
+index cceb964..9f97e36 100644
--- a/folly/io/async/SimpleAsyncIO.cpp
+++ b/folly/io/async/SimpleAsyncIO.cpp
@@ -25,7 +25,7 @@
diff --git a/dev/vcpkg/ports/folly/fix-perf_scoped-target.patch
b/dev/vcpkg/ports/folly/fix-perf_scoped-target.patch
new file mode 100644
index 0000000000..7bd8873cf1
--- /dev/null
+++ b/dev/vcpkg/ports/folly/fix-perf_scoped-target.patch
@@ -0,0 +1,14 @@
+diff --git a/folly/detail/CMakeLists.txt b/folly/detail/CMakeLists.txt
+index 521983f..7bbfb6d 100644
+--- a/folly/detail/CMakeLists.txt
++++ b/folly/detail/CMakeLists.txt
+@@ -182,6 +182,9 @@ folly_add_library(
+ EXTERNAL_DEPS
+ Boost::regex
+ )
++if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
++ target_link_libraries(folly_detail_perf_scoped PUBLIC folly_subprocess)
++endif()
+
+ folly_add_library(
+ NAME poly_detail
diff --git a/dev/vcpkg/ports/folly/portfile.cmake
b/dev/vcpkg/ports/folly/portfile.cmake
index bc1c4e9693..9db348d516 100644
--- a/dev/vcpkg/ports/folly/portfile.cmake
+++ b/dev/vcpkg/ports/folly/portfile.cmake
@@ -6,14 +6,13 @@ vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO facebook/folly
REF "v${VERSION}"
- SHA512
6d377c48cf1c0796da6fad34b930e9608f3cd765a675414eaad45ff46e9d0b9bb5f027b187ec135e88bb60a83cb91c07d266a6673621caf3f9961942b55276e2
+ SHA512
8ee08591724fb1f6183cc0456c13cd00474e425d41824add2751fd3823e23b95ea69ec1b246bc85c95d30add854ee53dafd2bc1b824d0b555917dcbaf6943a6f
HEAD_REF main
PATCHES
fix-deps.patch
disable-uninitialized-resize-on-new-stl.patch
fix-unistd-include.patch
- fix-absolute-dir.patch
- adding-api.patch
+ fix-perf_scoped-target.patch
)
file(REMOVE "${SOURCE_PATH}/CMake/FindFastFloat.cmake")
file(REMOVE "${SOURCE_PATH}/CMake/FindFmt.cmake")
@@ -56,9 +55,6 @@ vcpkg_cmake_configure(
-DVCPKG_LOCK_FIND_PACKAGE_Libiberty=OFF
-DVCPKG_LOCK_FIND_PACKAGE_LibUnwind=${VCPKG_TARGET_IS_LINUX}
-DVCPKG_LOCK_FIND_PACKAGE_ZLIB=ON
- # Required by Velox.
- -DFOLLY_HAVE_INT128_T=ON
- -DFOLLY_MEMCPY_IS_MEMCPY=ON -DFOLLY_MEMSET_IS_MEMSET=ON
${FEATURE_OPTIONS}
MAYBE_UNUSED_VARIABLES
MSVC_USE_STATIC_RUNTIME
diff --git a/dev/vcpkg/ports/folly/vcpkg.json b/dev/vcpkg/ports/folly/vcpkg.json
index 99bb39dc1d..0ac3d2e4ad 100644
--- a/dev/vcpkg/ports/folly/vcpkg.json
+++ b/dev/vcpkg/ports/folly/vcpkg.json
@@ -1,6 +1,6 @@
{
"name": "folly",
- "version-string": "2025.05.19.00",
+ "version-string": "2026.02.23.00",
"description": "An open-source C++ library developed and used at Facebook.
The library is UNSTABLE on Windows",
"homepage": "https://github.com/facebook/folly",
"license": "Apache-2.0",
diff --git a/dev/vcpkg/ports/mvfst/portfile.cmake
b/dev/vcpkg/ports/mvfst/portfile.cmake
new file mode 100644
index 0000000000..ac4a90d544
--- /dev/null
+++ b/dev/vcpkg/ports/mvfst/portfile.cmake
@@ -0,0 +1,21 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO facebook/mvfst
+ REF "v${VERSION}"
+ SHA512
6669e5b3163f422b3b5b11f298ff16f4f6f196aef765fa4a3da7a4caa69b7675e4ab8a9f9eac0e2f07e5fa30e723af7ab2310d67ec5d1357723da15444333dea
+ HEAD_REF main
+ PATCHES
+ removexsk.patch # patch to workaround on centos7
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DBUILD_TESTS=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/mvfst)
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/dev/vcpkg/ports/mvfst/removexsk.patch
b/dev/vcpkg/ports/mvfst/removexsk.patch
new file mode 100644
index 0000000000..8dc0bd1c6d
--- /dev/null
+++ b/dev/vcpkg/ports/mvfst/removexsk.patch
@@ -0,0 +1,13 @@
+diff --git a/quic/CMakeLists.txt b/quic/CMakeLists.txt
+index eeb657bf7..d7896bb39 100644
+--- a/quic/CMakeLists.txt
++++ b/quic/CMakeLists.txt
+@@ -80,7 +80,7 @@ add_subdirectory(priority)
+ add_subdirectory(happyeyeballs)
+ add_subdirectory(folly_utils)
+ add_subdirectory(datagram)
+-add_subdirectory(xsk)
++#add_subdirectory(xsk)
+ add_subdirectory(api)
+ add_subdirectory(client)
+ add_subdirectory(server)
diff --git a/dev/vcpkg/ports/mvfst/vcpkg.json b/dev/vcpkg/ports/mvfst/vcpkg.json
new file mode 100644
index 0000000000..c86b498ea9
--- /dev/null
+++ b/dev/vcpkg/ports/mvfst/vcpkg.json
@@ -0,0 +1,30 @@
+{
+ "name": "mvfst",
+ "version-string": "2026.02.23.00",
+ "description": "mvfst (Pronounced move fast) is a client and server
implementation of IETF QUIC protocol in C++ by Facebook.",
+ "homepage": "https://github.com/facebook/mvfst",
+ "license": "MIT",
+ "supports": "!windows | static",
+ "dependencies": [
+ "boost-context",
+ "boost-date-time",
+ "boost-filesystem",
+ "boost-iostreams",
+ "boost-program-options",
+ "boost-regex",
+ "boost-system",
+ "boost-thread",
+ "fizz",
+ "fmt",
+ "folly",
+ "glog",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}
diff --git a/dev/vcpkg/vcpkg-configuration.json
b/dev/vcpkg/vcpkg-configuration.json
index a3558f7b66..ba7c7f58b3 100644
--- a/dev/vcpkg/vcpkg-configuration.json
+++ b/dev/vcpkg/vcpkg-configuration.json
@@ -9,6 +9,12 @@
"baseline": "f82160a747b1b529daad7ce2f75a0d6c6a0d285d",
"packages": [ "google-cloud-cpp"]
},
+ {
+ "kind": "git",
+ "repository": "https://github.com/Microsoft/vcpkg",
+ "baseline": "2d32fae67c755b665794a0650f5d268979d7807f",
+ "packages": [ "libsodium"]
+ },
{
"kind": "git",
"repository": "https://github.com/Microsoft/vcpkg",
diff --git a/dev/vcpkg/vcpkg.json b/dev/vcpkg/vcpkg.json
index ebe2329ab0..69b252a0e9 100644
--- a/dev/vcpkg/vcpkg.json
+++ b/dev/vcpkg/vcpkg.json
@@ -1,6 +1,6 @@
{
"$schema":
"https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
- "builtin-baseline": "4334d8b4c8916018600212ab4dd4bbdc343065d1",
+ "builtin-baseline": "42a91624b277a024ead2654ef4618cd2932fe705",
"default-features": ["velox"],
"features": {
"velox": {
@@ -24,6 +24,8 @@
"name": "folly",
"features": ["zstd", "lz4", "lzma", "snappy"]
},
+ "fizz",
+ "fbthrift",
"boost-atomic",
"boost-context",
"boost-circular-buffer",
@@ -48,7 +50,6 @@
"protobuf",
"benchmark",
"icu",
- "thrift",
"libstemmer",
"geos",
"grpc"
@@ -114,7 +115,7 @@
}
},
"overrides": [
- { "name": "fmt", "version": "10.1.1" },
+ { "name": "fmt", "version": "11.2.0" },
{ "name": "liblzma", "version": "5.6.2" },
{ "name": "xsimd", "version": "10.0.0" },
{ "name": "protobuf", "version": "3.21.8"},
@@ -123,6 +124,8 @@
{ "name": "glog", "version": "0.6.0"},
{ "name": "gflags", "version": "2.2.2"},
{ "name": "azure-identity-cpp", "version": "1.11.0"},
+ { "name": "openssl", "version": "3.5.2"},
+ { "name": "fbthrift", "version": "2026.02.23.00"},
{ "name": "grpc", "version": "1.51.1"}
]
}
diff --git a/docs/velox-configuration.md b/docs/velox-configuration.md
index 5b67ef4afe..7f8918d40d 100644
--- a/docs/velox-configuration.md
+++ b/docs/velox-configuration.md
@@ -48,7 +48,7 @@ nav_order: 16
| spark.gluten.sql.columnar.backend.velox.maxSpillFileSize
| π Dynamic | 1GB | The maximum size of a single spill
file created
[...]
| spark.gluten.sql.columnar.backend.velox.maxSpillLevel
| π Dynamic | 4 | The max allowed spilling level with
zero being the initial spilling level
[...]
| spark.gluten.sql.columnar.backend.velox.maxSpillRunRows
| π Dynamic | 3M | The maximum row size of a single spill
run
[...]
-| spark.gluten.sql.columnar.backend.velox.maxTargetFileSize
| π Dynamic | 0b | The target file size for each output
file when writing data. 0 means no limit on target file size, and the actual
file size will be determined by other factors such as max partition number and
shuffle batch size.
[...]
+| spark.gluten.sql.columnar.backend.velox.parquetMaxTargetFileSize
| π Dynamic | 0b | The target file size for each
output file when writing parquet data. 0 means no limit on target file size,
and the actual file size will be determined by other factors such as max
partition number and shuffle batch size.
[...]
| spark.gluten.sql.columnar.backend.velox.memCacheSize
| β Static | 1GB | The memory cache size
[...]
| spark.gluten.sql.columnar.backend.velox.memInitCapacity
| π Dynamic | 8MB | The initial memory capacity to reserve
for a newly created Velox query memory pool.
[...]
|
spark.gluten.sql.columnar.backend.velox.memoryPoolCapacityTransferAcrossTasks
| π Dynamic | true | Whether to allow memory capacity transfer
between memory pools from different tasks.
[...]
diff --git a/ep/build-velox/src/get-velox.sh b/ep/build-velox/src/get-velox.sh
index 71965f6c73..637860db37 100755
--- a/ep/build-velox/src/get-velox.sh
+++ b/ep/build-velox/src/get-velox.sh
@@ -18,8 +18,8 @@ set -exu
CURRENT_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd)
VELOX_REPO=https://github.com/IBM/velox.git
-VELOX_BRANCH=dft-2026_06_06
-VELOX_ENHANCED_BRANCH=ibm-2026_06_06
+VELOX_BRANCH=dft-2026_06_12
+VELOX_ENHANCED_BRANCH=ibm-2026_06_12
VELOX_HOME=""
RUN_SETUP_SCRIPT=ON
ENABLE_ENHANCED_FEATURES=OFF
@@ -69,6 +69,7 @@ function process_setup_ubuntu {
}
function process_setup_centos9 {
+ sed -i "s|run_and_time install_arrow||g" scripts/setup-centos9.sh
echo "Using setup script from Velox"
}
diff --git a/ep/build-velox/src/socket.h b/ep/build-velox/src/socket.h
new file mode 100644
index 0000000000..af50c40490
--- /dev/null
+++ b/ep/build-velox/src/socket.h
@@ -0,0 +1,105 @@
+#ifndef __ASM_GENERIC_SOCKET_H
+#define __ASM_GENERIC_SOCKET_H
+
+#include <asm/sockios.h>
+
+/* For setsockopt(2) */
+#define SOL_SOCKET 1
+
+#define SO_DEBUG 1
+#define SO_REUSEADDR 2
+#define SO_TYPE 3
+#define SO_ERROR 4
+#define SO_DONTROUTE 5
+#define SO_BROADCAST 6
+#define SO_SNDBUF 7
+#define SO_RCVBUF 8
+#define SO_SNDBUFFORCE 32
+#define SO_RCVBUFFORCE 33
+#define SO_KEEPALIVE 9
+#define SO_OOBINLINE 10
+#define SO_NO_CHECK 11
+#define SO_PRIORITY 12
+#define SO_LINGER 13
+#define SO_BSDCOMPAT 14
+#define SO_REUSEPORT 15
+#ifndef SO_PASSCRED /* powerpc only differs in these */
+#define SO_PASSCRED 16
+#define SO_PEERCRED 17
+#define SO_RCVLOWAT 18
+#define SO_SNDLOWAT 19
+#define SO_RCVTIMEO 20
+#define SO_SNDTIMEO 21
+#endif
+
+/* Security levels - as per NRL IPv6 - don't actually do anything */
+#define SO_SECURITY_AUTHENTICATION 22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+#define SO_SECURITY_ENCRYPTION_NETWORK 24
+
+#define SO_BINDTODEVICE 25
+
+/* Socket filtering */
+#define SO_ATTACH_FILTER 26
+#define SO_DETACH_FILTER 27
+#define SO_GET_FILTER SO_ATTACH_FILTER
+
+#define SO_PEERNAME 28
+#define SO_TIMESTAMP 29
+#define SCM_TIMESTAMP SO_TIMESTAMP
+
+#define SO_ACCEPTCONN 30
+
+#define SO_PEERSEC 31
+#define SO_PASSSEC 34
+#define SO_TIMESTAMPNS 35
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
+
+#define SO_MARK 36
+
+#define SO_TIMESTAMPING 37
+#define SCM_TIMESTAMPING SO_TIMESTAMPING
+
+#define SO_PROTOCOL 38
+#define SO_DOMAIN 39
+
+#define SO_RXQ_OVFL 40
+
+#define SO_WIFI_STATUS 41
+#define SCM_WIFI_STATUS SO_WIFI_STATUS
+#define SO_PEEK_OFF 42
+
+/* Instruct lower device to use last 4-bytes of skb data as FCS */
+#define SO_NOFCS 43
+
+#define SO_LOCK_FILTER 44
+
+#define SO_SELECT_ERR_QUEUE 45
+
+#define SO_BUSY_POLL 46
+
+#define SO_MAX_PACING_RATE 47
+
+#define SO_BPF_EXTENSIONS 48
+
+#define SO_INCOMING_CPU 49
+
+#define SO_ATTACH_BPF 50
+#define SO_DETACH_BPF SO_DETACH_FILTER
+
+#define SO_ATTACH_REUSEPORT_CBPF 51
+#define SO_ATTACH_REUSEPORT_EBPF 52
+
+#define SO_CNX_ADVICE 53
+
+#define SCM_TIMESTAMPING_OPT_STATS 54
+
+#define SO_MEMINFO 55
+
+#define SO_INCOMING_NAPI_ID 56
+
+#define SO_COOKIE 57
+
+#define SCM_TIMESTAMPING_PKTINFO 58
+
+#endif /* __ASM_GENERIC_SOCKET_H */
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]