Moodle Plugins directory: Virtual Programming Lab: Versions: 4.3.2 | Moodle.org

Virtual Programming Lab
Virtual Programming Lab 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
swipl
version. - 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 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 end
option).
General File Structure
- Global defaults: Any option defined before the first
Case
applies 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>>>
:
Placeholder | Description |
---|---|
<<<case_id>>> |
Index of the test case (starts at 1) |
<<<case_title>>> |
Case name from Case option |
<<<test_result_mark>>> |
Status symbol from result mark options |
<<<fail_mark>>> , <<<pass_mark>>> , <<<error_mark>>> , <<<timeout_mark>>> |
Respective marks |
<<<input>>> , <<<input_inline>>> |
Test input (multiline or inline) |
<<<check_type>>> |
Output check type |
<<<expected_output>>> , <<<expected_output_inline>>> |
Expected output |
<<<program_output>>> , <<<program_output_inline>>> |
Actual program output |
<<<expected_exit_code>>> |
Expected exit code |
<<<exit_code>>> |
Actual exit code |
<<<time_limit>>> |
Test time limit |
<<<num_tests>>> , <<<num_tests_run>>> |
Total and executed test count |
<<<num_tests_failed>>> , <<<num_tests_passed>>> , <<<num_tests_timeout>>> , <<<num_tests_error>>> |
Test result statistics |
<<<grade_reduction>>> |
Grade penalty for the case |
Tips
- Use
Multiline end
when expected outputs or messages contain strings that resemble other options. - Use placeholders in messages to create dynamic, informative feedback.
- Use the test of tests feature in the "Execution files" to ensure your configuration behaves as intended.
Version information
- Version build number
- 2025071410
- Version release name
- 4.3.2
- Maturity
- Stabil version
- MD5 Sum
- 32a2b85b6e90c52e3e7a41f48d5d545c
- Supported software
- PHP 7.4, PHP 8.0, PHP 8.1, Moodle 4.1, Moodle 4.2, PHP 8.2, Moodle 4.3, PHP 8.3, Moodle 4.4, Moodle 4.5, Moodle 5.0
- Latest release for Moodle 4.1
- Latest release for Moodle 4.2
- Latest release for Moodle 4.3
- Latest release for Moodle 4.4
- Latest release for Moodle 4.5
- Latest release for Moodle 5.0
Version control information
- Version control system (VCS)
- GIT
- VCS repository URL
- VCS tag
- V4.3.2
Default installation instructions for plugins of the type Activities
- Make sure you have all the required versions.
- Download and unpack the module.
- Place the folder (eg "assignment") in the "mod" subdirectory.
- Visit http://yoursite.com/admin to finish the installation