Reference Platform History

Below is a list of all the VFX Reference Platform targets going back to the initial release for CY2014.

Each annual reference platform is designated by the calendar year in which major product releases should be targeting that particular reference.

All versions should be considered exact required versions, except for those components where indicates that:

  CY2021 CY2020 CY2019 CY2018 CY2017 CY2016 CY2015 CY2014
Linux gcc 9.3.1
(see notes)
6.3.1
(see notes)
6.3.1
(see notes)
6.3.1
(see notes)
4.8.2 with bugfix or 4.8.3 4.8.2 with bugfix or 4.8.3 4.8.2 4.1.2
glibc 2.17 2.17 2.17 2.17 2.12 2.12 2.12  
macOS Minimum Deployment Target in Xcode 10.13
(see notes)
             
Windows Minimum Platform Toolset Visual Studio 2017              
Windows SDK v10              
Common Components Python
(built with ucs4)
3.7.x
(see notes)
3.7.x
(see notes)
2.7.9 - 2.7.latest
(Python 3 tech preview release)
2.7.5 - 2.7.latest 2.7.5 - 2.7.latest 2.7.5 - 2.7.latest 2.7.x 2.7.3
Qt 5.15.x 5.12.x 5.12.x 5.6.1 - 5.6.latest (modified) 5.6.1 (modified) 5.6.1 (modified) 4.8.x 4.8.5
PyQt 5.15 5.12 5.12 5.6 5.6 5.6    
Qt for Python
(PySide)
5.15 5.12 (with patch)
or 5.13
5.12 2.0.x 2.0.x 2.0 1.2.x 1.2
NumPy 1.19.x 1.17.x 1.14.x 1.12.1 1.9.2 1.9.2    
OpenEXR 3.0.x 2.4.x 2.3.x 2.2.x 2.2.x 2.2.x 2.2.x 2.0.1
Ptex 2.3.2 2.3.2 2.1.33 2.1.28 2.1.28 2.0.42    
OpenSubdiv 3.4.x 3.4.x 3.3.x 3.3.x 3.1.x 3.0.x 2.5.x 2.3.3
OpenVDB 8.x 7.x 6.x 5.x 4.x 3.x 3.0.x  
Alembic 1.7.x 1.7.x 1.7.x 1.7.x 1.6.x 1.5.8 1.5.x 1.5.x
FBX 2021.x 2020.x 2019.x 2018.x latest latest latest 2015
OpenColorIO 2.0.x 1.1.x
(v2 in CY2021)
1.1.0 1.0.9 1.0.9 1.0.9 1.0.9 1.0.7
ACES 1.2 1.1 1.1 1.0.3 - 1.0.latest 1.0.x 1.0    
Boost 1.73 1.70 1.66 1.61 1.61 1.55 1.55 1.53
Intel TBB 2020 Update 2 2019 Update 6 2018 2017 Update 6 4.4 4.3 4.2 4.1
Intel MKL 2020 2019 2018 2017 Update 2 11.3 11.3    
C++ API/SDK C++17 C++14 C++14 C++14 C++11 C++11    
Note - Minimum Deployment Target in Xcode

Xcode’s “Deployment Target” identifies the earliest OS version on which your software can run.

To set the Deployment Target for the compiler, use the option "-mmacosx-version-min=10.13“ to specify the APIs marked as available. For the linker, use the option "-macosx_version_min 10.13" to instruct the linker to create a key in the Info.plist file which marks the executable as being able to run or not for a given OS version.

The MACOSX_DEPLOYMENT_TARGET environment variable also sets the minimum deployment target and is used if the compiler option is not specified. The environment variable is also recognized by CMake.

Note: Despite the backward compatibility, it is still possible for runtime behavior to be affected by SDK and OS version, hardware etc.

More information on configuring developer tools is available in the SDK documentation.

Note - Python 3

The move to Python 3 was delayed from CY2019 to CY2020 due to:

  • No supported combination of Qt 5.6, Python 3 and PySide 2 so Qt first needed to be upgraded.
  • Upgrade of both Qt and Python in the same year was too large a commitment for software vendors and large studios.

