diff --git a/.github/workflows/backward_model_load_check.yml b/.github/workflows/backward_model_load_check.yml index dc831a0be57..ad8f6add281 100644 --- a/.github/workflows/backward_model_load_check.yml +++ b/.github/workflows/backward_model_load_check.yml @@ -36,7 +36,7 @@ jobs: cd .. auditwheel repair vowpal_wabbit/wheel_last_commit/*whl -w audit_last_commit/ - name: Upload built wheel - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: test_manylinux_amd64_3.10 path: audit_last_commit/ @@ -50,7 +50,7 @@ jobs: with: python-version: '3.10' - name: Download artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: test_manylinux_amd64_3.10 path: built_wheel @@ -60,7 +60,7 @@ jobs: pip install built_wheel/*.whl python ./test/run_tests_model_gen_and_load.py --generate_models --skip_missing_args --skip_pr_tests "${{ github.event.pull_request.title }}" - name: Upload generated file - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: vw_generated_models path: ~/.vw_runtests_model_gen_working_dir/* @@ -75,7 +75,7 @@ jobs: - uses: actions/checkout@v1 with: submodules: recursive - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: vw_generated_models path: .vw_runtests_model_gen_working_dir diff --git a/.github/workflows/build_docs.yml b/.github/workflows/build_docs.yml index d4813c73d57..058cbf2078d 100644 --- a/.github/workflows/build_docs.yml +++ b/.github/workflows/build_docs.yml @@ -29,7 +29,7 @@ jobs: - name: Build docs run: nix build --print-build-logs .#vw-cpp-docs - name: Upload built docs - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: cxx_docs path: result/html/ @@ -49,7 +49,7 @@ jobs: - name: Build dump options run: cmake --build build -t vw-dump-options - name: Upload vw-dump-options - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: vw-dump-options path: build/utl/dump_options/vw-dump-options @@ -68,7 +68,7 @@ jobs: pip wheel . -w wheel_output/ --global-option --cmake-options="-DSTATIC_LINK_VW_JAVA=On;-DPython_INCLUDE_DIR='/opt/python/cp310-cp310/include/python3.10/'" --verbose auditwheel repair wheel_output/*whl -w audit_output/ - name: Upload built wheel - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: python_wheel path: audit_output/ @@ -87,11 +87,11 @@ jobs: if: ${{ github.event_name == 'push' }} run: echo "VW_SPHINX_VERSION_OVERRIDE=latest" >> $GITHUB_ENV - name: Download Wheel - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: python_wheel - name: Download vw-dump-options - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: vw-dump-options - name: Change permissions to rvw-dump-options @@ -120,7 +120,7 @@ jobs: cd python/docs make html - name: Upload built docs - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: python_docs path: python/docs/build/ @@ -137,11 +137,11 @@ jobs: if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} run: echo "FOLDER_NAME=$(echo ${GITHUB_REF:10})" >> $GITHUB_ENV - name: Download c++ Docs - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: cxx_docs - name: Download Python Docs - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: python_docs - name: Print contents of directory diff --git a/.github/workflows/dotnet_nugets.yml b/.github/workflows/dotnet_nugets.yml index 8b2466fe1e4..5527a727302 100644 --- a/.github/workflows/dotnet_nugets.yml +++ b/.github/workflows/dotnet_nugets.yml @@ -115,7 +115,7 @@ jobs: echo "NugetFileName=$NugetFileName" >> $GITHUB_OUTPUT - name: Upload Combined if: ${{ startsWith(matrix.config.os, 'windows') }} - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: VowpalWabbit.${{steps.get_version.outputs.version}}.nupkg path: nuget_staging/${{ steps.generate-nuget.outputs.NugetFileName }} @@ -130,7 +130,7 @@ jobs: NugetFileName=(*runtime*.nupkg) echo "NugetFileName=${NugetFileName[0]}" >> $GITHUB_OUTPUT - name: Upload .NET Core Runtime - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: VowpalWabbit.runtime.${{matrix.config.runtime_id}}.${{steps.get_version.outputs.version}}.nupkg path: nuget_staging/${{ steps.generate-runtime-nuget.outputs.NugetFileName }} @@ -167,19 +167,19 @@ jobs: # Download the previously built Nuget packages - name: Clear nuget cache run: dotnet nuget locals all --clear - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.win-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.linux-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.osx-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets @@ -226,19 +226,19 @@ jobs: # Download the previously built Nuget packages - name: Clear nuget cache run: dotnet nuget locals all --clear - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.win-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.linux-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.osx-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets @@ -291,19 +291,19 @@ jobs: # Download the previously built Nuget packages - name: Clear nuget cache run: dotnet nuget locals all --clear - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.win-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.linux-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbit.runtime.osx-x64.${{steps.get_version.outputs.version}}.nupkg path: downloaded_nugets diff --git a/.github/workflows/forward_model_load_check.yml b/.github/workflows/forward_model_load_check.yml index 294fffb840a..18478eddd13 100644 --- a/.github/workflows/forward_model_load_check.yml +++ b/.github/workflows/forward_model_load_check.yml @@ -33,7 +33,7 @@ jobs: /opt/python/cp310-cp310/bin/pip wheel . -w wheel_output/ --global-option --cmake-options="-DSTATIC_LINK_VW_JAVA=On;-DPython_INCLUDE_DIR='/opt/python/cp310-cp310/include/python3.10/'" --verbose auditwheel repair wheel_output/*whl -w audit_output/ - name: Upload built wheel - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: test_manylinux_amd64_3.10 path: audit_output/ @@ -47,7 +47,7 @@ jobs: with: python-version: '3.10' - name: Download artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: test_manylinux_amd64_3.10 path: built_wheel @@ -57,7 +57,7 @@ jobs: pip install built_wheel/*.whl python ./test/run_tests_model_gen_and_load.py --generate_models --skip_pr_tests "${{ github.event.pull_request.title }}" - name: Upload generated file - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: vw_generated_models path: ~/.vw_runtests_model_gen_working_dir/* @@ -72,7 +72,7 @@ jobs: - uses: actions/checkout@v1 with: submodules: recursive - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: vw_generated_models path: .vw_runtests_model_gen_working_dir diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 72c46368688..6aa29613ee3 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -34,7 +34,7 @@ jobs: ${{ matrix.config.base_path }}bin/pip wheel . -w wheel_output/ --global-option --cmake-options="-DSTATIC_LINK_VW_JAVA=On;-DPython_INCLUDE_DIR='${{ matrix.config.base_path }}include/${{ matrix.config.include_dir_name }}'" --verbose auditwheel repair wheel_output/*whl -w audit_output/ - name: Upload built wheel - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: wheel_${{ matrix.config.version }} path: audit_output/ @@ -53,7 +53,7 @@ jobs: with: submodules: recursive - name: Download Wheel - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: wheel_${{ matrix.config.version }} - name: Install dependencies diff --git a/.github/workflows/native_nugets.yml b/.github/workflows/native_nugets.yml index f7dd9ba30c6..671a6ecc0ed 100644 --- a/.github/workflows/native_nugets.yml +++ b/.github/workflows/native_nugets.yml @@ -81,7 +81,7 @@ jobs: $NugetFileName = Get-ChildItem *.nupkg -name echo "NugetFileName=$NugetFileName" >> $GITHUB_OUTPUT - name: Upload - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: VowpalWabbitNative-${{matrix.toolset}}-x64.${{ steps.get_version.outputs.version }}.nupkg path: nuget_staging/${{ steps.generate-nuget.outputs.NugetFileName }} @@ -115,7 +115,7 @@ jobs: echo "version=$version" >> $GITHUB_OUTPUT # Download and install nuget - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: VowpalWabbitNative-${{matrix.toolset}}-x64.${{ steps.get_version.outputs.version }}.nupkg path: downloaded_nugets diff --git a/.github/workflows/python_wheels.yml b/.github/workflows/python_wheels.yml index 21e216412e4..fe8578727fc 100644 --- a/.github/workflows/python_wheels.yml +++ b/.github/workflows/python_wheels.yml @@ -46,7 +46,7 @@ jobs: ${{ matrix.config.base_path }}bin/pip wheel . -w wheel_output/ --global-option --cmake-options="-DSTATIC_LINK_VW_JAVA=On;-DPython_INCLUDE_DIR='${{ matrix.config.base_path }}include/${{ matrix.config.include_dir_name }}'" --verbose auditwheel repair wheel_output/*whl -w audit_output/ - name: Upload built wheel - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: manylinux_amd64_${{ matrix.config.version }} path: audit_output/ @@ -64,7 +64,7 @@ jobs: - uses: actions/checkout@v1 with: submodules: recursive - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: manylinux_amd64_${{ matrix.version }} path: built_wheel @@ -103,7 +103,7 @@ jobs: shell: bash run: python setup.py sdist - name: Upload built wheel - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: python_source_distribution path: dist/*.tar.gz @@ -117,7 +117,7 @@ jobs: with: python-version: '3.10' architecture: 'x64' - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: python_source_distribution - name: Install dependencies @@ -169,7 +169,7 @@ jobs: bash -exc '${{ matrix.config.base_path }}bin/pip wheel . -w wheel_output/ --global-option --cmake-options="-DSTATIC_LINK_VW_JAVA=On;-DPython_INCLUDE_DIR='${{ matrix.config.base_path }}include/${{ matrix.config.include_dir_name }}'" --verbose && \ auditwheel repair wheel_output/*whl -w audit_output/' - name: Upload built wheel - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: manylinux_aarch64_${{ matrix.config.version }} path: audit_output/ @@ -196,7 +196,7 @@ jobs: - name: Set up QEMU id: qemu uses: docker/setup-qemu-action@v1 - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: manylinux_aarch64_${{ matrix.config.version }} path: built_wheel @@ -247,7 +247,7 @@ jobs: conda install python=${{ matrix.config.version }} wheel zlib boost py-boost flatbuffers pip wheel . -w wheel_output/ --global-option --cmake-options="-DSTATIC_LINK_VW_JAVA=On;-DPython_INCLUDE_DIR=\"$CONDA_PREFIX/include/${{ matrix.config.include_dir_name }}\"" --verbose - name: Upload built wheel - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: macos_amd64_${{ matrix.config.version }} path: wheel_output/ @@ -266,7 +266,7 @@ jobs: - uses: actions/setup-python@v2 with: python-version: ${{ matrix.version }} - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: macos_amd64_${{ matrix.version }} path: built_wheel @@ -332,7 +332,7 @@ jobs: pip install wheel pip wheel . -w ${{github.workspace}}\\wheel_output --global-option --vcpkg-root="${{ env.VCPKG_ROOT }}" --global-option --cmake-generator="Visual Studio 16 2019" --global-option --cmake-options="-DVCPKG_OVERLAY_PORTS=${{github.workspace}}\\vowpal_wabbit\\${{ matrix.config.overlay_ports }}" --verbose - name: Upload built wheel - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: windows_amd64_${{ matrix.config.version }} path: wheel_output @@ -352,7 +352,7 @@ jobs: - uses: actions/setup-python@v2 with: python-version: ${{ matrix.version }} - - uses: actions/download-artifact@v1 + - uses: actions/download-artifact@v4 with: name: windows_amd64_${{ matrix.version }} path: built_wheel diff --git a/.github/workflows/run_benchmarks_manual.yml b/.github/workflows/run_benchmarks_manual.yml index b2a5cf022e3..ed2224ebf6a 100644 --- a/.github/workflows/run_benchmarks_manual.yml +++ b/.github/workflows/run_benchmarks_manual.yml @@ -29,7 +29,7 @@ jobs: shell: bash run: cp ./.scripts/linux/*benchmarks.sh test/benchmarks/ - name: Upload benchmark module - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: benchmark-module path: test/benchmarks/ @@ -43,7 +43,7 @@ jobs: shell: bash run: rm -rf test/benchmarks - name: Download master's benchmark module - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: benchmark-module path: test/benchmarks/ @@ -63,13 +63,13 @@ jobs: shell: bash run: ./.scripts/linux/run-benchmarks.sh base-benchmarks.json - name: Upload ${{ github.event.inputs.base_ref }} benchmark results - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: base-benchmarks path: base-benchmarks.json if-no-files-found: error - name: Upload benchmark compare - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: benchmark-compare path: benchmark/tools/ @@ -87,18 +87,18 @@ jobs: submodules: recursive ref: ${{ github.event.inputs.compare_ref }} - name: Download ${{ github.event.inputs.base_ref }} benchmark results - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: base-benchmarks - name: Download benchmark compare - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: benchmark-compare - name: Remove existing benchmark module (in favour of master) shell: bash run: rm -rf test/benchmarks - name: Download master's benchmark module - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4 with: name: benchmark-module path: test/benchmarks/ diff --git a/.github/workflows/valgrind.yml b/.github/workflows/valgrind.yml index f24630265cb..227701b61b7 100644 --- a/.github/workflows/valgrind.yml +++ b/.github/workflows/valgrind.yml @@ -24,19 +24,19 @@ jobs: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_EXPERIMENTAL_BINDING=On -DVW_FEAT_FLATBUFFERS=On -DVW_FEAT_CSV=On -DVW_FEAT_CB_GRAPH_FEEDBACK=On -DSTD_INV_SQRT=ON cmake --build build - name: Upload vw binary - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: vw path: build/vowpalwabbit/cli/vw if-no-files-found: error - name: Upload spanning_tree binary - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: spanning_tree path: build/vowpalwabbit/spanning_tree_bin/spanning_tree if-no-files-found: error - name: Upload to_flatbuff binary - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: to_flatbuff path: build/utl/flatbuffer/to_flatbuff @@ -62,13 +62,13 @@ jobs: - uses: actions/checkout@v1 with: submodules: recursive - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v4 with: name: vw - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v4 with: name: spanning_tree - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v4 with: name: to_flatbuff - name: run tests diff --git a/ext_libs/vcpkg b/ext_libs/vcpkg index 53bef8994c5..a7b6122f6b6 160000 --- a/ext_libs/vcpkg +++ b/ext_libs/vcpkg @@ -1 +1 @@ -Subproject commit 53bef8994c541b6561884a8395ea35715ece75db +Subproject commit a7b6122f6b6504d16d96117336a0562693579933 diff --git a/vowpalwabbit/config/src/cli_help_formatter.cc b/vowpalwabbit/config/src/cli_help_formatter.cc index 8cc6dfe8a69..530d20028c0 100644 --- a/vowpalwabbit/config/src/cli_help_formatter.cc +++ b/vowpalwabbit/config/src/cli_help_formatter.cc @@ -8,6 +8,7 @@ #include "vw/config/options.h" #include +#include #include #include @@ -191,4 +192,4 @@ std::string cli_help_formatter::format_help(const std::vector class formatter : public formatter { public: - auto format(VW::reductions::automl::automl_state c, format_context& ctx) -> decltype(ctx.out()) + auto format(VW::reductions::automl::automl_state c, format_context& ctx) const -> decltype(ctx.out()) { return formatter::format(std::string{VW::to_string(c)}, ctx); } @@ -344,7 +344,7 @@ template <> class formatter : public formatter { public: - auto format(VW::reductions::automl::config_state c, format_context& ctx) -> decltype(ctx.out()) + auto format(VW::reductions::automl::config_state c, format_context& ctx) const -> decltype(ctx.out()) { return formatter::format(std::string{VW::to_string(c)}, ctx); } @@ -354,7 +354,7 @@ template <> class formatter : public formatter { public: - auto format(VW::reductions::automl::config_type c, format_context& ctx) -> decltype(ctx.out()) + auto format(VW::reductions::automl::config_type c, format_context& ctx) const -> decltype(ctx.out()) { return formatter::format(std::string{VW::to_string(c)}, ctx); } diff --git a/vowpalwabbit/core/include/vw/core/ccb_label.h b/vowpalwabbit/core/include/vw/core/ccb_label.h index 2e7e98539b6..73740f84ad1 100644 --- a/vowpalwabbit/core/include/vw/core/ccb_label.h +++ b/vowpalwabbit/core/include/vw/core/ccb_label.h @@ -81,7 +81,7 @@ template <> class formatter : public formatter { public: - auto format(VW::ccb_example_type c, format_context& ctx) -> decltype(ctx.out()) + auto format(VW::ccb_example_type c, format_context& ctx) const -> decltype(ctx.out()) { return formatter::format(std::string{VW::to_string(c)}, ctx); } @@ -105,4 +105,4 @@ inline void parse_label(VW::ccb_label& ld, VW::label_parser_reuse_mem& reuse_mem { VW::parse_ccb_label(ld, reuse_mem, words, logger); } -} // namespace CCB \ No newline at end of file +} // namespace CCB diff --git a/vowpalwabbit/core/include/vw/core/slates_label.h b/vowpalwabbit/core/include/vw/core/slates_label.h index 0cd089c2ebb..227cb39bc2f 100644 --- a/vowpalwabbit/core/include/vw/core/slates_label.h +++ b/vowpalwabbit/core/include/vw/core/slates_label.h @@ -81,9 +81,9 @@ template <> class formatter : public formatter { public: - auto format(VW::slates::example_type c, format_context& ctx) -> decltype(ctx.out()) + auto format(VW::slates::example_type c, format_context& ctx) const -> decltype(ctx.out()) { return formatter::format(std::string{VW::to_string(c)}, ctx); } }; -} // namespace fmt \ No newline at end of file +} // namespace fmt diff --git a/vowpalwabbit/core/include/vw/core/vw_string_view_fmt.h b/vowpalwabbit/core/include/vw/core/vw_string_view_fmt.h index 0d42ac750dd..6f3cdff6300 100644 --- a/vowpalwabbit/core/include/vw/core/vw_string_view_fmt.h +++ b/vowpalwabbit/core/include/vw/core/vw_string_view_fmt.h @@ -13,6 +13,7 @@ #include #include +#include namespace fmt { diff --git a/vowpalwabbit/core/src/merge.cc b/vowpalwabbit/core/src/merge.cc index 7425deea09c..46e2b16b5f4 100644 --- a/vowpalwabbit/core/src/merge.cc +++ b/vowpalwabbit/core/src/merge.cc @@ -16,6 +16,8 @@ #include "vw/core/vw_math.h" #include "vw/io/io_adapter.h" +#include + #include #include diff --git a/vowpalwabbit/core/src/parse_args.cc b/vowpalwabbit/core/src/parse_args.cc index 3d33bdecd4b..7feaccce6f1 100644 --- a/vowpalwabbit/core/src/parse_args.cc +++ b/vowpalwabbit/core/src/parse_args.cc @@ -44,6 +44,8 @@ #include "vw/io/owning_stream.h" #include "vw/text_parser/parse_example_text.h" +#include + #include #include diff --git a/vowpalwabbit/core/src/vw.cc b/vowpalwabbit/core/src/vw.cc index c8af91a744d..1b739a1f52d 100644 --- a/vowpalwabbit/core/src/vw.cc +++ b/vowpalwabbit/core/src/vw.cc @@ -23,6 +23,7 @@ #include "vw/core/unique_sort.h" #include "vw/text_parser/parse_example_text.h" +#include #include namespace