Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Tożsamość i struktura manifestu

BASIC20 min
Postęp nauki 0 / 3
Zaloguj się na konto użytkownika, aby zachować postęp.

Czego się nauczysz

  • Prześledź źródła i wyjaśnij opisany kontrakt.
  • Porównaj valid, unknown-field i missing-handler w przykładzie błędów. Zapisz, która zmiana powoduje KCS-KRL-0202, a która KCS-KRL-0301.
Wymagania wstępne
  • Ukończ Podstawy i wcześniejszy poziom tej ścieżki.

Wyjaśnienie krok po kroku

Zacznij od plugin.kretl w katalogu projektu. manifestVersion opisuje format dokumentu, a version wewnątrz plugin — wersję Twojego pluginu. compatibility określa zgodność Core/API. Funkcje nie należą do manifestu: lifecycle wskazuje handlery z plików KretS.

Praca z kodem źródłowym

Najczęstsze błędy manifestu (tryb ścisły)

Trzy niepoprawne warianty tego samego manifestu, każdy w osobnym folderze: nieznane pole (`KCS-KRL-0202`), uprawnienie spoza katalogu KCS (`KCS-KRL-0206`) i handler cyklu życia, którego nie ma w kodzie (`KCS-KRL-0301`). Folder `valid/` pokazuje wersję poprawną.

module Main

fn Start() {
}

fn Shutdown() {
}

Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. Pusta linia oddziela fragmenty źródła.
  3. fn Start() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  5. Pusta linia oddziela fragmenty źródła.
  6. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  8. Pusta linia oddziela fragmenty źródła.

Oczekiwany wynik: Pierwsze polecenie kończy się sukcesem, trzy kolejne kodem 1 i diagnostyką `kret-diagnostics/1` z kodem, plikiem, wierszem i kolumną.

Typowy błąd: Traktowanie `metadata` jak miejsca na dowolne pola jest poprawne tylko wewnątrz bloku `metadata { }` — gdzie indziej każde nieznane pole jest błędem.

Instrukcja, wersje i zapisane wyniki →

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.

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.

  1. module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. Pusta linia oddziela fragmenty źródła.
  3. // Handler cyklu życia „start”: funkcja bez parametrów. Wartość wraca do hosta.Komentarz autora; nie jest wykonywany.
  4. fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  5. return "KretL: manifest poprawny, plugin uruchomiony"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  6. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  7. Pusta linia oddziela fragmenty źródła.
  8. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  9. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  10. Pusta linia oddziela fragmenty źródła.

Oczekiwany wynik: `check` zwraca `"succeeded": true`, `run` zwraca dokument JSON z wynikiem `start` „KretL: manifest poprawny, plugin uruchomiony” i kodem wyjścia 0.

Typowy błąd: Brak `shutdown` w `lifecycle` albo handler, którego nie ma w KretS (`KCS-KRL-0301`). Patrz przykład KRETL-B02.

Instrukcja, wersje i zapisane wyniki →

Materiał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 — wprowadzenie

KretL — wprowadzenie

Status 1.0: `FROZEN_1_0` — pełny zakres 1.0, stabilny kontrakt, testy zgodności. Gramatyka/wersja: kretl-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Czym jest

KretL opisuje plugin: tożsamość, zgodność z Core i API, uprawnienia (deklaracje), cykl życia, tryb wykonania, limity, izolację, obszary danych, zależności i komendy hosta. Nie zawiera logiki. Jedyny manifest bieżącej generacji to plugin.kretl w katalogu głównym projektu.

Dla początkujących

Wyobraź sobie KretL jako „dowód osobisty” i „umowę” pluginu. Mówi, kim plugin jest (id, nazwa, wersja), z którą wersją Kret Engine współpracuje, o co prosi (uprawnienia) i którą funkcję KretS wywołać przy starcie i zatrzymaniu. Sam niczego nie wykonuje i niczego nie przyznaje — prośba o uprawnienie to tylko deklaracja.

Dla zaawansowanych programistów

Gramatyka węzłów (Name value* { node* }) jest niezależna od znaczenia pól; znaczenie nadaje walidator sterowany schematem sekcji (Kret.Link.ManifestSections) w trybie ścisłym. Kompilator zapisuje znormalizowany Build/manifest.json (kretl-manifest/1), który broker czyta ściśle i waliduje ponownie. Kontrole krzyżowe łączą manifest z kodem: handlery cyklu życia muszą istnieć w KretS (bez parametrów), a każda operacja hosta użyta w kodzie musi mieć zadeklarowane uprawnienie. Zamrożenie jest chronione sumami SHA-256 parsera i specyfikacji (kretl-1.0.contract.json) i korpusem 23 przypadków.

