I find the following text in section 8.1: https://coderunner.org.nz/mod/book/view.php?id=198&chapterid=817
It is recommended that template graders be written in Python, regardless of the language in which the student answer is written, and that Python's subprocess module be used to execute the student code plus whatever test code is required. This ensures that errors in the syntax or runtime errors in the student code do not break the template program itself, allowing it to output a JSON answer regardless. Some examples of per-test template graders are given in the section Template grader examples.
I don't understand the logic of this recommendation. It seems to me that someone who does know Python (such as myself) would rather write the checking code in his language of choice. But for that he would need some simple harness code in Python which does the following things 1) calls a specified subprocess passing along a serialised versions of the QUESTION and STUDENT objects, 2) collects its stderr (which should be empty) and outputs a json string if there was stderr indicating error-in-subprocess, 3) outputs a json string indicating error-in-subprocess if the subprocess does not print a valid json string, 4) detects whether the subprocess failed to exit with status=0 (crashed etc) and output an appropriate json string indicating error-in-subprocess, 5) takes the json string produced by the subprocess and returns it to the system.