Skip to content

Hızlı Başlangıç

Bu kılavuz, D programlama dilini kullanarak Pumpkin sunucu eklentileri yazmaya başlamanıza yardımcı olacaktır.

Pumpkin için D eklentileri, resmi pumpkin-api-d bağlamaları kullanılarak WebAssembly (Wasm) bileşenleri olarak derlenir.


Ön Koşullar

Başlamadan önce aşağıdaki araçların kurulu olduğundan emin olun:

  • LDC: Sürüm 1.43 veya üzeri (LLVM tabanlı D derleyicisi).
  • addon-wasi: LDC için WASI hedef paketi.
  • DUB: D paket ve derleme aracı (genellikle LDC ile birlikte gelir).

1. Projeyi Kurma

Eklenti projeniz için yeni bir dizin oluşturun ve bir dub.json yapılandırma dosyası ekleyin:

bash
mkdir my-d-plugin
cd my-d-plugin

Proje kökünde dub.json dosyasını oluşturun:

json
{
    "name": "my-d-plugin",
    "description": "D ile geliştirilmiş minimal bir Pumpkin eklentisi.",
    "license": "proprietary",
    "authors": ["Adınız"],
    "copyright": "Copyright © 2026, Adınız",

    "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

-Xcc=-mexec-model=reactor bayrağı, eklentinin bir CLI yürütülebilir programı yerine giriş noktaları dışa aktaran bir bileşen (reaktör) olarak bağlanması için WebAssembly bağlayıcısı tarafından zorunlu kılınmıştır.


2. Eklentiyi Yazma

source dizinini oluşturun ve kodunuzu source/app.d içine ekleyin:

d
module plugin;

import wit.pumpkin.plugin.plugin;
import wit.common;
import pumpkin.register;

struct MyPlugin {
    @GetMetadata PluginMetadata getMetadata()
    {
        immutable(WitString)[$] authors = [
            "Adınız".witList
        ];

        return (immutable PluginMetadata(
                name: "my-d-plugin".witList,
                version_: "0.1.0".witList,
                authors: authors.witList,
                description: "D dilinde örnek bir eklenti.".witList,
                dependencies: WitList!WitString(),
                permissions: WitList!WitString()
        )).witClone;
    }

    @OnLoad
    Result!(void, WitString) onLoad(Context ctx)
    {
        scope (exit)
            ctx.witDrop; // Gelen kaynaklar kullanıldıktan sonra serbest bırakılmalıdır

        log(Level.info, "D eklentisinden merhaba!".witList);
        return ok!WitString;
    }
}

mixin RegisterPlugin!MyPlugin;

3. Eklentiyi Derleme

Eklentinizi wasm32-wasip2 mimarisini hedefleyen bir WebAssembly bileşeni olarak derleyin:

bash
dub build -b release -a wasm32-wasip2

Bu komut proje kök dizininizde my-d-plugin.wasm dosyasını oluşturacaktır.


4. Eklentiyi Çalıştırma

  1. Derlenen .wasm dosyasını Pumpkin sunucunuzun plugins/ dizinine kopyalayın:
    bash
    cp my-d-plugin.wasm /yol/pumpkin/plugins/
  2. Pumpkin sunucusunu başlatın veya yeniden başlatın:
    bash
    ./pumpkin
  3. Eklentinin yüklendiğini doğrulamak için sunucu günlüklerini kontrol edin:
    text
    [INFO] D eklentisinden merhaba!

MIT Lisansı altında yayınlandı.