Jakie problemy rozwiązuje

Jedno, ścisłe miejsce opisu pluginu dla SDK, KretStudio, KPM i Core; wczesne wykrywanie błędów (nieznane pole, nieznane uprawnienie, brak handlera); jawne granice uprawnień przed uruchomieniem kodu.

Kiedy używać

  • każdy plugin bieżącej generacji (obowiązkowo)
  • deklarowanie uprawnień wymaganych i opcjonalnych
  • deklarowanie komend i zdarzeń hosta (handlers)
  • deklarowanie limitów, profilu i preferowanej izolacji
  • deklarowanie zależności między pluginami

Kiedy nie używać

  • zapisywanie logiki (KretL jej nie ma — użyj KretS)
  • ustawienia użytkownika (użyj KretConfig)
  • próba „nadania” uprawnień — deklaracja niczego nie przyznaje
  • stare manifesty KretL/Main.kret (generacja 0.4.x, tylko import przez kret import-legacy)

Współpraca z innymi technologiami

KretS (handlery cyklu życia i komend), KretDB (uprawnienia kretdb.*, obszar runtimeData.database), KretM (project { map }), KretPublish/KPM (identyfikator, wersja, uprawnienia w planie instalacji), Core (walidacja SDK + reguły układu hosta).

Obecny status

FROZEN_1_0 — pełny zakres 1.0, stabilny kontrakt, testy zgodności.

Dalej: ARCHITECTURE.md · SYNTAX_REFERENCE.md · ../Tutorials/BASIC/TUTORIAL_PL.md

Otwórz cały rozdział ze źródłem →
KretL — referencja składni

KretL — referencja składni

Status 1.0: `FROZEN_1_0` — pełny zakres 1.0, stabilny kontrakt, testy zgodności. Gramatyka/wersja: kretl-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Opisane są wyłącznie konstrukcje potwierdzone implementacją SDK (i, gdzie zaznaczono, testami tej rundy).

manifestVersion

Wersja formatu manifestu; pierwsze pole.

manifestVersion "1.0"
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. manifestVersion "1.0"Wersja formatu manifestu KretL.
CechaWartość
Parametry / typytekst "1.0" (jedyna wartość)
Wynik—
Wymaganiaobowiązkowe
Ograniczeniainna wartość = odrzucenie
Możliwe błędyKCS-KRL-02xx (KL-I06)
Wprowadzono1.0

plugin { id name version }

Tożsamość pluginu.

