Изменения в версии 3.5.0

From EjudgeWiki
Revision as of 10:06, 25 January 2016 by Cher (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.5.0

Время выхода: 30 декабря 2015 г.

Предыдущая версия Следующая версия

Общие исправления

Исправлены предупреждения, возникавшии при компиляции системы компилятором gcc-5.3.

ej-compile

Добавлена специальная поддержка для компилятора javac версии 7. По умолчанию поддерживается javac текущей версии (8), но если необходимо, может быть проинсталлирован jdk7.

Улучшена поддержка UTF-8 в выводе ошибок компилятора. Недопустимые UTF-8 последовательности заменяются на '?'.

ej-contests

Просмотр исходного кода реализован в виде отдельной страницы, а не как скачивание файла, как раньше. Исходный код подсвечивается в соответствии с языком программирования (для некоторых языков).

Улучшена диагностика ошибочных ситуаций при сдаче решения на проверку привилегированным пользователем (например, недопустимый язык).

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

Добавлен специальный интерфейс для пакетного управления турниром. Сервер получает зашифрованную команду, которая позволяет зарегистрировать нового участника в турнир, или войти под указанным пользователем в турнир. Команда пересылается в зашифрованном виде, чтобы сделать возможным использование этого интерфейса в URL.

Исправления нескольких ошибок работы с памятью, которые приводили к падению программы.

Добавлена глобальная конфигурационная переменная start_on_first_login. Эта конфигурационная переменная действует для виртуальных турниров. Если данная опция включена, то виртуальный турнир автоматически начинается при первом входе участника в турнир.

Активный вариант задачи передается в форматные подстановки при получении имени заголовочного и хвостового файла (см. source_header, source_footer).

Добавлены две конфигурационных переменных min_score_1 и min_score_2 секции описания задачи. Эти конфигурационные переменные позволяют задать "неснижаемый остаток" баллов при побальном оценивании задачи.

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

Добавлена поддержка глобальной конфигурационной переменной dates_config_file. Переменная позволяет задать имя дополнительного конфигурационного файла, который содержит ограничения по датам для задач. Это позволяет разделить общие свойства задач и ограничения по времени сдачи задач. Кроме того, общие свойства задач могут быть вынесены в отдельные файлы и добавлены в основной конфигурационный файл с помощью @include.

Поддерживается конфигурационная переменная wtl_is_cf секции описания задачи. Если эта переменная установлена, то ошибка Wall Time Limit Exceeded при тестировании файлов будет расцениваться как ситуация Check Failed.

При отображении очереди задач на тестирование отображаются все очереди тестирования, используемые в данном турнире.

Изменена обработка приоритетов задач тестирования. Для каждого уровня приоритетов поддерживается отдельная очередь посылок. При выборке очередного решения сначала случайным образом выбирается очередь, из которой будет выбрано первое решение. Вероятность выбора очереди зависит от разности приоритетов. Если разность приоритетов равна 1, то вероятность выбора из менее приоритетной очереди примерно в два раза меньше, чем из более приоритетной очереди. Приоритет посылок при перетестировании устанавливается равным 3 (не 10, как ранее).

На странице очереди тестирования отображаются тестирующие компьютеры и состояние тестирования на них. Для тестирующих компьютеров доступны следующие действия: удалить устаревший файл состояния, остановить программу ej-super-run на данном компьютере, выключить данный компьютер. Для поддержки последней опции ej-super-run должен быть запущен со специальными опциями командной строки.

Добавлен новый статус завершения SY (Synchronization Error). Он предназначен для более информативной диагностики задач на взаимодействие процессов.

При выборе посылок для скачивания добавлены новые возможности по именованию файлов: добавление номера турнира к имени файла; добавление времени сдачи посылки к имени файла; скачивать решения со статусом OK и PR; скачивать решения со статусом OK, PR, IG, RJ

При скачивании посылок игнорируются скрытые посылки.

В архиве, создаваемом при скачивании посылок, пробелы заменяются на подчеркивания.

При скачивании посылок поддерживается опция использовать внешнее имя задачи (extid) вместо имени задачи (short_name) при создании каталогов задачи. Например, если несколько задач фактически являются одной и той же задачей, то с помощью указания параметра extid в конфигурации второй задачи, можно задать, что решения второй задачи в скачиваемом архиве будут размещаться в том же каталоге, что и решения первой задачи.

Добавлена новая глобальная конфигурационная переменная enable_virtual_restart. Если данная опция установлена, участник виртуального турнира может удалить свое прохождение и начать турнир заново.

В условии задачи в формате XML поддерживается элемент <review_notes>. Текст внутри этого элемента отображается при просмотре исходного кода участников. В этом элементе могут храниться дополнительные критерии проверки для проверяющих данную задачу.

Картинки и прочие материалы, вставляемые в XML-условие, должны находиться в каталоге attachments каталога задачи. Это сделано, чтобы закрыть возможность скачивать другие файлы, находящиеся в каталоге задачи. Исправлены потенциальные path traversal уязвимости.

Исправлено некорректное отображение страниц, когда длина URL просмотра протокола тестирования или просмотра ответа пользователя становилась слишком большой.

Исправлено отображение суммарной таблицы прохождения для output-only задач в режиме турнира olympiad.

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

ej-super-server

При создании новых пользователей из CSV-файла реализована опция 'register_existing', при которой, если пользователь уже существует в базе, он просто регистрируется на турнир, а операция создания пользователей не завершается с ошибкой.

ej-super-run

При старте программы не проверяется наличие системных пользователей, указанных в файле ejudge.xml, в системе.

При загрузке .inf-файлов поддерживаются подстановки.

Улучшена поддержка mono-языков.

Добавлены несколько новых опций командной строки, назначение которых - задать режимы работы для облачного окружения (например, Amazon EC2).

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

Поддерживаются переменные окружения AWS_INSTANCE_ID, AWS_LOCAL_HOSTNAME, AWS_LOCAL_IP, AWS_PUBLIC_HOSTNAME, AWS_PUBLIC_IP, EJ_SUPER_RUN_ID значения которых копируются в файл состояния.

Директива start_cmd, заданная для задачи, не конфликтует с директивой start_cmd тестера. В случае, если заданы обе, реальная командная строка для запуска программы на тестирование имеет вид:

start_cmd_prob start_cmd_tst PROG

таким образом, директива start_cmd, заданная в описании задачи, будет корректно работать с любыми языками программирования: java, valgrind, mono, которые сами требуют задания start_cmd.

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

Улучшено автоопределение локальных IP-адресов и имени хоста.

Реализован новый экспериментальный режим запуска программ на тестирование. В этом режиме тестируемая программа запускается под пользователем 'ejexec', а не под тем же пользователем, под которым работает сама система (обычно ejudge). Для поддержки этого режима требуется проинсталлировать несколько suid-root исполняемых файлов в каталог исполняемых файлов ejudge.

Язык mono-C# использует компилятор 'mcs' вместо 'gmcs', который в новых версиях mono отсутствует.

Поддерживается прозрачное размещение скриптов компиляции и выполнения в каталоге, отличном от стандартного.

ejudge-edit-users

При редактировании строки комбинация Ctrl-B позволяет переставить два слова местами.

style_archive

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

style_c

Программа проверки стиля программ на Си корректно обрабатывает директивы #line.