| # WebKit programming languages |
| |
| ## C++ |
| |
| Most WebKit code is written in C++. But a reasonable question is, “Which version C++?” |
| |
| It’s C++17. |
| We eventually plan to move forward to C++20 and beyond. |
| Before we do that we make sure that compilers and libraries |
| on the platforms that WebKit contributors are working on are ready. |
| |
| The relevant compilers are versions of clang, gcc, and Visual Studio. |
| The WebKit project has [a document explaining which version of gcc is required](https://trac.webkit.org/wiki/WebKitGTK/GCCRequirement). |
| |
| ## Scripts |
| |
| The preferred language for WebKit project scripts is Python. |
| We have legacy scripts in Perl and Ruby, but we ask that new scripts be done in Python. |
| |
| ### Python |
| |
| Some WebKit scripts are in Python 3, others in Python 2. What’s the policy on that? |
| |
| #### Scripts used for building and testing WebKit |
| |
| This includes scripts like `run-webkit-tests` and `build-webkit`. |
| |
| All of these scripts must be written so that they are compatible with both Python 2 and Python 3. |
| Some ports build on environments that have only Python 2, including the internal Apple build |
| environment for older Apple OS versions such as macOS Mojave. |
| Other ports build on environments that have only Python 3. |
| |
| At some point in the future the Python 2 requirement will be relaxed. |
| |
| #### Scripts used for developing WebKit |
| |
| This includes scripts like `configure-xcode-for-embedded-development` and `lint-test-expectations`. |
| |
| These scripts must be compatible with Python 3, |
| and do not need to be compatible with Python 2. |
| While some WebKit development is done on systems |
| that don’t have Python 3 installed, the vast majority is not |
| and so we’re not requiring Python 2 compatibility for new scripts |
| that aren’t part of building and testing. |
| |
| #### Which version of Python 3? |
| |
| At the moment, the practical minimum version of Python 3 is Python 3.7.3. |
| Most platforms have newer versions, and that is the version in included with macOS Catalina. |