- There has significant work in streamlining and improving support for the Python bindings. Thanks peterychang! (1928)
- The Conditional Contextual Bandit reduction got merged in, this reduction allows you to express problems where there are multiple slots to fill. See [here](https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Conditional-Contextual-Bandit) for the wiki page. (#1816) (1995) (2078) (2141)
- CMake install targets have been added to the build files (2172) (2135)
- Now you can find and link VW easily in other projects:
CMake
find_package(VowpalWabbit REQUIRED)
add_executable(my_exe main.cpp)
target_link_libraries(my_exe PRIVATE VowpalWabbit::vw)
- Slim VW got merged into master. This is an experimental lightweight inference runtime that supports a subset of VW features. (2028)
- Bug fixes! (see [all changes](All-Changes) below)
Internal improvements
We are at work overhauling and modernizing VW, some of the relevant changes on that front are below:
- Migrate c arrays to std::array (2094)
- Make hashing constexpr in C++14 and unify rotl impl (2093)
- Make is_example_header const (2095)
- Allow constructor arugments for calloc_or_throw (2070)
- Learner now holds type erased reduction data (2060)
- Use numeric_limits (2107)
- Unify throwing of exceptions to use vw_exception instead of bare std:exception (2171)
- Cb explore adf atomization (2069)
- Refactor cb_adf reduction (2057)
- Move cb_sample to be class based (2087)
- Atomize topk reduction (2050)
- Atomize autolink reduction (2047)
Other notable changes:
- `--version` now includes commit id if available at build time (1951)
- Macos added as CI target (1965)
- Allow escaped command lines (2157)
- Update MSVC Toolchain to v14.1 (1988)
- Multiinstance mode for multiline examples (1934)
All Changes
<details>
<summary>Click to expand all changes in 8.8.0</summary>
- Fix warning (2179)
- Add/exclude new folders in the python MANIFEST (2180)
- fix some warnings (2177)
- Fixes for Learning2Search Subsystem (2176)
- Install rapidjson too (2174)
- Use standard save/load functionality for sklearn Python lib (2142)
- Default the label for CCB when reading cached labels (2158)
- Allow escaped command lines (2157)
- Fix header install locations (2172)
- Unify throwing of exceptions to use vw_exception instead of bare std::exception (2171)
- Disallow combining no_sample and cb_sample (2148)
- Fix memory leak in search.cc (2167)
- Fix unlabeled sgd examples (2162)
- Add deleter for parsed examples (2153)
- Fix misinterpreted negative option (2149)
- Catalina segfault mitigation (2152)
- Implement CCB type binding for Python (2141)
- Update test dependencies (2147)
- Fix typo: setup.py is not in vowpal_wabbit/python (2143)
- Throw instead of silently append nullptr when types don't match (2139)
- Fix variadic macro warning (2138)
- Create testing harness for cluster operation of VW and add test (2134)
- Improve VW support for CMake install process (2135)
- Properly support default build type, fix comment, define project version (2133)
- Update cluster readme to markdown, cleanup, format code (2131)
- Fix slim build and various CMake fixes (2130)
- Update CMakeLists.txt (2127)
- fixed docker image version (2126)
- Fix segfault when ring_size argument is not supplied (2125)
- Python: fix deprecated joblib (2068)
- forgot to set a parameter (2114)
- Add option to turn off sampling for CCB (2096)
- Remove redunant copy from CCB reduction (2112)
- Fix segfault in CCB - MTR must clean up predictions allocated for cost sensitive examples (2111)
- Softmaxpredfile (2113)
- Update vw_types.natvis (2109)
- Use numeric_limits (2107)
- Refactor cb_adf reduction (2057)
- Fix an LGTM warning in recommend (2105)
- Update CMakeSettings.json (2104)
- Remove all usages of "using namespace std" (2071)
- Fix lots of warnings and clang-tidy suggestions (2085)
- Make hashing constexpr in C++14 and unify rotl impl (2093)
- Migrate c arrays to std::array (2094)
- Cb explore adf initialize vars (2102)
- "-q" as default nc delay option (2098)
- Move cb_sample to be class based (2087)
- Cb explore adf atomization (2069)
- Fix OSX builds when not using Anaconda. (2097)
- Mac Os X CI tests fixes (2035)
- Make is_example_header const (2095)
- Enable use of newer standards (2092)
- mitigate clang-cl SIMD issue (2091)
- Java Binding Improvements (2081)
- fix: softmax can overflow (2088)
- Fix type issues and windows version in cmake file (2084)
- Atomize topk reduction (2050)
- Update badges in Python readme (2086)
- pdrop support for cb/ccb dsjson (2078)
- Add CMake option to force color codes (2082)
- Atomize autolink reduction (2047)
- Add forwarding header for commonly used objects in reductions headers (2080)
- Fix initilizer (2073)
- Force OSX to build .so files for python (2061)
- Allow constructor arugments for calloc_or_throw (2070)
- Propagate cache reading failures (2062)
- Learner now holds type erased reduction data (2060)
- Remove unnecessary null checks (2067)
- Remove most usages of unsafe sprintf function (2054)
- Fix LGTM Java build issues (2063)
- Add unit tests to coverage report (2053)
- remove copy from closure, and do by reference (2058)
- Limit python install parallelisation to number of cpus (2056)
- Update noexcept specifier (2048)
- Fix memory leak in CCB prediction (2065)
- Constrain doxygen input dirs, remove graphs (2055)
- vw_slim into master (2028)
- DBG helper and new natvis (2042)
- Multiinstance mode for multiline examples (1934)
- Properly add CCB index feature with stride/offset (2041)
- Ataymano/memory leaks fixes (2020)
- Implement explicit included actions for CCB (1995)
- Add VW-JNI SNAPSHOT publishing to nightly build
- Fix compile errors on centos (2005)
- Install all headers as fix for missing headers in installed library (1994)
- Add comment to to tovw to clarify usage (1999)
- Add comment to learner.h (1997)
- Update MSVC Toolchain to v14.1 (1988)
- Remove deprecated projects and old scripts (1992)
- fixed command line argument retrieval from parsed model (1993)
- Fix implicit fallthrough warning and unused variable warning in GCC (1984)
- Replace nanpattern and infpattern with std:: equivalents (1983)
- Migrate Travis to migrated Docker image + cleanup old files (1982)
- Add Azure pipeline for Linux CI (1981)
- Add constexpr and noexcept to some functions, cleanup unused functions (1985)
- vw-hyperopt. Passing additional command when training and validating (1959)
- Ensure vw object cannot be moved or copied (1986)
- Fix building GCOV with Clang (1980)
- Update RunTests to be able to find binaries in the build directory (1979)
- Test and unify usage of ec_is_example_header (1970)
- Remove thread_local_storage from ccb (1976)
- Remove hard requirement for git during Windows build (1977)
- Action scores print tag (1971)
- Fix some warnings (1973)
- Remove two makefiles that were missed in Cmake change (1969)
- cd_adf: Added importance weight probability clipping for cb_type mtr, ips, dr (1952)
- Fix file permissions for macos CI scripts (1966)
- Add macos pipeline (1965)
- Add LICENSE to the python source package (1963)
- Add source info to VW Nuget description, and update copyright years. (1962)
- Update new_version script (1956)
- Update python README to reflect new build proceedures (1961)
- Conditional Contextual Bandit (1816)
- Java Maven pom.xml.in update (1954)
- Add git commit to output of --version (1951)
- cover and regcb: data.counter++ only in learn examples (not predict) (1950)
- Spark/JNI multipass fixes and AllReduce quiet support (1949)
- cb_explore_adf: fixed bug when resetting cb_type + improvements (1948)
- vw-hyperopt (add support for passing namespaces) (1941)
- Tau first should count only learn examples (not predict) (1944)
- Python distributions (1928)
- Enable suppressing NuGet version tag for official builds (1946)
- Fix predict path for cb_explore_adf First (1939)
- CS simulator v3.0 (1932)
- cs/cli/vw_label.h: Avoid to throw for precision issues (1933)
- Remove hard-coded version in Windows CI package gen script. (1936)
- Fix clear labels the correct way (1930)
</details>