KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Pierwszy manifest plugin.kretl
Najmniejszy poprawny manifest KretL 1.0: tożsamość, zgodność, cykl życia (`start` i `shutdown` są obowiązkowe), tryb wykonania. Manifest nie deklaruje żadnych uprawnień, więc plugin nie dostaje dostępu do hosta. Logika jest jedną funkcją KretS zwracającą tekst.
Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.
Kanoniczne pliki projektu
module Main
// Handler cyklu życia „start”: funkcja bez parametrów. Wartość wraca do hosta.
fn Start() -> String {
return "KretL: manifest poprawny, plugin uruchomiony"
}
fn Shutdown() {
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.// Handler cyklu życia „start”: funkcja bez parametrów. Wartość wraca do hosta.Komentarz autora; nie jest wykonywany.fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return "KretL: manifest poprawny, plugin uruchomiony"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Wynik i typowy błąd
`check` zwraca `"succeeded": true`, `run` zwraca dokument JSON z wynikiem `start` „KretL: manifest poprawny, plugin uruchomiony” i kodem wyjścia 0.
Brak `shutdown` w `lifecycle` albo handler, którego nie ma w KretS (`KCS-KRL-0301`). Patrz przykład KRETL-B02.
Wymagania wersji i procedura lokalna
- sdk
- 1.0.0-rc.3+kret.local.3
- sdkInfoReports
- 1.0.0-rc.3
- core
- 1.0.0-test.6.11-draft.1
- os
- Windows 11 x64
- dotnet
- .NET 10 runtime
Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.
- check
kret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0 - build
kret build .Katalog: project · Oczekiwany kod wyjścia: 0 - run
kret run . --policy host-policy.json --data {DATA}Katalog: project · Oczekiwany kod wyjścia: 0
Wyniki zapisane w pakiecie źródłowym
To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.
# EXPECTED_OUTPUT — KRETL-B01-HelloManifest
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:31Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.
### 1. check (exit 0, PASS)
> kret check . --json
{
"format": "kret-diagnostics/1",
"project": "<project>",
"succeeded": true,
"plugin": {
"id": "LOCAL-KPL-KLB2HELL",
"name": "HelloManifest",
"version": "1.0.0",
"profile": "standard",
"database": false
},
"permissions": {
"required": [],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": []
},
"diagnostics": []
}
### 2. build (exit 0, PASS)
> kret build .
OK: HelloManifest 1.0.0 (LOCAL-KPL-KLB2HELL)
paczka: <project>\Build (bytecode 271 B, 2 funkcji, 0 importów hosta)
czasy [ms]: kretdb=0.1, kretl=34.7, krets.parse=5.0, krets.bind=15.4, kretm=2.1, cross-check=0.0, emit=13.7, verify+write=5.9, project=83.3, kretui=3.3, kretai=0.0, kretconfig=0.0, kretflow=0.0
pamięć kompilatora [B]: peakWorkingSet=37986304 private=12218368 managed=1079624 cpuMs=141
### 3. run (exit 0, PASS)
> kret run . --policy host-policy.json --data {DATA}
{
"broker": {
"pid": 27740,
"startupMs": 48.5876,
"pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",
"allowProvisionalRisk": false,
"memoryIdle": {
"managedBytes": 1193200,
"allocatedBytes": 1190560,
"workingSetBytes": 32530432,
"privateBytes": 10104832,
"peakWorkingSetBytes": 32530432,
"cpuMs": 109.375
}
},
"brokerWithPlugins": {
"memory": {
"managedBytes": 1500992,
"allocatedBytes": 1497992,
"workingSetBytes": 38780928,
"privateBytes": 13778944,
"peakWorkingSetBytes": 38961152,
"cpuMs": 171.875
}
},
"plugins": [
{
"package": "<project>\\Build",
"admitted": true,
"startMs": 135.6064,
"subject": "LOCAL-KPL-KLB2HELL",
"instance": "01a19725-ae7c-7874-977a-e4428cfec9e5",
"pid": 8508,
"jobObject": true,
"isolation": {
"level": "Restricted",
"restrictedToken": true,
"lowIntegrity": true,
"appContainer": false
},
"limits": {
"profile": "standard",
"scriptMemoryBytes": 67108864,
"processMemoryBytes": 201326592,
"cpuPercent": 25,
"maxInstructions": 50000000,
"clamped": []
},
"calls": [
{
"operation": "start",
"ok": true,
"status": "Completed",
"type": "String",
"value": "KretL: manifest poprawny, plugin uruchomiony",
"brokerMs": 10.6285,
"vmMs": 3.7172,
"instructions": 2,
"hostCalls": 0,
"pluginReportedMemory": {
"managedBytes": 739784,
"allocatedBytes": 737720,
"workingSetBytes": 31924224,
"privateBytes": 11079680,
"peakWorkingSetBytes": 32276480,
"cpuMs": 62.5
}
},
{
"operation": "shutdown",
"ok": true,
"status": "Completed",
"type": "Unit",
"value": null,
"brokerMs": 0.7694,
"vmMs": 0.0061,
"instructions": 1,
"hostCalls": 0,
"pluginReportedMemory": {
"managedBytes": 748008,
"allocatedBytes": 745920,
"workingSetBytes": 32088064,
"privateBytes": 11198464,
"peakWorkingSetBytes": 32276480,
"cpuMs": 62.5
}
}
],
"processMemoryMeasuredByBroker": {
"workingSetBytes": 32034816,
"privateBytes": 11096064,
"peakWorkingSetBytes": 32276480,
"cpuMs": 78.125
},
"summary": {
"exitCode": 0,
"killed": false,
"hostCalls": 0,
"denials": 0,
"peakCommitBytes": 11943936,
"log": []
}
}
],
"brokerAfterClose": {
"memory": {
"managedBytes": 567112,
"allocatedBytes": 1497992,
"workingSetBytes": 39579648,
"privateBytes": 14487552,
"peakWorkingSetBytes": 39579648,
"cpuMs": 187.5
}
},
"audit": {
"entries": 10,
"denials": 0,
"grantsIssued": 0,
"denied": []
},
"exitCode": 0
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# EXPECTED_OUTPUT — KRETL-B01-HelloManifestOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:31Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-KLB2HELL",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "HelloManifest",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 2. build (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret build .Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.OK: HelloManifest 1.0.0 (LOCAL-KPL-KLB2HELL)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.paczka: <project>\Build (bytecode 271 B, 2 funkcji, 0 importów hosta)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.czasy [ms]: kretdb=0.1, kretl=34.7, krets.parse=5.0, krets.bind=15.4, kretm=2.1, cross-check=0.0, emit=13.7, verify+write=5.9, project=83.3, kretui=3.3, kretai=0.0, kretconfig=0.0, kretflow=0.0Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.pamięć kompilatora [B]: peakWorkingSet=37986304 private=12218368 managed=1079624 cpuMs=141Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 3. run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret run . --policy host-policy.json --data {DATA}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 27740,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startupMs": 48.5876,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allowProvisionalRisk": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1193200,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1190560,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32530432,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10104832,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32530432,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 109.375Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1500992,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1497992,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 38780928,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 13778944,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 38961152,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 171.875Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."package": "<project>\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startMs": 135.6064,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."subject": "LOCAL-KPL-KLB2HELL",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instance": "01a19725-ae7c-7874-977a-e4428cfec9e5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 8508,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."level": "Restricted",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."restrictedToken": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lowIntegrity": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."appContainer": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."scriptMemoryBytes": 67108864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuPercent": 25,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxInstructions": 50000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": "KretL: manifest poprawny, plugin uruchomiony",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 10.6285,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 3.7172,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 739784,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 737720,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 31924224,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11079680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32276480,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 62.5Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 0.7694,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 0.0061,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 748008,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 745920,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32088064,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11198464,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32276480,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 62.5Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32034816,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11096064,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32276480,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakCommitBytes": 11943936,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."log": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 567112,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1497992,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 39579648,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 14487552,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 39579648,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 187.5Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."entries": 10,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."grantsIssued": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów
null
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Pochodzenie i integralność
KRET_LANGUAGE_KRETL.zip:KretL/Examples/BASIC_HelloManifest/example.json
02_PLAYGROUND/EXAMPLES/KRETL-B01-HelloManifest.json
SHA-256 6FFFB228847CF873BB52060113EF857164228701AA16FEA3CF6754FF857C22D2Materiały źródłowe do tego tematu
Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.
KRETL-B01-HelloManifest — Pierwszy manifest plugin.kretl
KRETL-B01-HelloManifest — Pierwszy manifest plugin.kretl
🇬🇧 English version below.
| Pole | Wartość |
|---|---|
| Technologia | KretL |
| Poziom | BASIC |
| Klasyfikacja | RUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu) |
| Playground | LOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie) |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt |
Co pokazuje
Najmniejszy poprawny manifest KretL 1.0: tożsamość, zgodność, cykl życia (start i shutdown są obowiązkowe), tryb wykonania. Manifest nie deklaruje żadnych uprawnień, więc plugin nie dostaje dostępu do hosta. Logika jest jedną funkcją KretS zwracającą tekst.
Pliki
| Plik |
|---|
Script/Main.krs |
host-policy.json |
plugin.kretl |
Jak uruchomić
Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.
kret check . --json— walidacja manifestu i kodukret build .— paczka wykonywalna wBuild/kret run . --policy host-policy.json --data {DATA}— uruchomienie przez brokera w osobnym procesie
Oczekiwany wynik
check zwraca "succeeded": true, run zwraca dokument JSON z wynikiem start „KretL: manifest poprawny, plugin uruchomiony” i kodem wyjścia 0.
Najczęstszy błąd
Brak shutdown w lifecycle albo handler, którego nie ma w KretS (KCS-KRL-0301). Patrz przykład KRETL-B02.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →