2.5 KiB
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 repository. The file is named runner.py
during execution of solutions, so be aware of filename collisions.
Due to a Python bug, 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 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. 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 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
The solutions of Go has to be located only in one package, the standard main
executable package. ReCodEx uses flat folder structure of submitted solution, therefore separate Go packages cannot be used. Multiple files are fine as long as they contain the same package.