plugin {
    id "LOCAL-KPL-XXXXXXXX"
    name "Nazwa"
    version "1.0.0"
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. plugin {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. id "LOCAL-KPL-XXXXXXXX"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  3. name "Nazwa"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  4. version "1.0.0"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  5. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typyid: identyfikator KCS rodziny KPL (oficjalny albo LOCAL-KPL- + 8 znaków z alfabetu A–H J–N P–Z 2–9); name: 1–64 znaki; version: SemVer
Wynik—
Wymaganiaobowiązkowe, dokładnie jeden blok
Ograniczeniaid innej rodziny (np. KLIB-) odrzucany
Możliwe błędyKCS-ID-*, KCS-VER-1, KCS-KRL-0204
Wprowadzono1.0

namespace, creatorId, metadata

Przestrzeń nazw (KCS-ID-8), identyfikator twórcy, dowolne metadane.

namespace "kretos.examples.x"
creatorId "kret-docs"
metadata {
    author "…"
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. namespace "kretos.examples.x"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  2. creatorId "kret-docs"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. metadata {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  4. author "…"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typycreatorId: [A-Za-z0-9._-]{1,64}; metadata: jedyny blok z dowolnymi polami
Wynik—
Wymaganiaopcjonalne
Ograniczeniaformat creatorId nieustalony (KL-T08)
Możliwe błędyKCS-KRL-0202
Wprowadzono1.0

compatibility

Zgodność z Core i API.

compatibility {
    core { min "0.5.0" }
    api { min "1.6" }
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. compatibility {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. core { min "0.5.0" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. api { min "1.6" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typyCore: SemVer, max SemVer albo N.x; API: MAJOR.MINOR albo N.x
Wynik—
Wymaganiamin obowiązkowe
Ograniczenianiezgodne wersje → KPM incompatible
Możliwe błędyKCS-VER-*
Wprowadzono1.0

permissions

Deklaracja uprawnień z katalogu KCS (168 nazw).

permissions {
    required {
        logs.own.write
    }
    optional {
        kretdb.read
    }
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. required {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. logs.own.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  5. optional {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  6. kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typynazwy KCS, dowolna liczba segmentów zgodna z katalogiem
Wynik—
Wymaganiaopcjonalne; wymagane, gdy kod używa operacji hosta
Ograniczeniakażda nazwa raz; deklaracja ≠ przyznanie
Możliwe błędyKCS-KRL-0206 (nieznana / unknown), KCS-KRL-0302 (brak w kodzie / missing for code)
Wprowadzono1.0

lifecycle

Operacje cyklu życia: install start suspend resume update repair healthcheck shutdown uninstall.

lifecycle {
    start "Main.Start" timeout 5s
    shutdown "Main.Shutdown" timeout 2s
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. lifecycle {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. start "Main.Start" timeout 5sOdwołanie lifecycle do funkcji KretS; sprawdź nazwę i timeout.
  3. shutdown "Main.Shutdown" timeout 2sOdwołanie lifecycle do funkcji KretS; sprawdź nazwę i timeout.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typy"Moduł.funkcja" KretS bez parametrów; timeout 1 ms – 10 min (domyślnie 5 s)
Wynikhandler zwraca typ KCS (np. String, Unit)
Wymaganiastart i shutdown obowiązkowe
OgraniczeniaCore nie restartuje automatycznie (KL-C04)
Możliwe błędyKCS-KRL-0204, KCS-KRL-0301, KCS-KRL-0303
Wprowadzono1.0

execution

Tryb wykonania.

execution { primary "onDemand" }
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. execution { primary "onDemand" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
CechaWartość
Parametry / typytekst (np. "onDemand")
Wynik—
Wymaganiaobowiązkowe
Ograniczenialista dozwolonych wartości nieustalona w bazie wiedzy; tryb dodatkowy wymaga zgody użytkownika po stronie hosta
Możliwe błędyKCS-KRL-0204
Wprowadzono1.0

handlers

Komendy i zdarzenia, które host może dostarczyć pluginowi (on nazwa(…) w KretS).

handlers {
    command "counter.add"
    event "order.placed"
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. handlers {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. command "counter.add"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. event "order.placed"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typynazwy z kropkami
Wynik—
Wymaganiaopcjonalne; wymagane do wywołania komendy
Ograniczenianazwa spoza listy jest odrzucana przez brokera
Możliwe błędyKCS-KRL-02xx
Wprowadzono1.0 (pole wcześniej PROVISIONAL)

limits, runtime, resourcePolicy, isolation

Limity pamięci/CPU, profil zasobów, progi nadzorcy, preferowana izolacja.

limits {
    memory { max 64MB }
    cpu { max 5% }
}
runtime { profile "light" }
isolation { preferred "sandbox" }
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. limits {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. memory { max 64MB }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. cpu { max 5% }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  5. runtime { profile "light" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  6. isolation { preferred "sandbox" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
CechaWartość
Parametry / typymemory.max 1 MB – 64 GB; cpu.max w %; profil light|standard|advanced; izolacja process|sandbox
Wynik—
Wymaganiaopcjonalne
Ograniczeniaobcinane do sufitu profilu; host może podnieść izolację, nigdy jej nie obniża
Możliwe błędyKCS-KRL-0191 (ostrzeżenie / warning)
Wprowadzono1.0

runtimeData

Deklaracja obszarów danych: database userData cache logs backup temp.

runtimeData {
    database {
        path "Disk/"
    }
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. runtimeData {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. database {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. path "Disk/"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  5. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typyścieżka względna bez .., \, :
Wynik—
Wymaganiaopcjonalne
Ograniczeniapołożenie fizyczne wyznacza host (KL-C01)
Możliwe błędyKL-I11/I12 (odrzucenie / rejected)
Wprowadzono1.0

environment

Deklaracja platform (preferred/supported/experimental) i architektur.

environment {
    platforms {
        supported "windows"
    }
    architectures {
        supported "x64"
    }
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. environment {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. platforms {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. supported "windows"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  5. architectures {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  6. supported "x64"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typyteksty
Wynik—
Wymaganiaopcjonalne
OgraniczeniaplatformSupport jest przestarzałe (informacja KCS-KRL-0190)
Możliwe błędyKCS-KRL-0190
Wprowadzono1.0

project

Włącza mapę projektu KretM.

project {
    map "project.kretm"
    module "App"
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. project {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. map "project.kretm"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. module "App"Deklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typyścieżka mapy, opcjonalnie moduł
Wynik—
Wymaganiaopcjonalne
Ograniczenianiczego nie przyznaje
Możliwe błędyKCS-KRM-*
Wprowadzono1.0

dependencies, recovery, conflicts, provides, requires, …

Sekcje walidowane schematem sekcji i zapisywane w paczce (dependencies conflicts provides requires hardwareRequirements resources suspendPolicy recovery security update platformBundles platformCapabilities conditions).

dependencies {
    required {
        plugin "LOCAL-KPL-CALCAAAA" version ">=1.0.0"
    }
}
recovery {
    maxRetries 3
    retryDelay 2s
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. dependencies {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. required {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. plugin "LOCAL-KPL-CALCAAAA" version ">=1.0.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  5. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  6. recovery {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  7. maxRetries 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. retryDelay 2sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  9. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typywg schematu sekcji
Wynik—
Wymaganiaopcjonalne
Ograniczeniarecovery to deklaracja — o restarcie decyduje host
Możliwe błędyKCS-KRL-0202
Wprowadzono1.0
Otwórz cały rozdział ze źródłem →
KretL — samouczek BASIC

KretL — samouczek BASIC

Status 1.0: `FROZEN_1_0` — pełny zakres 1.0, stabilny kontrakt, testy zgodności. Gramatyka/wersja: kretl-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Cel: pierwszy plik, podstawowa struktura, najprostszy działający przykład, najczęstszy błąd, sposób uruchomienia.

Narzędzia: kret = <SDK>\Compiler\kret.exe (SDK 1.0.0-rc.3+kret.local.3), kretui-host = <SDK>\UiHost\kretui-host.exe. {DATA}/{OUT} = nowe, puste katalogi.

1. Najczęstsze błędy manifestu (tryb ścisły) (KRETL-B02-CommonManifestErrors)

Projekt: ../../Examples/BASIC_CommonManifestErrors/ · klasyfikacja VALIDATION_ONLY · Playground LOCAL_VALIDATE

Kroki (katalog roboczy: katalog przykładu):

  1. kret check valid --json — w wyniku: "succeeded": true
  2. kret check unknown-field --json — oczekiwany błąd — w wyniku: KCS-KRL-0202
  3. kret check unknown-permission --json — oczekiwany błąd — w wyniku: KCS-KRL-0206
  4. kret check missing-handler --json — oczekiwany błąd — w wyniku: KCS-KRL-0301

Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.

2. Pierwszy manifest plugin.kretl (KRETL-B01-HelloManifest)

Projekt: ../../Examples/BASIC_HelloManifest/ · klasyfikacja RUNNABLE_LOCAL · Playground LOCAL_EXECUTE

Kroki (katalog roboczy: katalog przykładu):

  1. kret check . --json — w wyniku: "succeeded": true
  2. kret build . — w wyniku: OK
  3. kret run . --policy host-policy.json --data {DATA} — w wyniku: manifest poprawny

Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.

Otwórz cały rozdział ze źródłem →

Ćwiczenie i sprawdzenie wiedzy

Porównaj valid, unknown-field i missing-handler w przykładzie błędów. Zapisz, która zmiana powoduje KCS-KRL-0202, a która KCS-KRL-0301.

Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.
Podpowiedzi
  • KretL opisuje plugin: tożsamość, zgodność z Core i API, uprawnienia (deklaracje), cykl życia, tryb wykonania, limity, izolację, obszary danych, zależności i komendy hosta. Nie zawiera logiki. Jedyny manifest bieżącej generacji to `plugin.kretl` w katalogu głównym projektu.
  • Odczytaj ograniczenia i oczekiwane błędy z dostarczonego samouczka; check i run są oddzielnymi krokami.
Omówienie rozwiązania

Odpowiedź oprzyj na pokazanym kodzie i rozdziale źródłowym. Zacznij od plugin.kretl w katalogu projektu. manifestVersion opisuje format dokumentu, a version wewnątrz plugin — wersję Twojego pluginu. compatibility określa zgodność Core/API. Funkcje nie należą do manifestu: lifecycle wskazuje handlery z plików KretS.

Porównujemy zapis z referencją. To ćwiczenie nie jest walidatorem programu.
Które podsumowanie jest zgodne z lekcją?

To quiz o opisanym kontrakcie. Nie kompiluje kodu, nie potwierdza wykonania programu i nie przyznaje nagród.

Podsumowanie i następny krok

Zacznij od plugin.kretl w katalogu projektu. manifestVersion opisuje format dokumentu, a version wewnątrz plugin — wersję Twojego pluginu. compatibility określa zgodność Core/API. Funkcje nie należą do manifestu: lifecycle wskazuje handlery z plików KretS.

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności