Skip to content

Test and support Windows builds #5

Description

@4ment

Test and support Windows builds

Description

cpplink has been developed and tested primarily on macOS. The codebase is currently untested on Windows, so we need to assess Windows compatibility and address any platform-specific issues.

Goals

  • Build cpplink successfully on Windows.
  • Test the C++ library and command-line program.
  • Identify and fix platform-specific compilation or runtime issues.
  • Test the Python bindings on Windows, if available.
  • Ensure the existing test suite runs successfully on Windows.
  • Document any Windows-specific build or development requirements.

Areas to investigate

  • CMake configuration and compiler compatibility (MSVC and/or Clang).
  • Filesystem and path handling.
  • Platform-specific C++ APIs or assumptions.
  • Threading and concurrency behaviour.
  • Memory management and alignment.
  • Arrow/Parquet dependencies.
  • Python/pybind11 integration.
  • Command-line argument and file handling.
  • Tests involving temporary files or directories.
  • Differences between macOS and Windows newline/path conventions.

Suggested approach

  1. Set up a Windows CI workflow, initially using GitHub Actions.
  2. Build with a supported Windows compiler.
  3. Run the complete C++ test suite.
  4. Build and test the Python bindings.
  5. Fix compatibility issues discovered during CI.
  6. Add Windows to the project's supported/tested platforms.
  7. Document the supported Windows compiler and build configuration.

Acceptance criteria

  • cpplink builds successfully on Windows.
  • All existing C++ tests pass on Windows.
  • Python bindings build and tests pass on Windows.
  • Arrow/Parquet functionality is tested on Windows.
  • Windows CI runs automatically for pull requests.
  • Any Windows-specific requirements are documented.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions