Pumpkin-Docs/docs/tr_TR/plugin-dev/d/quick-start.md
Alexander Medvedev 5c23b676ed feat: d binding
2026-09-17 09:23:24 +02:00

131 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Hızlı Başlangıç
Bu kılavuz, [D programlama dilini](https://dlang.org/) kullanarak Pumpkin sunucu eklentileri yazmaya başlamanıza yardımcı olacaktır.
Pumpkin için D eklentileri, resmi [`pumpkin-api-d`](https://github.com/Pumpkin-MC/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](https://github.com/ldc-developers/ldc)**: Sürüm 1.43 veya üzeri (LLVM tabanlı D derleyicisi).
- **`addon-wasi`**: LDC için WASI hedef paketi.
- **[DUB](https://dub.pm/)**: 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 [dub.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 [source/app.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!
```