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

From EjudgeWiki

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

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

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

Инсталляция на Fedora

Новые возможности:

ejudge.xml

Добавлен новые элементы compiler_options и compiler_option.

<compiler_options>
  <compiler_option compiler="gcc" option="-std=gnu18" />
  <compiler_option compiler="g++" option="-std=gnu++20" />
</compiler_options>

Используются для сборки проверяющих программ по "Check contest settings".

Добавлен новый элемент default_variant_plugin.

contest.xml

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

ej-agent

Новая программа для распределенной компиляции и тестирования. Программа реализует серверную часть для обмена по новому протоколу взаимодействия сервера ejudge и серверов тестирования и компиляции.

ej-compile

Поддерживается работа с помощью agent.

Улучшено определение версии компиляторов dotnet.

ej-contests

Обновлен URL ejudge в copyright notice.

Таблица runs значительно расширена. Структура run_entry в памяти занимает 256 байт вместо 128 и дополнительно содержит:

  • место для хранения sha256 хеша исходного кода вместо sha1;
  • идентификатор тестирования в формате UUID (128 бит) вместо 16 бит;
  • uuid задачи
  • добавлено поле serial_id, которое содержит уникальный 64-битный номер посылки. В отличие от run_id это поле уникально для всей таблицы в целом.
  • флаг is_vcs, который устанавливается в 1 при посылках в систему с помощью gitlab/github интеграции.
  • поле is_checked для хранения признака того, что посылка проверена.

Для добавления полей в структуру еще зарезервировано 95 байт.

В таблице runs для полей заданы значения по-умолчанию.

Во всех таблицах устранены нулевые даты (0000-00-00 00:00:00). Вместо этого используется NULL.

judge_uuid используется как идентификатор запроса на компиляцию и выполнение.

Изменена схема именования пакетов на компиляцию и запуск программ.

Страница "Testing queue" административного интерфейса содержит больше информации о времени ожидания посылки в очереди.

Поддерживается хранение статуса турнира в базе mysql с помощью плагина status-mysql.

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

Поддерживается хранение аватаров пользователей в базе mysql с помощью плагина avatar-mysql.

Поддерживается хранение информации о вариантах задач в базе mysql с помощью плагина variant-mysql.

Флаг insecure языкового процессора игнорируется при работе в режиме контейнеризации. Все поддерживаемые языки программирования считаются "безопасными".

Добавлена глобальная конфигурационная переменная variant_plugin.

При просмотре отчета о тестировании отображается максимальный объем использованной оперативной памяти (RSS) при работе программы.

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

Добавлен новый плагин submit-mysql для хранения пользовательских посылок в базе mysql.

Добавлена поддержка интеграции с gitlab и github.

В XML-лог турнира добавлена информация о времени начала и окончания работы каждого участника (userrunheaders).

Добавлена конфигурационная переменная задачи enable_user_input.

Поддерживается тестирование пользовательских программ на входных данных пользователя (опция "запустить на сервере").

Добавлена глобальная конфигурационная переменная time_between_submits.

Добавлена глобальная конфигурационная переменная max_input_size.

Добавлена глобальная конфигурационная переменная max_submit_num.

Добавлена глобальная конфигурационная переменная max_submit_total.

Добавлен новый плагин userprob-mysql, который позволяет хранить информацию для тройки пользователь-турнир-задача.

Поддерживаются http-запросы с телом в формате application/json.

Добавлена конфигурационная переменная задачи enable_vcs.

Добавлена конфигурационная переменная задачи post_pull_cmd.

Добавлена конфигурационная переменная vcs_compile_cmd.

Добавлен плагин vcs_gitlab, поддерживающий интеграцию с gitlab и github.

В запросе submit-run можно указывать язык программирования не только как его числовой id, а как строку короткого имени (short_name).

В режиме enable_extended_info в переменные окружения для проверяющей программы и интерактора добавляется переменная окружения EJUDGE_TEST_COUNT.

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

Корректно обрабатывается пустая строка в конфигурационных переменных test_pat.

Поддерживается аутентификация с помощью Yandex OAUTH.

Добавлена глобальная конфигурационная переменная print_just_copy.

Поддерживается logo_url в отображаемых страницах.

ejudge-control

Добавлены опции --agent, --instance-id, --queue, -v, --mirror, -nhb, -ht, -hb, -hc.

ej-compile-control

Добавлены опции --agent, --instance-id, --queue, -v

ej-convert-status

Новая утилита для конвертации файлов статусов в файловой системе или записей статусов в mongodb в базу mysql.

ej-convert-xuser

Новая утилита для конвертации файлов статусов пользователей в файловой системе или записей статусов пользователей в mongodb в базу mysql.

ej-convert-variant

Новая утилита для конвертации файлов информации о варианте задач для пользователей в базу mysql.

ej-jobs

Плагин для telegram поддерживает хранение своего состояния в базе mysql.

Старый файл сокета удаляется при старте программы.

ej-super-run

Ограничение на PID процесса проверяется в соответствии с ограничениями Linux (#101).

При запуске тестируемой программы диспозиция сигнала SIGPIPE устанавливается по умолчанию (#103).

В тестируемые программы не утекает файловый дескриптор устройства случайных чисел /dev/urandom.

Переработана структура struct testinfo_struct. Новая версия структуры бинарно несовместима с предыдущей. Это потребует перекомпиляции проверяющих программ, написанных с использованием библиотеки libchecker.

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

В отчет о тестировании добавлен атрибут max_rss, который содержит максимальный объем ОЗУ (RSS), использованный при выполнении программы.

При запуске программы с пользовательскими данными предварительно может запускаться программа проверки тестов (test checker). Вывод этой программы добавляется в элемент test_checker.

При запуске программы оценивания поддерживается опция enable_extended_info.

Исправления в обработке comment-and-ok (#115).

При отображении дат используется формат дат ISO (YYYY-MM-DD).

При запуске проверяющей программы в режиме scoring_checker устанавливается переменная окружения EJUDGE_MAX_SCORE (#121).

ej-super-server

Из-за перехода на хранение информации о варианте в базе MySQL отключено редактирование вариантов, назначенных пользователям.

ej-suid-container

Поддерживается работа в случае, когда подсистема контейнеризации не поддерживает файл memory.memsw.limit_in_bytes (например, ubuntu).

ej-vcs-compile

Новая утилита для компиляции проекта в режиме интеграции с github/gitlab.

ejudge-execute

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

.inf-файлы

Добавлено поле ignore_exit_code. Если оно установлено, то проверка кода завершения тестируемой программы не выполняется, то есть программа считается завершившейся успешно при любом коде завершения. Это не включает завершение программы из-за фатального сигнала, что по-прежнему считается ошибкой периода выполнения.

tools/logrotate

Новая утилита, которая переименовывает лог-файлы

libchecker

Переработана структура struct testinfo_struct. Новая версия структуры бинарно несовместима с предыдущей. Это потребует перекомпиляции проверяющих программ, написанных с использованием библиотеки libchecker.

Добавлены функции checker_kill_2, open_control_fd.

Прочее

По умолчанию используется компилятор go из пакета golang, а не gcc-go.

Добавлена поддержка языка swift.

Добавлена поддержка java 18 и 19.