# Runtime Environments This page contains notes about using various runtime environments in ReCodEx as well as their internal usage inside Isolate sandbox. Only special cases are noted here. ## Python We use a wrapper script that translates exceptions to error codes. This script can be found in the [utils](https://github.com/ReCodEx/utils/blob/master/runners/py/runner.py) repository. Due to a [Python bug](http://bugs.python.org/issue10496), the interpreter requires the `$HOME` variable to be set to something. Otherwise, it tries to look up the UID used by Isolate in `/etc/passwd` and fails. Setting `HOME=/box` seems to work. ## Java By default, we use a script that looks for a class with a `main` method and executes it for running Java programs. There has to be only one class containing `main` method, otherwise error will be observed. The executed script is named `javarun.java` and can be found in the [utils](https://github.com/ReCodEx/utils/blob/master/runners/java/javarun.java) repository. In tested solutions we use its byte-compiled counterpart `javarun.class`, so be aware of name collisions. ## C# The C# solutions are executed with the help of [wrapper code](https://github.com/ReCodEx/utils/blob/master/runners/cs/Wrapper.cs). This code searches for `main` method in submitted source codes. There has to be only one class containing `main` method, otherwise error will be thrown. The name of the file containing wrapper code is `ReCodEx_Csharp_Wrapper.cs` and it contains namespace `CodEx` with class `Wrapper`, so be aware of filename and class collisions. In C# language there are none of the handy functions to operate with textual inputs like `scanf` in C. Therefore for every C# build in ReCodEx there is [Reader](https://github.com/ReCodEx/utils/blob/master/runners/cs/Reader.cs) library included to make life of C# programmers easier. Please note that library is suppose to work only with ASCII files and some difficulties can be observed with modern Unicode (UTF-8) encodings. The `Reader` library is located in `ReCodEx_Csharp_Reader.cs` library contains namespace `CodEx` with class `Reader`, so again, be aware of filename and class collisions. ## Go Everything has to be in one package (standard `main` executable package). TODO...