Releases: jcrodriguez-dis/moodle-mod_vpl
Release list
VPL 4.5.0
VPL (Virtual Programming Lab) 4.5.0 – Release Notes
Overview
This release introduces a major new Activity Modes system for the VPL module, significant IDE and user experience improvements, enhanced evaluator extensibility, expanded language similarity/tokenizer support, and multiple reliability and performance enhancements.
Major Features
New Activity Modes System
VPL now supports multiple configurable activity modes that alter visibility, submission, and interaction behavior.
Modes available:
- Normal: Uses the previous standard activity behavior. This is the default mode.
- No Students: Students have no access to the activity, regardless of other settings. This mode prevents student access to the activity, including grading information in the gradebook. If the activity is accidentally visible, only the activity name will be shown.
- Students Read-Only: Students are granted read-only access to the activity (students cannot edit or submit), regardless of other settings. This mode allows students to access the activity, including grading information in the gradebook. There is no need to check internal access limits such as dates, passwords, networks, or exceptions (overrides). General Moodle "Access restrictions" still apply.
- Based On: Marks the activity as a template to be used in the "Based On" feature. This mode prioritizes the activity in the template selection list and also applies the "No Students" mode.
- VPL Question: Marks the activity as a template for one or more VPL Questions. All required basic configurations are automatically applied except for the "Required files" setting. This mode prevents the activity from appearing in the gradebook and also applies the "No Students" mode.
- Example: This mode preserves the legacy Example mode that has existed in VPL for a long time.
List of VPL activities in a course (Virtual Programming Labs option menu) enhanced
The Virtual Programming Labs option menu has been enhanced with a new table format:
- Standard styling is used to show submissions and grading reports by activity.
- Columns can be hidden.
- Table download functionality is available.
- Filtering by "Activity Mode" is supported.
Activity view UI updates for teachers
The activity view for teachers has been enhanced with more descriptive information:
- Teachers now receive warnings when activities are configured in non-standard modes.
- Network checks are displayed to indicate whether students can access the activity from the current network or machine.
- SEB configuration checks are displayed to show whether students can access the activity using the current SEB browser and configuration.
- Exception/override summaries are displayed with links for quick modification.
IDE Improvements
A new preferences system allows users to configure IDE and terminal behavior from a unified preferences dialog.
New configurable preferences
Editor
- Theme
- Font size
- Key bindings
- Show invisibles
- Live autocompletion
Terminal
- Theme
- Font size
Additional IDE enhancements
- Preferences button moved to the right side of the status bar.
- Redesigned status bar with: unsaved changes indicators, action links, and web app browser launch links.
- Improved clipboard handling and terminal reliability.
- Improved fullscreen and page scrolling behavior.
- Restricted editing mode now allows copying text from comments and descriptions inside the IDE.
- Better handling of binary files and MIME types. Now binary file formats as pdf are shown.
- Improved file rename and update logic.
- Improved IDE status synchronization when files are removed.
- Improved VNC resize handling.
Other enhancements
Evaluator Subplugin Improvements
- Evaluator subplugins can now define configurable settings in the execution options form.
- Preparation data used during Run and Debug actions can now be modified by evaluators.
Execution Server / GUI Improvements
- Added script support for running HTML in execution server GUI mode.
- Improved execution server certificate messages.
Mark student first access to exam activity
- Empty submissions are automatically saved on first access when SEB or password restrictions are enabled.
Similarity Detection Language Support Improvements
New or updated support for:
Ada, ASM, C/C++, Clojure, C#, COBOL, D, Dart, Eiffel, Erlang, Fortran, F#, Go, Haskell, HTML, Java, JavaScript, Julia, Kotlin, Lisp, Lua, Matlab, Pascal, Perl, PHP, Prolog, Python, R, Ruby, Rust, Scala, Scheme, Shell, SQL, Text, TypeScript, Verilog, VHDL, and Visual Basic.
GIOTES Improvements
A fatal error mechanism has been added. If a grading reduction greater than twice the grade range is applied during a test, execution of the remaining tests stops and the minimum grade is applied.
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 4.1, 4.2, 4.3, 4.4, 4.5, 5.0, 5.1, and 5.2
- PHP: Versions 7.4 through 8.3
Note: VPL release numbers are independent of Moodle release numbers, unlike other Moodle modules.
Upgrading from a Previous Version
Updating to the latest version is strongly recommended to benefit from recent security updates, bug fixes, and feature improvements.
Additionally, updating VPL Jail Servers to the latest version is recommended for full compatibility.
Upgrade Steps for VPL 4.5.0
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade. Upgrades from VPL version 2.4 or later are supported.
VPL 4.4.2
VPL (Virtual Programming Lab) 4.4.2 Maintenance Update – Release Notes
VPL 4.4.2 is a maintenance release for the 4.4 branch. It focuses on bug fixes and user-interface improvements.
Bug Fixes
- Added the missing
require_oncefor thevpl_submission_CEclass in the privacy provider. - Fixed default evaluator BIOTES output handling: after process termination, all pending output is now correctly read.
- Removed the mix of annotations and file auto-links when teachers view submissions with both automatic and custom evaluation. Only custom annotations are now shown.
- The Test cases and Execution files pages now display a link to BIOTES when the default evaluator is used.
Thanks to @Astor-Bizard. - Updated the Java run script to automatically detect the Java version when searching for the class containing the
main()method, including support for the new Java 25 format.
Thanks to @ahberg.
Enhancements
- The activity description page now shows which evaluator is used when it is not the default one.
- The activity description page now displays the available Run and Debug actions, including custom scripts, reflecting the actual activity behavior.
- The execution options page now includes information about custom scripts to reflect the real activity behavior.
- It is now possible to change the maximum grade of an activity after submissions have been graded, with an option to rescale existing grades.
- Improved the uninstall process to remove as much VPL-related data as possible, even if errors occur.
- Enhanced binary file detection.
Thanks to @Astor-Bizard. - Added support for playing audio and video files in the editor and when viewing submissions.
VPL 4.4.1 – Maintenance Update
VPL 4.4.1 is a maintenance release for the 4.4 branch and focuses on restoring functionality lost due to previous refactoring.
Fixes
- Restored the ability to access and reuse previous grading comments while manually assessing a student submission.
- Fixed regression from module refactor that prevented showing/hiding detailed grading comments (
[+]/[-]) in grading reports. - Fixed a regression that displayed incorrect numbers of submissions (graded and ungraded) when using filters in the submissions page.
VPL 4.4.0
VPL 4.4.0 introduces a range of enhancements, fixes, and new features, focusing on improved usability and full compatibility with Moodle 5.1.
This release also includes important internal refactoring to comply with Moodle’s coding style and code-checking requirements.
Enhancements
Updated Third-Party Libraries
- Ace Editor: Updated from version 1.4 to 1.43, improving existing functionality and preparing for future enhancements.
- noVNC Client: Updated to the latest version, ensuring better performance and compatibility for GUI-based applications.
- Text Terminal Client: Replaced term.js with Xterm.js, providing improved terminal emulation, support for non-Latin character input, and dynamic screen resizing.
Support for Course Overview
VPL now support the new Course Overview feature in Moodle 5 that allows users to review different types of Moodle activities at a glance.
Remember that the Virtual Programming Labs option, available in each VPL activity’s administration menu or in course reports, also lets users access all VPL activities on a single page, with advanced filtering options by multiple criteria.
Support for Subsections
Subsections, introduced in Moodle 5, enable better organization of course sections.
The Virtual Programming Labs option now respects subsection structures, displaying activities in the order they appear within the course. Section-based filtering has also been improved to include activities within subsections.
Evaluator Help Links
The Execution Options, Cases Editor, and Execution Files Editor pages now include direct links to the relevant evaluator’s documentation. This helps users better understand each evaluator’s features and usage.
Miscellaneous Improvements
- GIOTES Regex Output Check: Now correctly interprets
\n,\r,\t, and\\for newline, carriage return, tab, and backslash. - Dates: Added support for displaying important dates such as “Available From” and “Due Date” on the course page.
- Submission Status: Now respects group selection, showing the number of students in a group rather than in the entire activity.
- File Renaming: The editor now supports renaming files when only character case changes.
- C++ 20 ISO Support: Added an option to use the C++ 20 ISO standard.
- Page Size Preference: The selected page size is now remembered for the duration of the user’s session.
Fixes
- Evaluator of Evaluations: The evaluator used in evaluation actions within execution files now works with any evaluator type.
- Files for Cases: Ensures the use of the evaluator files needed for setting cases.
- Clipboard in noVNC: Clipboard receiving now functions properly in the noVNC client.
- Student Name Display: Fixed an issue that prevented proper display of student names in the menu options.
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 4.1, 4.2, 4.3, 4.4, 4.5, 5.0, and 5.1
- PHP: Versions 7.4 through 8.3
Note: VPL release numbers are independent of Moodle release numbers, unlike other modules.
Upgrading from a Previous Version
It is strongly recommended to update to the latest version to benefit from recent security updates, bug fixes, and feature improvements.
Additionally, updating VPL Jail Servers to the latest version is advised for full compatibility.
Upgrade Steps for VPL 4.4.0
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade. Upgrades from VPL version 2.4 or later are supported.
VPL 4.4.1
VPL (Virtual Programming Lab) 4.4.1 – Release Notes
VPL 4.4.1 – Maintenance Update
VPL 4.4.1 is a maintenance release for the 4.4 branch and focuses on restoring functionality lost due to previous refactoring.
Fixes
- Restored the ability to access and reuse previous grading comments while manually assessing a student submission.
- Fixed regression from module refactor that prevented showing/hiding detailed grading comments (
[+]/[-]) in grading reports. - Fixed a regression that displayed incorrect numbers of submissions (graded and ungraded) when using filters in the submissions page.
VPL 4.4.0 introduces a range of enhancements, fixes, and new features, focusing on improved usability and full compatibility with Moodle 5.1.
This release also includes important internal refactoring to comply with Moodle’s coding style and code-checking requirements.
Enhancements
Updated Third-Party Libraries
- Ace Editor: Updated from version 1.4 to 1.43, improving existing functionality and preparing for future enhancements.
- noVNC Client: Updated to the latest version, ensuring better performance and compatibility for GUI-based applications.
- Text Terminal Client: Replaced term.js with Xterm.js, providing improved terminal emulation, support for non-Latin character input, and dynamic screen resizing.
Support for Course Overview
VPL now support the new Course Overview feature in Moodle 5 that allows users to review different types of Moodle activities at a glance.
Remember that the Virtual Programming Labs option, available in each VPL activity’s administration menu or in course reports, also lets users access all VPL activities on a single page, with advanced filtering options by multiple criteria.
Support for Subsections
Subsections, introduced in Moodle 5, enable better organization of course sections.
The Virtual Programming Labs option now respects subsection structures, displaying activities in the order they appear within the course. Section-based filtering has also been improved to include activities within subsections.
Evaluator Help Links
The Execution Options, Cases Editor, and Execution Files Editor pages now include direct links to the relevant evaluator’s documentation. This helps users better understand each evaluator’s features and usage.
Miscellaneous Improvements
- GIOTES Regex Output Check: Now correctly interprets
\n,\r,\t, and\\for newline, carriage return, tab, and backslash. - Dates: Added support for displaying important dates such as “Available From” and “Due Date” on the course page.
- Submission Status: Now respects group selection, showing the number of students in a group rather than in the entire activity.
- File Renaming: The editor now supports renaming files when only character case changes.
- C++ 20 ISO Support: Added an option to use the C++ 20 ISO standard.
- Page Size Preference: The selected page size is now remembered for the duration of the user’s session.
Fixes
- Evaluator of Evaluations: The evaluator used in evaluation actions within execution files now works with any evaluator type.
- Files for Cases: Ensures the use of the evaluator files needed for setting cases.
- Clipboard in noVNC: Clipboard receiving now functions properly in the noVNC client.
- Student Name Display: Fixed an issue that prevented proper display of student names in the menu options.
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 4.1, 4.2, 4.3, 4.4, 4.5, 5.0, and 5.1
- PHP: Versions 7.4 through 8.3
Note: VPL release numbers are independent of Moodle release numbers, unlike other modules.
Upgrading from a Previous Version
It is strongly recommended to update to the latest version to benefit from recent security updates, bug fixes, and feature improvements.
Additionally, updating VPL Jail Servers to the latest version is advised for full compatibility.
Upgrade Steps for VPL 4.4.0
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade. Upgrades from VPL version 2.4 or later are supported.
VPL 4.4.0
VPL (Virtual Programming Lab) 4.4.0 – Release Notes
Overview
VPL 4.4.0 introduces a range of enhancements, fixes, and new features, focusing on improved usability and full compatibility with Moodle 5.1.
This release also includes important internal refactoring to comply with Moodle’s coding style and code-checking requirements.
Enhancements
Updated Third-Party Libraries
- Ace Editor: Updated from version 1.4 to 1.43, improving existing functionality and preparing for future enhancements.
- noVNC Client: Updated to the latest version, ensuring better performance and compatibility for GUI-based applications.
- Text Terminal Client: Replaced term.js with Xterm.js, providing improved terminal emulation, support for non-Latin character input, and dynamic screen resizing.
Support for Course Overview
VPL now support the new Course Overview feature in Moodle 5 that allows users to review different types of Moodle activities at a glance.
Remember that the Virtual Programming Labs option, available in each VPL activity’s administration menu or in course reports, also lets users access all VPL activities on a single page, with advanced filtering options by multiple criteria.
Support for Subsections
Subsections, introduced in Moodle 5, enable better organization of course sections.
The Virtual Programming Labs option now respects subsection structures, displaying activities in the order they appear within the course. Section-based filtering has also been improved to include activities within subsections.
Evaluator Help Links
The Execution Options, Cases Editor, and Execution Files Editor pages now include direct links to the relevant evaluator’s documentation. This helps users better understand each evaluator’s features and usage.
Miscellaneous Improvements
- GIOTES Regex Output Check: Now correctly interprets
\n,\r,\t, and\\for newline, carriage return, tab, and backslash. - Dates: Added support for displaying important dates such as “Available From” and “Due Date” on the course page.
- Submission Status: Now respects group selection, showing the number of students in a group rather than in the entire activity.
- File Renaming: The editor now supports renaming files when only character case changes.
- C++ 20 ISO Support: Added an option to use the C++ 20 ISO standard.
- Page Size Preference: The selected page size is now remembered for the duration of the user’s session.
Fixes
- Evaluator of Evaluations: The evaluator used in evaluation actions within execution files now works with any evaluator type.
- Files for Cases: Ensures the use of the evaluator files needed for setting cases.
- Clipboard in noVNC: Clipboard receiving now functions properly in the noVNC client.
- Student Name Display: Fixed an issue that prevented proper display of student names in the menu options.
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 4.1, 4.2, 4.3, 4.4, 4.5, 5.0, and 5.1
- PHP: Versions 7.4 through 8.3
Note: VPL release numbers are independent of Moodle release numbers, unlike other modules.
Upgrading from a Previous Version
It is strongly recommended to update to the latest version to benefit from recent security updates, bug fixes, and feature improvements.
Additionally, updating VPL Jail Servers to the latest version is advised for full compatibility.
Upgrade Steps for VPL 4.4.0
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade. Upgrades from VPL version 2.4 or later are supported.
VPL 4.3.2
VPL (Virtual Programming Lab) 4.3.2 – Release Notes
Overview
VPL 4.3 introduces significant enhancements, fixes, and new features, with a focus on improved usability, extensibility, and compatibility with Moodle 5.
VPL 4.3.2 resolves issues introduced by new features in the previous version and modifies many code files, mainly by adding and correcting PHP documentation to fulfill the style requirements of Moodle's code checks.
Special thank to Astor Bizard for significant contributions to this version.
Highlights & Enhancements
Capabilities and Permissions
- New Capability:
mod/vpl:editothersgrades— allows users with appropriate roles to delete grades assigned by other teachers.
Submissions List Report (Rebuilt and Optimized)
- Implements standard user selection via initials.
- Supports downloading of filtered report data.
- Adds pagination for improved performance.
- Optimizes multi-user evaluation for increased efficiency and robustness.
New Activity Submission Summary
A new summary panel improves submission tracking:
- Displays students/groups allowed to submit.
- Shows submission and grading status counts.
- Offers quick access to relevant submissions.
- Available in both the activity description and submissions list.
Editor and Language Support
-
Added editor support for:
- OCaml
- LaTeX
- Makefile
- reStructuredText
-
Improved hard tab handling for languages like Go and Makefile.
New Language and Tool Support
-
Added run script support for:
- C# (via Mono)
- COBOL
-
Integrated with Python Tutor, enabling visual step-by-step code execution for:
- Python
- C
- C++
- Java
Improved Plain Web Submissions (Contributed by Astor Bizard)
- Added support for ZIP archive submissions.
- Enabled more flexible submission formats.
- Improved error recovery — no need to restart submission when files are incorrect.
Advanced Grading Improvements (Contributed by Astor Bizard)
-
Support for advanced grading methods.
-
Enhanced grading form:
- Import feedback from previous attempts.
- Contextual help buttons for easier grading.
Enhanced Usability for “Based On” Feature (Contributed by Astor Bizard)
- Teachers can now view concatenated execution scripts, showing how the “based on” feature modifies execution files.
- Clarifies which run/debug scripts are inherited or overridden from base activities.
- Clarifies inherited vs. overridden resource limits.
Course Reset Enhancements
- Time Shifting: Automatically adjust start/due dates across all VPL activities.
- Granular Reset: Selectively reset user/group overrides.
- Optimized Database Access
- Calendar Sync: Ensures VPL calendar events reflect updated time settings.
Activity Analytics
-
Now tracks per-user activity:
- Save
- Run
- Debug
(Note: Not yet included in standard reports)
Evaluator Subplugin Framework
- Introduced a new subplugin architecture for evaluator extensions.
- First Implementation: GIOTES — an enhanced I/O testing engine (evolution of BIOTES). See below for a short manual of GIOTES.
Run Mode Selection
VPL now supports configurable run modes:
- Text Mode (ANSI terminal)
- GUI Mode (Linux VNC)
- Web App Mode (reverse proxy)
- Text-in-GUI Mode (terminal emulation inside GUI)
Selection Methods:
-
Set globally per activity
-
Allow dynamic selection via annotations in source code (within first 1,000 characters):
@vpl_run_text_mode@vpl_run_gui_mode@vpl_run_webapp_mode@vpl_run_textingui_mode
GUI Evaluation Enhancements
- Supports evaluation of graphical programs using text-based inputs in GUI mode.
Fixes
- Fixed issue with downloading submission reports for team-based activities.
- Corrected memory size display from “3. GiB” to accurate “3.50 GiB”.
- Reverted unintended change in 4.2.4 requiring course enrollment for web service capability checks.
- Fixed and improved usage of language strings in scripts.
- Corrected locale detection for available languages on Linux systems.
- Fixed bug in the Prolog script when detecting
swiplversion. - Fixed entity detection in VHPL script when using GHDL.
- Resolved MathJax rendering issues in activity descriptions within the editor.
- Improved compatibility between VNC mode and Safe Exam Browser (SEB), including pointer event support.
- Enhanced performance and clarity of regex used in evaluation result parsing (contributed by Astor Bizard).
- Fixed a bug introduced in 4.3.0 that added unnecessary execution scripts to run or debug actions.
- Fixed a bug introduced in 4.3.0 that prevented syntax highlighting outside the editor.
- Fixed a syntax error in the PHP run script introduced in 4.3.0.
- Fixed an issue where the "Run All languages" process must ignore new run modes feature.
- Improved the run script for the R language.
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 4.1 and 4.4 to 5.0
- PHP: Versions 7.4 to 8.3
Note: The VPL release number is independent of the Moodle release number, unlike other modules.
Upgrading from a Previous Version
It is recommended to update to the latest version to benefit from recent security and bug fixes. Additionally, updating VPL Jail Servers is strongly advised.
Steps to upgrade to VPL 4.3.2:
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade after updating Moodle. Upgrades from VPL version 2.4 onwards are supported.
GIOTES Summary Manual
Overview
GIOTES (General Input/Output Test and Evaluation System) is an enhanced evaluator plugin for VPL (Virtual Programming Lab), designed to supersede the default evaluator BIOTES.
Key features:
- Open customization of evaluation reports
- Support for default option values
- Time limits per test case
- More informative and flexible result messages
Configuration File: vpl_evaluate.cases
Test cases are defined in the vpl_evaluate.cases file using a simple configuration syntax:
-
Each line is either an option setting, a comment, or part of a multiline value.
-
Comments begin with
#. -
Option names are case-insensitive and can contain spaces.
-
Values may be single-line or multiline.
-
Multiline values end when:
- Another valid option starts, or
- A custom multiline end marker is used (see
Multiline endoption).
General File Structure
- Global defaults: Any option defined before the first
Caseapplies to all test cases unless overridden locally. - Local options: Options defined within a test case only apply to that specific case.
Available Options
🧪 Test Case Definition
-
Case: Starts a new test case definition. The name appears in reports.Case = Test Case 1
⌨️ Input/Output Configuration
-
Input: Text passed to the program’sstdin. (Multiline option)Input = 33 -
Output: Expected output to pass the test. Supports:- Multiple valid outputs per case
- Text, number, exact text, or regular expressions (Multiline option)
See BIOTES documentation for output types.
Output = 1 2 Output = 2 1
💻 Program Execution Settings
-
Expected exit code: Integer.
Positive value indicate that tests pass if match, negative values indicate that require also program output match.Expected exit code = -13 -
Time limit: Execution time limit in seconds.
If exceeded, the test fails.Time limit = 1.5 -
Program to run: Path to an alternate program to run instead of the student’s.Program to run = /bin/checkstyle -
Program arguments: Command-line arguments for the program.Program arguments = data.txt
🎯 Conditional Execution
-
Variation: Specifies a variation code. The case is only considered if it matches.Variation = v10
🎓 Grading
-
Grade reduction: Penalty applied if the test fails.
Supports absolute values or percentages.Grade reduction = 25%
💬 Messages and Feedback
Failure Messages
Fail message/Fail output message: Message shown when output does not match. (Multiline option)Fail exit code message: Message shown when exit code mismatch occurs. (Overrides fail output message)Timeout message: Message when time limit is exceeded. (Multiline option)
Success Messages
Pass message: Message shown when the test passes. (Multiline option)
If not set, no success message is displayed.
Final Summary
-
Final report message: Message shown at the end of all tests. (Multiline option)
Example:Final report message = -Final Report ✅ Tests passed: <<<num_tests_passed>>> ❌ Tests failed: <<<num_tests_failed>>> 👉 The number of passed and failed tests is not a grade indicator. 👉 There may be errors even if all tests have passed 🧪. The exercise will be evaluated by a teacher 👨.
📄 Case Display Formatting
-
Case title format: Customizes how each test case title is displayed.Case title format = Case <<<case_id>>>/<<<num_tests>>>: <<<case_title>>> <<<test_result_mark>>> -
Fail mark, `Pa...
VPL 4.3.1
VPL (Virtual Programming Lab) 4.3.1 – Release Notes
Overview
VPL 4.3.1 introduces significant enhancements, fixes, and new features, with a focus on improved usability, extensibility, and compatibility with Moodle 5.
Special thank to Astor Bizard for significant contributions to this version.
Highlights & Enhancements
Capabilities and Permissions
- New Capability:
mod/vpl:editothersgrades— allows users with appropriate roles to delete grades assigned by other teachers.
Submissions List Report (Rebuilt and Optimized)
- Implements standard user selection via initials.
- Supports downloading of filtered report data.
- Adds pagination for improved performance.
- Optimizes multi-user evaluation for increased efficiency and robustness.
New Activity Submission Summary
A new summary panel improves submission tracking:
- Displays students/groups allowed to submit.
- Shows submission and grading status counts.
- Offers quick access to relevant submissions.
- Available in both the activity description and submissions list.
Editor and Language Support
-
Added editor support for:
- OCaml
- LaTeX
- Makefile
- reStructuredText
-
Improved hard tab handling for languages like Go and Makefile.
New Language and Tool Support
-
Added run script support for:
- C# (via Mono)
- COBOL
-
Integrated with Python Tutor, enabling visual step-by-step code execution for:
- Python
- C
- C++
- Java
Improved Plain Web Submissions (Contributed by Astor Bizard)
- Added support for ZIP archive submissions.
- Enabled more flexible submission formats.
- Improved error recovery — no need to restart submission when files are incorrect.
Advanced Grading Improvements (Contributed by Astor Bizard)
-
Support for advanced grading methods.
-
Enhanced grading form:
- Import feedback from previous attempts.
- Contextual help buttons for easier grading.
Enhanced Usability for “Based On” Feature (Contributed by Astor Bizard)
- Teachers can now view concatenated execution scripts, showing how the “based on” feature modifies execution files.
- Clarifies which run/debug scripts are inherited or overridden from base activities.
- Clarifies inherited vs. overridden resource limits.
Course Reset Enhancements
- Time Shifting: Automatically adjust start/due dates across all VPL activities.
- Granular Reset: Selectively reset user/group overrides.
- Optimized Database Access
- Calendar Sync: Ensures VPL calendar events reflect updated time settings.
Activity Analytics
-
Now tracks per-user activity:
- Save
- Run
- Debug
(Note: Not yet included in standard reports)
Evaluator Subplugin Framework
- Introduced a new subplugin architecture for evaluator extensions.
- First Implementation: GIOTES — an enhanced I/O testing engine (evolution of BIOTES). See below for a short manual of GIOTES.
Run Mode Selection
VPL now supports configurable run modes:
- Text Mode (ANSI terminal)
- GUI Mode (Linux VNC)
- Web App Mode (reverse proxy)
- Text-in-GUI Mode (terminal emulation inside GUI)
Selection Methods:
-
Set globally per activity
-
Allow dynamic selection via annotations in source code (within first 1,000 characters):
@vpl_run_text_mode@vpl_run_gui_mode@vpl_run_webapp_mode@vpl_run_textingui_mode
GUI Evaluation Enhancements
- Supports evaluation of graphical programs using text-based inputs in GUI mode.
Fixes
- Fixed issue with downloading submission reports for team-based activities.
- Corrected memory size display from “3. GiB” to accurate “3.50 GiB”.
- Reverted unintended change in 4.2.4 requiring course enrollment for web service capability checks.
- Fixed and improved usage of language strings in scripts.
- Corrected locale detection for available languages on Linux systems.
- Fixed bug in the Prolog script when detecting
swiplversion. - Fixed entity detection in VHPL script when using GHDL.
- Resolved MathJax rendering issues in activity descriptions within the editor.
- Improved compatibility between VNC mode and Safe Exam Browser (SEB), including pointer event support.
- Enhanced performance and clarity of regex used in evaluation result parsing (contributed by Astor Bizard).
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 4.1 and 4.4 to 5.0
- PHP: Versions 7.4 to 8.3
Note: The VPL release number is independent of the Moodle release number, unlike other modules.
Upgrading from a Previous Version
It is recommended to update to the latest version to benefit from recent security and bug fixes. Additionally, updating VPL Jail Servers is strongly advised.
Steps to upgrade to VPL 4.3.1:
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade after updating Moodle. Upgrades from VPL version 2.4 onwards are supported.
GIOTES Summary Manual
Overview
GIOTES (General Input/Output Test and Evaluation System) is an enhanced evaluator plugin for VPL (Virtual Programming Lab), designed to supersede the default evaluator BIOTES.
Key features:
- Open customization of evaluation reports
- Support for default option values
- Time limits per test case
- More informative and flexible result messages
Configuration File: vpl_evaluate.cases
Test cases are defined in the vpl_evaluate.cases file using a simple configuration syntax:
-
Each line is either an option setting, a comment, or part of a multiline value.
-
Comments begin with
#. -
Option names are case-insensitive and can contain spaces.
-
Values may be single-line or multiline.
-
Multiline values end when:
- Another valid option starts, or
- A custom multiline end marker is used (see
Multiline endoption).
General File Structure
- Global defaults: Any option defined before the first
Caseapplies to all test cases unless overridden locally. - Local options: Options defined within a test case only apply to that specific case.
Available Options
🧪 Test Case Definition
-
Case: Starts a new test case definition. The name appears in reports.Case = Test Case 1
⌨️ Input/Output Configuration
-
Input: Text passed to the program’sstdin. (Multiline option)Input = 33 -
Output: Expected output to pass the test. Supports:- Multiple valid outputs per case
- Text, number, exact text, or regular expressions (Multiline option)
See BIOTES documentation for output types.
Output = 1 2 Output = 2 1
💻 Program Execution Settings
-
Expected exit code: Integer.
Positive value indicate that tests pass if match, negative values indicate that require also program output match.Expected exit code = -13 -
Time limit: Execution time limit in seconds.
If exceeded, the test fails.Time limit = 1.5 -
Program to run: Path to an alternate program to run instead of the student’s.Program to run = /bin/checkstyle -
Program arguments: Command-line arguments for the program.Program arguments = data.txt
🎯 Conditional Execution
-
Variation: Specifies a variation code. The case is only considered if it matches.Variation = v10
🎓 Grading
-
Grade reduction: Penalty applied if the test fails.
Supports absolute values or percentages.Grade reduction = 25%
💬 Messages and Feedback
Failure Messages
Fail message/Fail output message: Message shown when output does not match. (Multiline option)Fail exit code message: Message shown when exit code mismatch occurs. (Overrides fail output message)Timeout message: Message when time limit is exceeded. (Multiline option)
Success Messages
Pass message: Message shown when the test passes. (Multiline option)
If not set, no success message is displayed.
Final Summary
-
Final report message: Message shown at the end of all tests. (Multiline option)
Example:Final report message = -Final Report ✅ Tests passed: <<<num_tests_passed>>> ❌ Tests failed: <<<num_tests_failed>>> 👉 The number of passed and failed tests is not a grade indicator. 👉 There may be errors even if all tests have passed 🧪. The exercise will be evaluated by a teacher 👨.
📄 Case Display Formatting
-
Case title format: Customizes how each test case title is displayed.Case title format = Case <<<case_id>>>/<<<num_tests>>>: <<<case_title>>> <<<test_result_mark>>> -
Fail mark,Pass mark,Error mark,Timeout mark: Custom symbols or text for status display.Fail mark = [❌ wrong result] Pass mark = [✅ test passed] Error mark = [🛑 unexpected error] Timeout mark = [⏰ time limit exceeded]
📌 Multiline Control
-
Multiline end: Specifies a marker string to explicitly end the next multiline option.Multiline end = END_OF_TEXT Output = This is a test case END_OF_TEXT
Placeholders
All messages and formatting can include dynamic placeholders in the format <<<name>>>:
| Placehol...
VPL 4.2.5
VPL (Virtual Programming Lab) 4.2.5 Release Notes
Overview
The VPL 4.2.5 update introduces several enhancements and fixes, with a primary focus on ensuring compatibility with Moodle 4.5.
New Features and Enhancements
-
Execution Scripts:
- Added a new C# execution script with NUnit support.
- Introduced execution scripts for the "make" tool.
- Improved R script execution for better performance in evaluation mode.
- Enhanced automatic detection of tools beyond programming languages.
-
Overrides:
- Enhanced the interface to allow copying an override as a base for creating a new one.
-
Error Handling:
- Improved error handling for Jail server connection issues.
-
Security:
- Set default behavior to reject invalid HTTPS certificates.
Bug Fixes
-
Display Fixes:
- Resolved an issue with the display of “Compilation” and “Execution” panes to ensure they use fixed-width fonts.
-
Multi-User Overrides:
- Fixed a bug that prevented correct management of multi-user overrides.
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 3.9 to 4.5
- PHP: Versions 7.4 to 8.3
Note: The VPL release number is independent of the Moodle release number, unlike other modules.
Known Issues
- JQuery-UI and Boost Theme Incompatibility:
- The VPL editor interface, which uses JQuery-UI, may conflict with the Boost theme. This can occasionally cause issues with the theme's drawer toggles on the editor page.
Upgrading from a Previous Version
It is recommended to update to the latest version to benefit from recent security and bug fixes. Additionally, updating VPL Jail Servers is strongly advised.
Steps to upgrade to VPL 4.2.5 without losing existing plugin data:
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade after updating Moodle. Upgrades from VPL version 2.4 onwards are supported.
VPL 4.2.4
VPL 4.2.4 Release Notes
Introduction
This document provides an overview of the updates in version 4.2.4 of the Virtual Programming Lab (VPL). This release addresses various issues found in version 4.2.3, including critical security fixes. Updates should be made immediately.
Bug Fixes
- Critical security flaw:
- A critical security flaw has been discovered in VPL (@vincentscode Vincent Schmandt) affecting all versions prior to 4.2.4.
- Additionally, this issue is related the VPL Jail Server. It is strongly recommended to update your VPL Jail Servers to the latest version according to the release notes instructions.
- If you are currently using the security parameters URLPATH and/or TASK_ONLY_FROM in your VPL Jail Servers's configuration, you are better protected against an attack. If you are not using these parameters, you may implement them as an immediate protection measure before updating. See VPL Jail System security parameters.
- Running tests of test with variations: Fixes bug that prevents the correct testing of activities with variations.
- Hide/show content malfunction: Fixed a bug that prevented the use of the hide/show content feature.
- HTML overconversion: Fixed the overconversion of HTML when showing section names in VPL activities reports.
- Code file highlighting and result processing: Fixed a bug causing issues with code file highlighting and result processing when multiple submissions were shown on the same page.
- Identification of task: Fixed a bug that, in some cases, led to the incorrect stopping of tasks.
- Remove custom vpl_evaluate.cpp file: Fixed a bug that removed a custom vpl_evaluate.cpp file, resulting in incorrect behavior.
- Testing numbers: Fixes the test of output of type numbers in the default VPL tester.
- Showing compilation and execution: Fixes a CSS bug that prevents the use of monospace fonts when showing the compilation and execution. @tats-u
Interface Enhancements
- Hide/show icon: Show cursor pointer when hovering over the hide/show icon.
- Hide grade form: Avoid showing the grade form if the activity is not gradable.
- Bulck removing automatic evaluation: If you want to remove automatic evaluation from the grade book, after unsetting automatic evaluation, you can run "evaluate all," getting a new evaluation suggestion and removing previous automatic grading.
- Relax evaluation tags detection: The evaluation parser now accepts spaces around the evaluation report tags. @Astor-Bizard
- Add Moodle activity ID: Added the MOODLE_ACTIVITY_ID environment variable to the execution environment. @FeldrinH
- Enhance cabilities assigment: Aligned capability assignments with other standard modules by removing the prohibition on different roles from having the some capability.
Integration Enhancements
- Using global modules in Node.js: Added support for global modules in Node.js.
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 3.9 to 4.4
- PHP: Versions 7.4 to 8.3
Please note that the VPL release number is not related to the Moodle release number, unlike other modules.
Known Issues
- JQuery-UI and Boost Theme Incompatibility: The editor interface of VPL, which uses JQuery-UI, may conflict with the Boost theme in certain cases, potentially causing issues with the theme's drawer toggles while on the editor page.
Upgrading from a Previous Version
It is recommended that you update your plugin to the latest version to obtain all recent security and bug fixes. Additionally, it is strongly recommended to update your VPL Jail Servers.
To upgrade to VPL 4.2.4 without losing existing plugin data:
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade following the Moodle update. Upgrades from VPL version 2.4 onwards are supported.
VPL 4.2.3 for Moodle 3.9
This variant of VPL 4.2.3 keeps compatibility with Moodle 3.9.
Tested on Moodle 3.9 (Not tested in previous versions)
For details see VPL 4.2.3 release notes.
VPL 4.2.3
VPL 4.2.3 Release Notes
Introduction
This document provides an overview of the updates in version 4.2.3 of the Virtual Programming Lab (VPL). Aimed at enhancing the VPL's functionality and user experience within Moodle, this release addresses various issues found in version 4.2.2 and introduces several improvements.
Bug Fixes
- Directory Name Change in Editor: Addressed the issue of changing the directory name for a group of files, allowing modification, addition, and partial removal of directory names.
- VPL Activities Listing Correction: Rectified an error that affected the listing of VPL activities when filtered by section.
- cmidnumber Modification Bug: Resolved an issue that prevented modifications to the
cmidnumberin the VPL activity settings. - Similarity Report Bug: Fixed the line processing in generic tokenizer engine resolving the bad report of similarity.
- Diff comparator Memory Limitation: Introduced a limitation on the diff comparator matrix size to prevent memory overuse.
- Grade Value Error Handling: Addressed an issue in the automatic evaluation process where non-numeric grade values were mishandled.
Interface Enhancements
- Activity Description in Editor: Improved editing "Required files," "Execution files," and "Cases file" by incorporating the activity description directly into the interface.
- Password Override Functionality: Enhanced the override functionality by including the activity password. This allow the use of different password for different students.
- Removal of Network and SEB Restrictions for Graders: Removed network and Safe Exam Browser (SEB) restrictions for graders, allowing unrestricted access to activities for them.
- SEB
Configuration KeyCheck: ImplementedConfiguration Keyverification for access to activities using the SEB. - Revelation of Passwords and SEB Keys: Enabled the display of passwords and SEB keys on the activity information page for easier administration.
- List of VPLs in Course: Added the "Virtual Programming Labs" report to the course report submenu for easier access.
Integration Enhancements
- Language Support Expansion: Added support for C# (
cs,csproj), F# (fs,fsproj), and VisualBasic (vb,vbproj) usingdotnet. - Jail's URL: Modified the procesing of the ports of the Jail's URL to improve compatibility using jails in complex networks (E.g. behind NATs or containers environments).
- Student Comments Field in externallib: Added the
commentsfield for students in theexternallibfor save and open actions. - Echo Input Removal in Testing: Removed
echoinput during tests to streamline results. - Optimization of LC_ALL Setting: Optimized the configuration of the
LC_ALLenvironment variable for enhanced system compatibility.
Compatibility
This version of VPL is compatible with the following:
- Moodle: Versions 3.11 to 4.3.
- PHP: Versions 7.4 to 8.1.
Known Issues
- JQuery-UI and Boost Theme Incompatibility: The editor interface of VPL, which uses JQuery-UI, may conflict with the Boost theme in certain cases, potentially causing issues with the theme's drawer toggles while on the editor page.
Upgrading from a Previous Version
To upgrade to VPL 4.2.3 without losing existing plugin data:
- Ensure your Moodle instance is updated to a supported version.
- Proceed with the VPL plugin upgrade following the Moodle update. Upgrades from VPL version 2.4 onwards are supported.