VPL 5.0.0 is a major release introducing enhanced Safe Exam Browser integration, Language Server Protocol support, and compatibility with Moodle 5.3.
Download VPL 5.0.0
Get the Moodle plugin from the Moodle Marketplace, or download the source archive for tag V5.0.0 from GitHub.
Download from Moodle Marketplace Download source ZIP
Overview
This release also includes improvements to execution management, security enhancements, bug fixes, and compatibility with Moodle 5.3 LTS.
Major new features
Safe Exam Browser (SEB) integration
The enhanced integration with Safe Exam Browser (SEB) simplifies SEB configuration and use with VPL, particularly in examination environments.
The increasing availability of AI-powered tools capable of solving programming problems presents new challenges for maintaining academic integrity during programming assessments. Combining SEB with VPL helps reduce the risk of students accessing unauthorized information sources and tools during examinations.
The integration introduces the following features:
- Manual SEB configuration: Configure SEB directly within VPL, similar to the functionality available in Moodle Quiz. This eliminates the need to use the external SEB Configuration Tool or distribute SEB configuration files.
- Simultaneous session control: Prevent multiple sessions from accessing the same VPL activity using a single user account. Activity managers can configure a password to authorize a new session, for example after an unexpected computer shutdown, or clear existing session records so students can start new sessions without a password, for example after a power outage.
- Backward compatibility: Existing SEB configurations supported by previous VPL versions continue to work.
This functionality is based on the work of Alejandro David Arzola Saavedra (@AlejandroDavidArzolaSaavedra) in PR #290, supervised by @jcrodriguez-dis, as part of his Bachelor's thesis in Computer Science and Engineering.
Language Server Protocol (LSP) support
VPL 5.0.0 adds an integrated Language Server Protocol (LSP) client to the code editor. LSP lets editors communicate with language servers that provide advanced programming assistance, including code completion, diagnostics, symbol navigation, and refactoring.
Depending on the connected language server's capabilities, the LSP client provides:
- Code diagnostics: Display errors, warnings, and other diagnostic information as users edit their code.
- Code completion: Suggest completions on demand using
Ctrl+Spaceor automatically when autocompletion is enabled in the editor preferences. - Hover information: Display information about symbols when users hover over them.
- Signature help: Display function signatures and parameter information as users write function calls.
- Find references: Locate references to a symbol from the editor's context menu or
with
Shift+F12. - Go to definition: Navigate to a symbol's definition from the context menu or with
F12. - Go to implementation: Navigate to a symbol's implementation from the context menu
or with
Ctrl+F12. - Rename symbol: Rename a symbol and update its references from the context menu or
with
Ctrl+F2. - Code formatting: Format an entire document with
Shift+Alt+For selected code withCtrl+Shift+F. Both options are also available in the context menu. - Code actions: Display language-server suggestions from the context menu or with
Ctrl+..
Watch a demonstration of the LSP client features:
Note: Feature availability and behavior depend on the connected language server. Not all language servers support every feature.
Requirements and configuration
The LSP client requires a language server for the programming language being edited. Language servers run on a VPL Jail Server, not in the user's browser or on the Moodle server.
To enable LSP support:
- Update the VPL Jail Server: Use version 5.0.3 or later.
- Install language servers: Install the appropriate language servers on the Jail
Server using the
install-vpl-ls-shscript and follow its installation instructions. - Configure access: Specify the languages supported by each Jail Server in the Jail Server definitions.
LSP support has been tested with Python (python), Java (java), shell scripting
(shellscript), C (c), and C++ (cpp).
To configure language server support, use this format in the Jail Server definitions:
ls LSPs URL_to_jail_server
For example:
ls python,java,cpp https://myjailserver.org/password
This configures a Jail Server to provide language server functionality for Python, Java, and C++. Language identifiers must follow the conventions in the Language Server Protocol specification.
The LSP client is based on work by Héctor Miguel Martín Álvarez (@HectorMartinAlvarez), under the supervision of @jcrodriguez-dis, as part of his Bachelor's thesis in Computer Science and Engineering.
Other new features
- Introduces a dedicated view for monitoring currently running tasks.
- Adds a setting to enable backups of all submissions.
Improvements
- Enhances the code editor interface, including file tab management, automatic resizing, cursor appearance, and result tabs.
- Improves execution server management, error reporting, and server availability checks.
- Improves file handling, including drag-and-drop operations, file size validation, and filename validation.
- Updates execution scripts for Java, JavaScript, TypeScript, Kotlin, .NET, Perl, and Scheme.
- Improves handling of password-protected activities and variation forms.
- Updates third-party JavaScript libraries and adds libraries for Markdown rendering and protection against cross-site scripting (XSS).
- Consolidates CSS files and refines the IDE appearance in light and dark modes.
- Improves localization strings, documentation, and accessibility-related interface elements.
Security fixes
- Strengthens filename validation to prevent unsafe file and directory paths.
- Improves protection against cross-site scripting (XSS) vulnerabilities.
- Sanitizes filenames displayed in HTML headers and improves the sanitization of confirmation dialogs.
- Refines user access checks based on Moodle capabilities and authentication status.
Bug fixes
- Fixes issues with file drag-and-drop handling and a regression affecting file output.
- Fixes parser errors caused by comment lines containing the
=character. - Fixes Java main method detection for declarations containing a
throwsclause. - Corrects URL formatting in local execution server configurations.
Compatibility
VPL 5.0.0 supports:
- Moodle: 4.5, 5.0, 5.1, 5.2, and 5.3
- PHP: 8.1 through 8.3
Note: VPL release numbers are independent of Moodle release numbers, unlike those of some other Moodle plugins.
Upgrading from a previous version
Upgrading to VPL 5.0.0 is strongly recommended to benefit from the latest security enhancements, bug fixes, and new features. Updating the VPL Jail Servers to the latest compatible version is also recommended to ensure full compatibility and access to new features.
- 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.