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 work may be required if we actually need to raise such limitations.

Dependency 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 may with old systems still build the game themselves.

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

Dependencies

Component Dependency Version Why
Systems
Engine Debian 11 Used to build the Linux releases in docker.
Engine Windows
🚧️ TODO: ?
Because Windows users usually stick with the preinstalled Windows.
Engine macOS 10.15 Current minimal requirement for OpenAL, we better keep it as low as possible.
Updater Debian 11 Because of the released engine.
Updater Windows
🚧️ TODO: ?
Because Windows users usually stick with the preinstalled Windows.
Updater macOS 10.15 Because of the released engine.
Compilers
Engine GCC 10 The Linux compiler in Debian 11.
Engine MinGW 10 The MinGW compiler in Debian 11 (the same docker image is used to build Linux and Windows binaries).
Engine AppleClang 9 The XCode compiler used to build the macOS release in the Darling docker provides AppleClang 9.
Engine Clang 9 Because of AppleClang 9.
Engine deps GCC 10 The Linux compiler in Debian 11 (the Linux engine deps are built with the engine in docker).
Game Clang 3.6 Because of PNaCl 4.2.1.
Build systems
Any CMake 3.28.6 The highest known version of CMake to be running in the Darling docker.
Libraries
Engine WebP 1.5.0 The latest known version of WebP to build with GCC 10 (not requiring AVX2 compiler support).
Engine Linux glibc 2.27 Because of Debian 11.
Engine Linux glibc++ 3.4.26 Because of Debian 11.
Languages
Engine C
🚧️ TODO: ?
Because of GCC 10 or AppleClang 9. 🚧️ TODO: ?
Engine C++
🚧️ TODO: ?
Because of GCC 10 or AppleClang 9. 🚧️ TODO: ?
Game C
🚧️ TODO: ?
Because of Clang 3.6 (PNaCl 4.2.1).
Game C++
🚧️ TODO: ?
Because of PNaCl Clang 3.6 (PNaCl 4.2.1).
Game Lua
🚧️ TODO: ?
Because of the Lua version we embed.
Any Python
🚧️ TODO: ?
Because of Debian 11 (the same docker image is used to build Linux and NaCl binaries).
Any Bash 3.2.57 Because of the obsolete macOS bash (Apple will never update it).