Difference between revisions of "Добавление нового языкового процессора"

From EjudgeWiki
Line 20: Line 20:
 
| флаг поддержки безопасного режима
 
| флаг поддержки безопасного режима
 
|-
 
|-
| <tt>short_name<tt>
+
| <tt>short_name</tt>
 
| краткое название языка (как правило, определяется автоматически)
 
| краткое название языка (как правило, определяется автоматически)
 
|-
 
|-
| <tt>long_name<tt>
+
| <tt>long_name</tt>
 
| полное название языка
 
| полное название языка
 
|-
 
|-

Revision as of 08:55, 7 August 2008

Навигация: Главная страница/Система ejudge/Расширение/Добавление нового языка программирования или компилятора.

Руководство по добавлению поддержки языков программирования, приведенное здесь, относится к системе ejudge версии не ниже 2.3.8.

Добавление поддержки нового языка программирования в систему ejudge выполняется в несколько шагов.

  1. Определение параметров добавляемого языка
  2. Написание настроечного скрипта (lang-version.in)
  3. Написание скрипта компиляции (lang.in)
  4. Переконфигурация поддерживаемых языков с помощью программы ejudge-configure-compilers

Определение параметров языка программирования

Параметры языка программирования, необходимые для поддержки языка в системе ejudge, перечислены ниже:

arch архитектура языка
insecure флаг поддержки безопасного режима
short_name краткое название языка (как правило, определяется автоматически)
long_name полное название языка
src_sfx стандартный суффикс файла с исходным текстом на данном языке программирования
exe_sfx стандартный суффикс исполняемого файла на данном языке программирования
version версия компилятора или интерпретатора языка
arg аргумент, указанный при конфигурировании языка программами ejudge-setup или ejudge-configure-compilers

Основной параметр языка программирования — это архитектура (arch). Под архитектурой понимается системное окружение, в котором запускается тестируемая программа. Система ejudge поддерживает следующие архитектуры:

  • linux — статически скомпонованная исполняемая программа
  • linux-shared — динамически скомпонованная исполняемая программа (в том числе и скрипты)
  • java — байт-код java
  • msil — байт-код .NET
  • dos — приложения DOS

Архитектура linux является архитектурой по умолчанию. Если язык имеет архитектуру linux, то параметр arch для этого языка должен либо отсутствовать, либо иметь пустое значение.

Второй параметр языка — это флаг, корректно ли работает тестируемая программа на данном языке при запуске в безопасном режиме. Если язык имеет архитектуру linux, java или dos, то тестируемые программы на таком языке, как правило, корректно работают в безопасном режиме, при этом поддерживаются все ограничения безопасности. Если язык имеет архитектуру msil, то безопасный режим для него не поддерживаются. Приложения на таком языке могут тестироваться, но при этом никаких ограничений безопасности на работу приложения накладываться не будет. Если язык имеет архитектуру linux-shared, то безопасный режим для такого языка поддерживается, однако тестируемая программа в безопасном режиме может работать некорректно или не работать вообще.

В любом случае, если есть сомнения в работоспособности программы в безопасном режиме, требуется проверка на простых программах, как работающих со стандартными потоками, так и работающих с файлами.

Если добавляемый язык программирования не поддерживает безопасный режим, то параметр языка insecure должен быть равен 1. Если безопасный режим поддерживается, то параметр должен отсутствовать или иметь пустое значение.

Из языков программирования, поддерживаемых системой ejudge в стандартной поставке в версии 2.3.8, небезопасными являются языки gcj (GNU Java), gfortran (GNU Fortran), mcs (Mono C#), mzscheme (MzScheme), php (PHP), vbnc (Mono Visual Basic), yabasic (YaBasic).