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