Quick Start
Deze handleiding helpt je op weg met het schrijven van Pumpkin-serverplugins met de programmeertaal D.
D-plugins voor Pumpkin worden gecompileerd naar WebAssembly-componenten (Wasm) met behulp van de officiële pumpkin-api-d bindings.
Vereisten
Voordat je D-plugins voor Pumpkin bouwt, zorg ervoor dat het volgende is geïnstalleerd:
- LDC: Versie 1.43 of nieuwer (LLVM-gebaseerde D-compiler).
addon-wasi: Het WASI-doelpakket voor LDC.- DUB: Het D-pakket- en buildbeheerprogramma (meestal inbegrepen bij LDC).
1. Het project opzetten
Maak een nieuwe map voor je pluginproject en voeg een dub.json-configuratiebestand toe:
mkdir my-d-plugin
cd my-d-pluginMaak dub.json aan in de hoofdmap van het project:
{
"name": "my-d-plugin",
"description": "Een minimale Pumpkin-plugin gebouwd met D.",
"license": "proprietary",
"authors": ["JouwNaam"],
"copyright": "Copyright © 2026, JouwNaam",
"dependencies": {
"pumpkin-api-d": "~>0.1.0"
},
"targetType": "executable",
"dflags": ["-Xcc=-mexec-model=reactor"],
"buildTypes": {
"debug": {
"buildOptions": ["debugMode", "debugInfo"]
},
"release": {
"buildOptions": ["optimize", "inline"],
"dflags": ["-L-S"]
}
}
}NOTE
De vlag -Xcc=-mexec-model=reactor is vereist door de WebAssembly-linker zodat de plugin wordt behandeld als een reactor (een component met geëxporteerde toegangspunten) in plaats van een zelfstandig programma met een afsluitpunt.
2. De plugin schrijven
Maak een map source aan en plaats je code in source/app.d:
module plugin;
import wit.pumpkin.plugin.plugin;
import wit.common;
import pumpkin.register;
struct MyPlugin {
@GetMetadata PluginMetadata getMetadata()
{
immutable(WitString)[$] authors = [
"JouwNaam".witList
];
return (immutable PluginMetadata(
name: "my-d-plugin".witList,
version_: "0.1.0".witList,
authors: authors.witList,
description: "Een voorbeeldplugin in D.".witList,
dependencies: WitList!WitString(),
permissions: WitList!WitString()
)).witClone;
}
@OnLoad
Result!(void, WitString) onLoad(Context ctx)
{
scope (exit)
ctx.witDrop; // Binnenkomende bronnen moeten na gebruik worden vrijgegeven
log(Level.info, "Hallo vanuit de D-plugin!".witList);
return ok!WitString;
}
}
mixin RegisterPlugin!MyPlugin;3. De plugin bouwen
Compileer je plugin naar een WebAssembly-component voor wasm32-wasip2:
dub build -b release -a wasm32-wasip2Dit genereert my-d-plugin.wasm in je projectmap.
4. De plugin uitvoeren
- Kopieer het gecompileerde
.wasm-bestand naar de mapplugins/van je Pumpkin-server:bashcp my-d-plugin.wasm /pad/naar/pumpkin/plugins/ - Start of herstart Pumpkin:bash
./pumpkin - Controleer de serverlogs om te bevestigen dat je plugin is geladen:text
[INFO] Hallo vanuit de D-plugin!