Developer Tools

vplugin

Finds plugins in a folder and calls them by one shared convention.

Released v1.0.0 · 2026-09-28
Import
use "stdlib/plugin.ven"

A plugin discovery and invocation convention, layered on top of the language's own module loading and the existing filesystem and process builtins, so a program can find and run a plugin from a known folder by a known naming convention. It is a convention built from existing pieces, not a new loading mechanism inside the language itself.

vplugin.ven
print PluginManifest("hello", "1.0.0", "A minimal example Venutian plugin.", "main.ven", "plugins/hello")
Reference (5 functions)

API reference

require_field(data, field_name, manifest_path)

Raises unless data has a field_name key.

data = new_map()
map_set(data, "name", "hello")
require_field(data, "name", "plugin.json")

load_manifest(manifest_path, directory)

Parses and validates one plugin.json manifest into a PluginManifest.

load_manifest("plugins/hello/plugin.json", "plugins/hello")

discover_plugins(plugins_dir)

Discovers every plugin under plugins_dir, as a List of PluginManifest.

manifests = discover_plugins("examples/plugins")
print manifests[0].describe()

find_plugin(manifests, name)

Finds the PluginManifest in manifests whose name matches, or raises.

manifests = discover_plugins("examples/plugins")
print find_plugin(manifests, "hello").describe()

run_plugin(manifest, runner, extra_args, timeout_ms = 15000)

Runs manifests entry file as a subprocess, and gives back its result.

manifests = discover_plugins("examples/plugins")
hello = find_plugin(manifests, "hello")
result = run_plugin(hello, ["./bin/venutian"], ["World"])
print result["stdout"]

Get notified when vplugin changes

Get notified about

New versions and security advisories.

New and updated packages, once a day.

News on the math model built in Venutian.