Difference between revisions of "Изменения в версии 3.10.0"

From EjudgeWiki
(Created page with "Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в в...")
 
(...)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.10.0]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.10.0]]
  
Время выхода: ?? ?? 2022 г.
+
Время выхода: 26 декабря 2022 г.
 +
 
 +
[[Изменения в версии 3.9.1|Предыдущая версия]] [[Изменения в версии 3.10.1|Следующая версия]]
 +
 
 +
[[Инсталляция ejudge 3.9.2+ на Fedora 34+ с нуля|Инсталляция на Fedora]]
 +
 
 +
Новые возможности:
 +
* [[Аутентификация с помощью OAUTH2|Аутентификация с помощью Yandex]] (в дополнение к уже поддерживающимся Google и VK).
 +
* [[Запуск на пользовательских данных|Поддержка запуска программы на сервере]] на тестовых данных пользователя.
 +
* [[Интеграция с github/gitlab|Поддержка интеграции с github и gitlab]].
 +
* [[Параллельное тестирование|Новая модель распределенной компиляции и тестирования]].
 +
* [[Миграция в базу данных|Хранение информации о вариантах задач в MySQL]].
 +
* [[Миграция в базу данных|Отказ от использования MongoDB]].
 +
 
 +
=== [[ejudge.xml]] ===
 +
 
 +
Добавлен новые элементы [[ejudge.xml:compiler_options|<tt>compiler_options</tt>]] и [[ejudge.xml:compiler_option|<tt>compiler_option</tt>]].
 +
<compiler_options>
 +
  <compiler_option compiler="gcc" option="-std=gnu18" />
 +
  <compiler_option compiler="g++" option="-std=gnu++20" />
 +
</compiler_options>
 +
 
 +
Используются для сборки проверяющих программ по "Check contest settings".
 +
 
 +
Добавлен новый элемент <tt>[[ejudge.xml:default_variant_plugin|default_variant_plugin]]</tt>.
 +
 
 +