Python 3 in CY2020 is a required upgrade as Python 2 will no longer be supported beyond 2020.

Note - gcc 9

For users of RHEL-derived Linux distributions, the Redhat Developer Toolset (DTS) offers gcc and other build tooling that provide increased compatibility and it is used by many software vendors and studios. DTS 9.1 provides gcc 9.3.1 for compatibility with CY2021.

For those who want or need to use llvm, some studios have been successful building clang with DTS and using that to build software that is compatible with vendor-provided libraries.

Since gcc 5.1, libstdc++ introduced a new library ABI that includes new implementations of std::string and std::list. In order to maintain backwards compatibility the old implementations are still supported in parallel with the new ones. The choice of implementation is made using the _GLIBCXX_USE_CXX11_ABI macro, and the VFX Reference Platform is still using the older option so the compiler setting should be _GLIBCXX_USE_CXX11_ABI=0, although that setting may not be supported by some distros yet. The Platform will move to the newer implementations in a future year once the major Linux distributions have made the transition.

Note - gcc 6

UPDATE: May 10th 2020 - Redhat DTS 6.1 is no longer actively supported so availability may be limited. More information available on this vfx-platform-discuss thread.

UPDATE: November 26th 2017 - CY2018 changed from gcc 5 to gcc 6 due to integration issues discovered with the older version.

Redhat/CentOS systems can obtain gcc 6.3.1 by installing Redhat DTS 6.1. To install Red Hat Developer Toolset 6.1 on CentOS 7:

sudo yum -y install centos-release-scl
sudo yum -y install devtoolset-6

If you are looking for gcc 6.3.1 source code then a copy can be found in the CentOS Vault.

Since gcc 5.1, libstdc++ introduced a new library ABI that includes new implementations of std::string and std::list. In order to maintain backwards compatibility the old implementations are still supported in parallel with the new ones. The choice of implementation is made using the _GLIBCXX_USE_CXX11_ABI macro, and the VFX Reference Platform is still using the older option so the compiler setting should be _GLIBCXX_USE_CXX11_ABI=0. The Platform will move to the newer implementations in a future year once the major Linux distributions have made the transition. RHEL/CentOS 7 and Redhat DTS still use the original implementations by default.

Note - gcc 4

The vanilla gcc 4.8.2 has a serious bug that was fixed in 4.8.3 and some Linux distribution vendors actually ship a patched version as 4.8.2. The reason the Platform gave 4.8.2 as an option for CY2016 is that this gcc version is what ships with Redhat Developer Toolset 2.1 that some software vendors werw committed to using through 2016.

The following are the known distributions that ship with a fixed 4.8.2:- Redhat DTS 2.1, RHEL/CentOS 6.

Note - Qt modifications

The major change for CY2016 was a move to Qt 5 which required a port of PySide and modifications to vanilla Qt. In November 2015 CY2016 version of Qt was upped from 5.5.x to 5.6.x with agreement from the community that it was preferable to align with a Long Term Support release. In May 2016 it was updated again to 5.6.1 to incorporate some critical bug fixes.

These modifications are required to avoid the introduction of functional UI regressions impacting DCC tools and consist only of backported bug fixes and critical changes that have not yet been accepted into the mainline Qt distribution. The need for these modifications is not new, currently some software vendors ship their own differently modified Qt so CY2016 represented a significant step forward with the goal of all software vendors sharing an identically modified Qt. We are working with the Qt Company to eliminate the need for these modifications entirely in a future release, potentially as soon as CY2019.

These Qt 5.6 modifications are available on Github from these forks of qtbase, qtx11extras and qtdeclarative. These modifications to Qt 5.6.1 should be used by anyone who wishes to build Qt applications against the Platforms from CY2016 through to CY2018.

Any reference made in the VFX Reference Platform to any company or any other entity, or to their services or products, is not an endorsement or recommendation nor should it imply any such endorsement or recommendation of the quality or fitness of purpose of that company or entity, or its services or products. In no event shall the Visual Effects Society be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with the use of or reliance on any such content, goods, or services identified in the VFX Reference Platform or the Visual Effects Society website.