diff --git a/.github/workflows/analysis.yml b/.github/workflows/analysis.yml
index 0c71e1f8a1..d83aacce81 100644
--- a/.github/workflows/analysis.yml
+++ b/.github/workflows/analysis.yml
@@ -40,7 +40,7 @@ jobs:
fail-fast: false
matrix:
include:
- - desc: sonar gcc9/C++14 py39 boost1.76 exr3.1 ocio2.2
+ - desc: sonar gcc9/C++14 py39 exr3.1 ocio2.2
nametag: static-analysis-sonar
os: ubuntu-latest
container: aswf/ci-osl:2023-clang15
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c96e0fc400..5d22b145f4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -34,7 +34,7 @@ jobs:
fail-fast: false
matrix:
include:
- - desc: gcc9/C++17 py3.7 boost1.73 exr2.5 ocio2.0
+ - desc: gcc9/C++17 py3.7 exr2.5 ocio2.0
nametag: linux-vfx2021
runner: ubuntu-latest
container: aswf/ci-osl:2021
@@ -57,7 +57,7 @@ jobs:
python_ver: 3.7
simd: "avx2,f16c"
fmt_ver: 8.1.1
- - desc: gcc9/C++17 py39 boost1.76 exr3.1 ocio2.1
+ - desc: gcc9/C++17 py39 exr3.1 ocio2.1
nametag: linux-vfx2022
runner: ubuntu-latest
container: aswf/ci-osl:2022-clang11
@@ -79,7 +79,7 @@ jobs:
simd: "avx2,f16c"
fmt_ver: 9.1.0
pybind11_ver: v2.8.1
- - desc: icc/C++17 py3.9 boost1.76 exr3.1 ocio2.1 qt5.15
+ - desc: icc/C++17 py3.9 exr3.1 ocio2.1 qt5.15
nametag: linux-vfx2022-icc
runner: ubuntu-latest
container: aswf/ci-osl:2022
@@ -94,7 +94,7 @@ jobs:
OIIO_EXTRA_CPP_ARGS="-fp-model=precise"
# For icc, use fp-model precise to eliminate needless LSB errors
# that make test results differ from other platforms.
- - desc: icx/C++17 py3.9 boost1.76 exr3.1 ocio2.1 qt5.15
+ - desc: icx/C++17 py3.9 exr3.1 ocio2.1 qt5.15
nametag: linux-vfx2022-icx
runner: ubuntu-latest
container: aswf/ci-osl:2022
@@ -120,7 +120,7 @@ jobs:
CMAKE_BUILD_TYPE=Debug
CTEST_TEST_TIMEOUT=1200
CTEST_EXCLUSIONS="broken|png-damaged"
- - desc: gcc11/C++17 py3.10 boost1.80 exr3.1 ocio2.2
+ - desc: gcc11/C++17 py3.10 exr3.1 ocio2.2
nametag: linux-vfx2023
runner: ubuntu-latest
container: aswftesting/ci-osl:2023-clang15
@@ -130,7 +130,7 @@ jobs:
simd: "avx2,f16c"
fmt_ver: 10.1.1
pybind11_ver: v2.10.0
- - desc: gcc11/C++17 py3.11 boost1.82 exr3.2 ocio2.3
+ - desc: gcc11/C++17 py3.11 exr3.2 ocio2.3
nametag: linux-vfx2024
runner: ubuntu-latest
container: aswftesting/ci-osl:2024-clang17
@@ -140,7 +140,7 @@ jobs:
simd: "avx2,f16c"
fmt_ver: 10.1.1
pybind11_ver: v2.10.0
- - desc: oldest/hobbled gcc9.3/C++17 py3.7 boost-1.66 exr-2.4 no-sse no-ocio
+ - desc: oldest/hobbled gcc9.3/C++17 py3.7 exr-2.4 no-sse no-ocio
# Oldest versions of the dependencies that we can muster, and various
# things disabled (no SSE, OCIO, or OpenCV, don't embed plugins).
nametag: linux-oldest
@@ -292,7 +292,7 @@ jobs:
USE_OPENVDB=0
WEBP_VERSION=v1.3.0
# The installed OpenVDB has a TLS conflict with Python 3.8
- - desc: bleeding edge gcc13 C++20 py3.10 OCIO/libtiff/exr-master boost1.74 avx2
+ - desc: bleeding edge gcc13 C++20 py3.10 OCIO/libtiff/exr-master avx2
nametag: linux-bleeding-edge
runner: ubuntu-22.04
cc_compiler: gcc-13
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3289c8e32c..9978f95a89 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -255,9 +255,9 @@ capitalize new words: `class CustomerList;` In general, local variables
should start with lower case. Macros should be `ALL_CAPS`, if used at all.
If your class is extremely similar to, or modeled after, something in the
-standard library, Boost, or something else we interoperate with, it's ok to
+standard library, or something else we interoperate with, it's ok to
use their naming conventions. For example, very general utility classes and
-templates (the kind of thing you would normally find in std or boost) should
+templates (the kind of thing you would normally find in std) should
be lower case with underscores separating words, as they would be if they
were standards.
@@ -290,10 +290,8 @@ Namespaces: yes, use them!
### Third-party libraries
-Prefer C++11 `std` rather than Boost, where both can do the same task.
-Feel free to use Boost classes you already see in the code base, but don't
-use any Boost you don't see us already using, without first checking with
-the project leader.
+Prefer C++17 `std` rather than other libraries, where both can do the same
+task.
Please do use Imath vector, matrix, and utility classes where applicable.
Don't write your own vector or matrix code!
diff --git a/INSTALL.md b/INSTALL.md
index c51c0bfe7d..d1e3b4896d 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -25,7 +25,6 @@ NEW or CHANGED MINIMUM dependencies since the last major release are **bold**.
* libTIFF >= 3.9 (recommended: 4.0+; tested through 4.6)
* libjpeg >= 8 (tested through jpeg9e), or **libjpeg-turbo >= 2.1** (tested
through 3.0)
- * Boost >= 1.53 (recommended: at least 1.66; tested through 1.84)
* **[fmtlib](https://github.com/fmtlib/fmt) >= 7.0** (tested through 10.1).
If not found at build time, this will be automatically downloaded unless
the build sets `-DBUILD_MISSING_FMT=OFF`.
@@ -180,7 +179,6 @@ Building OpenImageIO on Linux or OS X
The following dependencies must be installed to build the core of
OpenImageIO:
-* Boost
* libjpeg
* libtiff
* libpng
@@ -276,15 +274,9 @@ Building on Windows
You will need to have Git, CMake and Visual Studio installed.
-The minimal set of dependencies for OIIO is: Boost, zlib, libTIFF, OpenEXR, and libjpeg or libjpeg-turbo. If you have them built somewhere then you skip
+The minimal set of dependencies for OIIO is: zlib, libTIFF, OpenEXR, and libjpeg or libjpeg-turbo. If you have them built somewhere then you skip
the section below, and will only have to point OIIO build process so their locations.
-* Boost: get the boost source archive, extract into `{BOOST_ROOT}`.
- ```
- cd {BOOST_ROOT}
- bootstrap
- b2
- ```
* zlib: this will build it, and then delete the non-static library, so they don't get picked up:
```
cd {ZLIB_ROOT}
@@ -327,7 +319,6 @@ dependencies.
cd {OIIO_ROOT}
git clone https://github.com/AcademySoftwareFoundation/OpenImageIO .
cmake -S . -B build -DVERBOSE=ON -DCMAKE_BUILD_TYPE=Release ^
- -DBoost_USE_STATIC_LIBS=ON -DBoost_NO_WARN_NEW_VERSIONS=ON -DBoost_ROOT={BOOST_ROOT} ^
-DZLIB_ROOT={ZLIB_ROOT}\build ^
-DTIFF_ROOT={TIFF_ROOT}\build ^
-DOpenEXR_ROOT={EXR_ROOT}\build\dist ^
diff --git a/Makefile b/Makefile
index 720d612dc3..29cbafa1c1 100644
--- a/Makefile
+++ b/Makefile
@@ -383,7 +383,6 @@ help:
@echo " LibRaw OpenColorIO OpenCV OpenGL OpenJpeg OpenVDB"
@echo " PTex R3DSDK TBB TIFF Webp"
@echo " Finding and Using Dependencies:"
- @echo " BOOST_ROOT=path Custom Boost installation"
@echo " OPENEXR_ROOT=path Custom OpenEXR installation"
@echo " ILMBASE_ROOT=path Custom IlmBase installation"
@echo " USE_EXTERNAL_PUGIXML=1 Use the system PugiXML, not the one in OIIO"
diff --git a/conanfile.txt b/conanfile.txt
index ccf068461d..00c30ae476 100644
--- a/conanfile.txt
+++ b/conanfile.txt
@@ -3,7 +3,6 @@ zlib/1.2.11
libtiff/4.0.9
libpng/1.6.37
openexr/2.4.0
-boost/1.70.0
libjpeg/9c
libjpeg-turbo/2.0.2
giflib/5.1.4
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
index 62db51a2a7..5061b09e9e 100644
--- a/docs/ROADMAP.md
+++ b/docs/ROADMAP.md
@@ -33,8 +33,8 @@ here](https://github.com/AcademySoftwareFoundation/OpenImageIO/discussions/4151)
See the [Dependency proposal wiki page](https://github.com/AcademySoftwareFoundation/OpenImageIO/discussions/4151)
* [ ] Big required upgrades with potentially widespread impact on the code base
- - [ ] C++17 [#4155](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4155)
- - [ ] Python 3.7 [#4157](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4157)
+ - [x] C++17 [#4155](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4155)
+ - [x] Python 3.7 [#4157](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4157)
- [ ] OpenEXR/Imath 3.1 [#4156](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4156)
* [ ] Miscellaneous optional upgrades whose changes will be very localized
@@ -51,7 +51,7 @@ See the [Dependency proposal wiki page](https://github.com/AcademySoftwareFounda
- [ ] pybind11 2.6 or 2.7 (from 2.4).
-- [ ] [#4156](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4156) Eliminate the last few places where we use Boost and eliminate it as a dependency.
+- [x] [#4158](https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4158) Eliminate the last few places where we use Boost and eliminate it as a dependency.
diff --git a/src/build-scripts/gh-installdeps.bash b/src/build-scripts/gh-installdeps.bash
index a6eacab008..0c4b76356f 100755
--- a/src/build-scripts/gh-installdeps.bash
+++ b/src/build-scripts/gh-installdeps.bash
@@ -73,7 +73,6 @@ else
time sudo apt-get -q install -y \
git cmake ninja-build ccache g++ \
- libboost-dev libboost-thread-dev libboost-filesystem-dev \
libilmbase-dev libopenexr-dev \
libtiff-dev libgif-dev libpng-dev
if [[ "${SKIP_SYSTEM_DEPS_INSTALL}" != "1" ]] ; then
diff --git a/src/build-scripts/gh-win-installdeps.bash b/src/build-scripts/gh-win-installdeps.bash
index c7cc088edb..98ef24da47 100755
--- a/src/build-scripts/gh-win-installdeps.bash
+++ b/src/build-scripts/gh-win-installdeps.bash
@@ -48,12 +48,6 @@ echo "---------------"
# vcpkg update
#
-time vcpkg install boost-container:x64-windows
-time vcpkg install boost-filesystem:x64-windows
-time vcpkg install boost-math:x64-windows
-time vcpkg install boost-system:x64-windows
-time vcpkg install boost-thread:x64-windows
-
#vcpkg install libdeflate:x64-windows
#vcpkg install zlib:x64-windows
vcpkg install tiff:x64-windows
diff --git a/src/build-scripts/install_homebrew_deps.bash b/src/build-scripts/install_homebrew_deps.bash
index a9dfac282e..f13c2e74a1 100755
--- a/src/build-scripts/install_homebrew_deps.bash
+++ b/src/build-scripts/install_homebrew_deps.bash
@@ -26,7 +26,7 @@ echo "Before my brew installs:"
brew list --versions
# All cases except for clang-format target, we need the dependencies.
-brew install --display-times -q gcc ccache cmake ninja boost || true
+brew install --display-times -q gcc ccache cmake ninja || true
brew link --overwrite gcc
brew install --display-times -q python@${PYTHON_VERSION} || true
brew unlink python@3.8 || true
diff --git a/src/cmake/externalpackages.cmake b/src/cmake/externalpackages.cmake
index 47fa8ce182..781f1abc5b 100644
--- a/src/cmake/externalpackages.cmake
+++ b/src/cmake/externalpackages.cmake
@@ -7,7 +7,6 @@
###########################################################################
if (NOT VERBOSE)
- set (Boost_FIND_QUIETLY true)
set (PkgConfig_FIND_QUIETLY true)
set (Threads_FIND_QUIETLY true)
endif ()
@@ -32,56 +31,6 @@ option (BUILD_MISSING_DEPS "Try to download and build any missing dependencies"
include (FindThreads)
-###########################################################################
-# Boost setup
-if (MSVC)
- # Disable automatic linking using pragma comment(lib,...) of boost libraries upon including of a header
- proj_add_compile_definitions (BOOST_ALL_NO_LIB=1)
-endif ()
-
-# If the build system hasn't been specifically told how to link Boost, link it the same way as other
-# OIIO dependencies:
-if (NOT DEFINED Boost_USE_STATIC_LIBS)
- set (Boost_USE_STATIC_LIBS "${LINKSTATIC}")
-endif ()
-
-if (MSVC)
- # Not linking Boost as static libraries: either an explicit setting or LINKSTATIC is FALSE:
- if (NOT Boost_USE_STATIC_LIBS)
- proj_add_compile_definitions (BOOST_ALL_DYN_LINK=1)
- endif ()
-endif ()
-
-set (Boost_COMPONENTS thread)
-message (STATUS "Boost_COMPONENTS = ${Boost_COMPONENTS}")
-# The FindBoost.cmake interface is broken if it uses boost's installed
-# cmake output (e.g. boost 1.70.0, cmake <= 3.14). Specifically it fails
-# to set the expected variables printed below. So until that's fixed
-# force FindBoost.cmake to use the original brute force path.
-if (NOT DEFINED Boost_NO_BOOST_CMAKE)
- set (Boost_NO_BOOST_CMAKE ON)
-endif ()
-
-checked_find_package (Boost REQUIRED
- VERSION_MIN 1.53
- COMPONENTS ${Boost_COMPONENTS}
- RECOMMEND_MIN 1.66
- RECOMMEND_MIN_REASON "Boost 1.66 is the oldest version our CI tests against"
- PRINT Boost_INCLUDE_DIRS Boost_LIBRARIES )
-
-# On Linux, Boost 1.55 and higher seems to need to link against -lrt
-if (CMAKE_SYSTEM_NAME MATCHES "Linux"
- AND ${Boost_VERSION} VERSION_GREATER_EQUAL 105500)
- list (APPEND Boost_LIBRARIES "rt")
-endif ()
-
-include_directories (SYSTEM "${Boost_INCLUDE_DIRS}")
-link_directories ("${Boost_LIBRARY_DIRS}")
-
-# end Boost setup
-###########################################################################
-
-
###########################################################################
# Dependencies for required formats and features. These are so critical
# that we will not complete the build if they are not found.
diff --git a/src/doc/oiiointro.rst b/src/doc/oiiointro.rst
index 501d9dd556..b4c955f0da 100644
--- a/src/doc/oiiointro.rst
+++ b/src/doc/oiiointro.rst
@@ -257,7 +257,6 @@ against dynamic libraries:
* OpenEXR, Ilmbase, and Half © 2006, Industrial Light & Magic. http://www.openexr.com
* zlib © 1995-2005 Jean-loup Gailly and Mark Adler. http://www.zlib.net
* libpng © 1998-2008 Glenn Randers-Pehrson, et al. http://www.libpng.org
-* Boost © various authors. http://www.boost.org
* GLEW © 2002-2007 Milan Ikits, et al. http://glew.sourceforge.net
* Ptex © 2009 Disney Enterprises, Inc. http://ptex.us
* GIFLIB © 1997 Eric S. Raymond (MIT Licensed). http://giflib.sourceforge.net/
diff --git a/src/libutil/CMakeLists.txt b/src/libutil/CMakeLists.txt
index 5d16049784..5bb4f82d36 100644
--- a/src/libutil/CMakeLists.txt
+++ b/src/libutil/CMakeLists.txt
@@ -89,10 +89,6 @@ function (setup_oiio_util_library targetname)
target_compile_definitions (${targetname} PUBLIC OIIO_STATIC_DEFINE=1)
endif ()
- if (OIIO_DISABLE_BOOST_STACKTRACE)
- target_compile_definitions (${targetname} PRIVATE OIIO_DISABLE_BOOST_STACKTRACE)
- endif ()
-
# Propagate C++ minimum to downstream consumers
target_compile_features (${targetname}
INTERFACE cxx_std_${DOWNSTREAM_CXX_STANDARD})
diff --git a/src/libutil/thread.cpp b/src/libutil/thread.cpp
index 22f7cab035..646002dfec 100644
--- a/src/libutil/thread.cpp
+++ b/src/libutil/thread.cpp
@@ -39,15 +39,8 @@
# include
#endif
-#if 0
-// Use boost::lockfree::queue for the task queue
-# include
-template using Queue = boost::lockfree::queue;
-
-#else
-
-# include
+#include
OIIO_NAMESPACE_BEGIN
namespace pvt {
@@ -91,7 +84,6 @@ template class ThreadsafeQueue {
} // namespace pvt
OIIO_NAMESPACE_END
-#endif
OIIO_NAMESPACE_BEGIN
diff --git a/src/python/py_imagebufalgo.cpp b/src/python/py_imagebufalgo.cpp
index e614b2b72f..4699c9d071 100644
--- a/src/python/py_imagebufalgo.cpp
+++ b/src/python/py_imagebufalgo.cpp
@@ -2392,7 +2392,7 @@ declare_imagebufalgo(py::module& m)
.def_readonly("nfail", &ImageBufAlgo::CompareResults::nfail)
.def_readonly("error", &ImageBufAlgo::CompareResults::error);
- // Use a boost::python::scope to put this all inside "ImageBufAlgo"
+ // Put this all inside "ImageBufAlgo"
py::class_(m, "ImageBufAlgo")
.def_static("zero", &IBA_zero, "dst"_a, "roi"_a = ROI::All(),
"nthreads"_a = 0)
diff --git a/src/python/py_oiio.h b/src/python/py_oiio.h
index b249bb35c6..e80fb81c76 100644
--- a/src/python/py_oiio.h
+++ b/src/python/py_oiio.h
@@ -81,8 +81,6 @@ namespace detail {
namespace PyOpenImageIO {
-//using namespace boost::python;
-
using namespace OIIO;
// clang-format off