RFC: Encapsulating Windows/MSVC portability support in Velox #18005
tinadu1018
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi Velox maintainers,
I opened PR #17897 to contribute Windows/MSVC support for Velox. Based on feedback from @Yuhta, I’d like to discuss the design first, specifically how to encapsulate platform-dependent changes so Windows support does not add long-term maintenance noise across the codebase.
Related prior issue: #6274.
Goal
Enable contributor-maintained, best-effort Windows/MSVC support while keeping the impact on existing Linux/macOS development as small as possible.
The core concern is valid: the current PR is large and has too many
_WIN32/_MSC_VERguards spread across normal Velox files. I’d like to restructure the work, so platform-specific logic is mostly isolated behind a small number of portability/build layers.Proposed approach
Isolate Windows build setup under dedicated files such as
windows/vcpkg/..., Windows CMake presets/helper modules, and an optional non-required Windows CI workflow.Centralize compiler and OS compatibility helpers in a small portability layer, for example
velox/common/base/Portability.h,velox/common/base/windows/..., andvelox/common/memory/windows/....Prefer platform-specific implementation files selected by CMake over large inline
#ifdefblocks in core logic, e.g.LocalFileWindows.cpporProcessBaseWindows.cpp.Split PR Add Windows/MSVC support #17897 into smaller staged PRs: build skeleton, base portability helpers, memory/file/process abstractions, numeric/MSVC fixes, module-by-module fixes, and optional best-effort Windows CI.
Questions
I’m not asking the core team to own Windows support. My goal is to contribute and maintain it in a way that keeps the burden low for existing Velox maintainers and contributors.
All reactions