Version limits

From Unvanquished
Jump to: navigation, search

Here are documented versions of dependencies (systems, tools, libraries, languages…) we can't require a newer version without actually deciding to raise our requirement, with reasons why we currently have such limitations.

It means pull requests should not require something higher than that unless the purpose of the pull request is to raise our requirements (because time have passed and we can raise them, or something like that).

It also helps to know where efforts are required if we actually need to raise such limitations.

Version relations

It is important to make sure the released engine doesn't require something higher than the updater, but it's possible to keep the released engine requirement lower than the updater, because users with old systems may still use the unizip. The same can be said for build dependencies that can be lower than the release dependencies because users with old systems may still build the game themselves.

To sum it up: updater dependency version ≥ engine release dependency version ≥ engine build dependency version.

Version upper limits

Component Dependency Version Why
Systems
Engine Debian 12 Used to build the Linux releases in docker.
Engine Windows
🚧️ TODO: ?
Because Windows users usually stick with the preinstalled Windows.
Engine macOS 10.14 Current minimal requirement for OpenAL, we better keep it as low as possible.
Updater Debian 12 Because of the released engine.
Updater Windows
🚧️ TODO: ?
Because Windows users usually stick with the preinstalled Windows.
Updater macOS 10.14 Because of the released engine.
Compilers
Engine GCC 12 The Linux compiler in Debian 12.
Engine MinGW 14 The MinGW compiler in Debian 13.
Engine AppleClang 14 The highest AppleClang compatible with the Darling docker.
Engine Clang 14 Because of AppleClang 14.
Engine deps GCC 12 The Linux compiler in Debian 12.
Engine deps MinGW 14 The MinGW compiler in Debian 13.
Engine deps AppleClang any The requirement is MACOSX_DEPLOYMENT_TARGET=10.14.
Game Clang 3.6 Because of PNaCl 4.2.1.
Builders
Any CMake 3.28.6 The highest version of CMake known to be running in the Darling docker.
Libraries
Engine Linux glibc 2.36 Because of Debian 12.
Engine Linux glibc++ 12.2.0 Because of Debian 12.
Languages
Engine C 17 Because of AppleClang 14.
Engine C++ 20 Because of AppleClang 14.
Game C 99 Because of Clang 3.6 (PNaCl 4.2.1).
Game C++ 14 Because of Clang 3.6 (PNaCl 4.2.1).
Game Lua 5.4 Because of the Lua version we embed.
Any Python 3.11.2 Because of Debian 12.
Any Bash 3.2.57 Because of the obsolete macOS bash (Apple will never update it).