.. _changelog: ChangeLog ========= 2024.01.2 (2024-05-08) ---------------------- Changes ^^^^^^^ - Removed obsolete message to Redis regarding grading completion Fixes ^^^^^ - Fixed issue where failed-to-validate pipelines would crash the grader dispatcher 2024.01.1 (2024-03-31) ---------------------- Additions ^^^^^^^^^ - ``StdioTest``: Added ``compat:denyStderr`` to treat ``stderr`` output as fail - ``Valgrind``: Added ``compat:noMatchStdout`` to ignore comparison of ``stdout`` when running executables in Valgrind Changes ^^^^^^^ - ``StdioTest``: Do not prepend ``./`` if executable is already an absolute path 2024.01.0 (2024-01-20) ---------------------- Changes ^^^^^^^ - Added 15-minute limit to per-stage timeout - Added recovery logic to Redis failures Fixes ^^^^^ - Fixed several issues related to ``DiffWithSkeleton`` - Fixed erroneous writing of report timestamps 2023.09.1 (2023-09-03) ---------------------- Fixes ^^^^^ - Fixed several critical bugs affecting transfer of files between host and container 2023.09.0 (2023-09-01) ---------------------- Additions ^^^^^^^^^ - Added ability to transfer files between host and container via Docker API - Added ability to track runner resource reservation using dummy containers - **[BREAKING]** [API] Added ``log``, ``readPath`` and ``writePath`` to container APIs - [API] Added ``SemVer`` class for parsing semantic versioning strings - [API] Added ``TraceableState`` for debugging coroutine states on deadlocks Changes ^^^^^^^ - Added compression to grader logs after pipeline completes execution - Switched to using Eclipse Temurin JDK - Added enforcement for execute-once behavior of runners - Added timeout detection for runners - Optimized runtime for certain hot regions (e.g. daemon dispatch) - Modularized daemon in preparation for using other IPC software Fixes ^^^^^ - Fixed ``Valgrind`` pipeline stage not working due to ulimit for nofile - Fixed a major issue causing resource exhaustion and deadlocks - Fixed several instances of memory leaks - Fixed compilation of Grader using JDK 17 2022.09.6 (2023-03-28) ---------------------- Fixes ^^^^^ - Fixed a possible deadlock when unbinding expired runners 2022.09.5 (2023-03-27) ---------------------- Additions ^^^^^^^^^ - Added ``grader.logging.file.dir`` configuration property to specify file logging output directory Fixes ^^^^^ - Fixed a possible memory leak when tracking container logs 2022.09.4 (2023-03-22) ---------------------- Fixes ^^^^^ - Attempted to fix more cases where deadlock may occur 2022.09.3 (2022-10-11) ---------------------- Fixes ^^^^^ - Reverted "``GTest``: Fix compilation error when compiling a test case without sources" - Caused compilation errors in GTest with more than one input files - Removed ``srcCompileArgs`` and ``testCompileArgs`` from configuration until this can be fixed 2022.09.2 (2022-10-10) ---------------------- Changes ^^^^^^^ - Temporarily removed support for PyLint - ``pylint2junit``, a Python module used internally for score aggregation, does not support newer versions of PyLint - This will be fixed in a future release Fixes ^^^^^ - ``DockerImageApi``: Always remove intermediate containers if images failed to be built - ``BaseDockerfile``: Always synchronize package repos before installing packages - ``GTest``: Fix compilation error when compiling a test case without sources 2022.09.1 (2022-09-28) ---------------------- Additions ^^^^^^^^^ - Add support for grading assignments written in C programming language Changes ^^^^^^^ - ``Daemon``: Initialize Docker daemon connection at startup 2022.09.0 (2022-09-03) ---------------------- Changes ^^^^^^^ - ``DockerRunner``: Reduce lifetime of resources used by the Runner - Docker daemon resources are now only held within ``DockerRunner.execWithInput`` - Should fix numerous deadlock issues - ``DockerDaemonDispatcher``: Added verification checks on the state of the dispatcher Fixes ^^^^^ - ``Configuration``: Fixed potential race condition in initialization causing multiple instances to be initialized 2022.02.5 (2022-04-15) ---------------------- Fixes ^^^^^ - ``DockerDaemonDispatcher``: Fixed dispatch being stuck if any runner dispatch fails with an exception 2022.02.4 (2022-04-11) ---------------------- Fixes ^^^^^ - ``DockerDaemonDispatcher``: Fixed missing GPU check when finding candidate daemons for dispatch 2022.02.3 (2022-04-10) ---------------------- Fixes ^^^^^ - ``DockerDaemonDispatcher``: Fixed error when mapping missing DRI devices - ``XUnitScoreUnitGenerator``: Fixed "malformed mangled name" error Deprecations ^^^^^^^^^^^^ - [API] ``MangledNameBuilder``: Deprecate passing an empty stage component to ``appendStageComponents`` 2022.02.2 (2022-04-05) ---------------------- Fixes ^^^^^ - ``DockerDaemonDispatcher``: Fixed detection of GPUs on hosts with no DRI devices 2022.02.1 (2022-03-30) ---------------------- Additions ^^^^^^^^^ - Added support for using GPU devices - This feature can be accessed via ``_settings.enable_features.gpu_device`` in the assignment configuration - Add ``python/cuda`` to the list of recognized options for ``_settings.lang`` - Allows enabling CUDA functionality for Python-based pipelines Changes ^^^^^^^ - StdioTest: Presence of stderr output will not mark the stage as failure - Rationale: Some libraries (e.g. Tensorflow) uses stderr messages to show internal states Deprecations ^^^^^^^^^^^^ - ``_settings.allow_network`` in assignment configuration is deprecated - Users should use ``_settings.enable_features.network`` instead 2022.02.0 (2022-02-25) ---------------------- Additions ^^^^^^^^^ - Documentation: Added new pages of documentation specific to creating assignments of specific languages. - StdioTest: Added ``additional_packages`` and ``additional_pip_packages`` to install packages for use in the stage - StdioTest: Added ``hidden`` key to hide output of certain fields from student view - Added meta stages for higher-level abstraction of language-specific pipelines - Added support for Qt compilation Removals ^^^^^^^^ - [API] Removed most deprecated APIs in Release 2021.04 2021.04.1 (2021-10-09) ---------------------- Fixes ^^^^^ - ``FileUtils``: Fix unable to read file when invalid Unicode characters are encountered - ``ContainerExecLogger``: Relax logging retrieval requirement - Container logs can now be retrieved even if the logger has not completed the operation yet 2021.04.0 (2021-04-05) ---------------------- Fixes ^^^^^ - ``DockerConfigParser``: Fixed constant-ordered stages being removed during pipeline reordering process - ``Make``: Fixed stage not properly marked as a pre-grading stage 2021.03.2 (2021-03-14) ---------------------- Fixes ^^^^^ - ``JUnit``: Fixed stage instantiation error due to unresolved path specifications - ``JUnit``: Fixed issues with internal stage injection due to missing per-input stage instantiation Removals ^^^^^^^^ - **[BREAKING]** [API] Migrated ``ReportT`` and ``ReportKind`` to ``model.reporting`` package Deprecations ^^^^^^^^^^^^ - ``JavaCompile``: Deprecate configuration format which accepts ``isCompileDir`` 2021.03.1 (2021-03-06) ---------------------- Additions ^^^^^^^^^ - [API] Add ``PathSpec`` class for explicit type specification for paths Changes ^^^^^^^ - ``FileStructureValidation``: Add default ignore patterns based on common OS files - ``JavaCompile``: Allow multiple specification of file/directory sources - ``JavaCompile``: Add experimental option for optimized compilation Fixes ^^^^^ - ``FileStructureValidation``: Fixed patterns unable to match directories - ``JUnit``: Fixed compilation error when multiple classpaths are specified Removals ^^^^^^^^ - **[BREAKING]** [API] Migrated all reporting DTOs to ``model.reporting`` package 2021.03.0 (2021-03-01) ---------------------- Changes ^^^^^^^ - ``JUnit``: Append ``runArgs`` from configuration to JUnit Runner instead of overriding it - ``JUnit``: Fixed incorrect compilation output path for ``srcInput`` 2021.02.0 (2021-02-24) ---------------------- - Initial stable release