=== [[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.
 +
 
 +
Флаг <tt>[[serve.cfg:language:insecure|insecure]]</tt>
 +
языкового процессора игнорируется при работе в режиме контейнеризации.
 +
Все поддерживаемые языки программирования считаются "безопасными".
 +
 
 +
Добавлена глобальная конфигурационная переменная
 +
<tt>[[serve.cfg:global:variant_plugin|variant_plugin]]</tt>.
 +
 
 +
При просмотре отчета о тестировании отображается максимальный
 +
объем использованной оперативной памяти (RSS) при работе
 +
программы.
 +
 
 +
Добавлен новый плагин storage-mysql, который позволяет хранить
 +
"файлы" в базе данных mysql. В качестве файлов могут выступать
 +
и файлы с исходным кодом, и файлы с протоколами тестирования.
 +
 
 +
Добавлен новый плагин submit-mysql для хранения пользовательских
 +
посылок в базе mysql.
 +
 
 +
Добавлена поддержка [[Интеграция с github/gitlab|интеграции с gitlab и github]].
 +
 
 +
В XML-лог турнира добавлена информация о времени начала и окончания
 +
работы каждого участника (userrunheaders).
 +
 
 +
Добавлена конфигурационная переменная задачи
 +
<tt>[[serve.cfg:problem:enable_user_input|enable_user_input]]</tt>.
 +
 
 +
Поддерживается [[Запуск на пользовательских данных|тестирование пользовательских программ на входных данных пользователя]] (опция "запустить на сервере").
 +
 
 +
Добавлена глобальная конфигурационная переменная
 +
<tt>[[serve.cfg:global:time_between_submits|time_between_submits]]</tt>.
 +
 
 +
Добавлена глобальная конфигурационная переменная
 +
<tt>[[serve.cfg:global:max_input_size|max_input_size]]</tt>.
 +
 
 +
Добавлена глобальная конфигурационная переменная
 +
<tt>[[serve.cfg:global:max_submit_num|max_submit_num]]</tt>.
 +
 
 +
Добавлена глобальная конфигурационная переменная
 +
<tt>[[serve.cfg:global:max_submit_total|max_submit_total]]</tt>.
 +
 
 +
Добавлен новый плагин userprob-mysql, который позволяет хранить
 +
информацию для тройки пользователь-турнир-задача.
 +
 
 +
Поддерживаются http-запросы с телом в формате application/json.
 +
 
 +
Добавлена конфигурационная переменная задачи
 +
<tt>[[serve.cfg:problem:enable_vcs|enable_vcs]]</tt>.
 +
 
 +
Добавлена конфигурационная переменная задачи
 +
<tt>[[serve.cfg:problem:post_pull_cmd|post_pull_cmd]]</tt>.
 +
 
 +
Добавлена конфигурационная переменная
 +
<tt>[[serve.cfg:problem:vcs_compile_cmd|vcs_compile_cmd]]</tt>.
 +
 
 +
Добавлен плагин vcs_gitlab, поддерживающий интеграцию с gitlab и github.
 +
 
 +
В запросе submit-run можно указывать язык программирования не только
 +
как его числовой id, а как строку короткого имени (short_name).
 +
 
 +
В режиме
 +
<tt>[[serve.cfg:problem:enable_extended_info|enable_extended_info]]</tt>
 +
в переменные окружения для
 +
проверяющей программы и интерактора добавляется переменная
 +
окружения <tt>EJUDGE_TEST_COUNT</tt>.
 +
 
 +
Поддерживается режим печати, при котором исходный код посылки
 +
копируется в специальный каталог, из которого он может быть
 +
скопирован сторонними средствами.
 +
 
 +
Корректно обрабатывается пустая строка в конфигурационных
 +
переменных test_pat.
 +
 
 +
Поддерживается аутентификация с помощью Yandex OAUTH.
 +
 
 +
Добавлена глобальная конфигурационная переменная
 +
<tt>[[serve.cfg:global:print_just_copy|print_just_copy]]</tt>.
 +
 
 +
Поддерживается
 +
<tt>[[contest.xml:logo_url|logo_url]]</tt>
 +
в отображаемых страницах.
 +
 
 +
=== [[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
 +
([https://github.com/blackav/ejudge/pull/101 #101]).
 +
 
 +
При запуске тестируемой программы диспозиция сигнала SIGPIPE устанавливается
 +
по умолчанию
 +
([https://github.com/blackav/ejudge/pull/103 #103]).
 +
 
 +
В тестируемые программы не утекает файловый дескриптор устройства
 +
случайных чисел <tt>/dev/urandom</tt>.
 +
 
 +
Переработана структура struct testinfo_struct. Новая версия
 +
структуры бинарно несовместима с предыдущей. Это потребует
 +
перекомпиляции проверяющих программ, написанных
 +
с использованием библиотеки [[libchecker]].
 +
 
 +
В отчет о тестировании добавлен атрибут max_rss_available,
 +
который устанавливается в значение yes, если отчет о тестировании
 +
содержит информацию об испольновании rss.
 +
 
 +
В отчет о тестировании добавлен атрибут max_rss, который содержит
 +
максимальный объем ОЗУ (RSS), использованный при выполнении программы.
 +
 
 +
При запуске программы с пользовательскими данными предварительно
 +
может запускаться программа проверки тестов (test checker).
 +
Вывод этой программы добавляется в элемент test_checker.
 +
 
 +
При запуске программы оценивания поддерживается опция
 +
<tt>[[serve.cfg:problem:enable_extended_info|enable_extended_info]]</tt>.
 +
 
 +
Исправления в обработке comment-and-ok
 +
([https://github.com/blackav/ejudge/pull/115 #115]).
 +
 
 +
При отображении дат используется формат дат ISO (YYYY-MM-DD).
 +
 
 +
При запуске проверяющей программы в режиме
 +
<tt>[[serve.cfg:problem:scoring_checker|scoring_checker]]</tt>
 +
устанавливается переменная окружения <tt>EJUDGE_MAX_SCORE</tt>
 +
([https://github.com/blackav/ejudge/pull/121 #121]).
 +
 
 +
=== [[ej-super-server]] ===
 +
 
 +
Из-за перехода на хранение информации о варианте в базе MySQL
 +
отключено редактирование вариантов, назначенных пользователям.
 +
 
 +
=== [[ej-suid-container]] ===
 +
 
 +
Поддерживается работа в случае, когда подсистема контейнеризации
 +
не поддерживает файл memory.memsw.limit_in_bytes (например, ubuntu).
 +
 
 +
=== [[ej-vcs-compile]] ===
 +
 
 +
Новая утилита для компиляции проекта в режиме интеграции с github/gitlab.
 +
 
 +
=== [[ejudge-execute]] ===
 +
 
 +
Поддерживаются ограничения по времени и памяти из .inf-файла.
 +
 
 +
=== [[.inf-файлы]] ===
 +
 
 +
Добавлено поле <tt>ignore_exit_code</tt>. Если оно установлено,
 +
то проверка кода завершения тестируемой программы не выполняется,
 +
то есть программа считается завершившейся успешно при любом коде
 +
завершения. Это не включает завершение программы из-за
 +
фатального сигнала, что по-прежнему считается ошибкой
 +
периода выполнения.
 +
 
 +
=== [[tools/logrotate]] ===
 +
 
 +
Новая утилита, которая переименовывает лог-файлы
 +
 
 +
=== [[libchecker]] ===
 +
 
 +
Переработана структура struct testinfo_struct. Новая версия
 +
структуры бинарно несовместима с предыдущей. Это потребует
 +
перекомпиляции проверяющих программ, написанных
 +
с использованием библиотеки [[libchecker]].
 +
 
 +
Добавлены функции <tt>checker_kill_2</tt>, <tt>open_control_fd</tt>.
 +
 
 +
=== Прочее ===
 +
 
 +
По умолчанию используется компилятор go из пакета golang, а не gcc-go.
 +
 
 +
Добавлена поддержка языка swift.
 +
 
 +
Добавлена поддержка java 18 и 19.

Latest revision as of 13:53, 29 January 2023

Навигация: Главная страница/Система 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.