KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Zgodność i bezpieczne wydanie
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- Przeanalizuj CoreCompatibility. Oddziel poprawność manifestu, zgodność wersji i decyzję hosta; wskaż dowód dla każdego z tych trzech etapów.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
Zestaw minimum Core/API z wersją rzeczywistego hosta. check ocenia projekt według SDK, lecz nie potwierdza polityki instalacji w Core. Nie obniżaj deklarowanej wersji, aby ominąć odmowę: przeczytaj raport zgodności i zmień środowisko testu.
Praca z kodem źródłowym
Ten sam manifest w SDK i w Kret Engine (Core)
Pełniejszy manifest z sekcjami `environment`, `recovery`, `dependencies`, `runtimeData` i wszystkimi dziewięcioma operacjami cyklu życia. Ten sam projekt jest sprawdzany parserem SDK (`kret check`) i walidatorem referencyjnym Core (`KretCore.Test.exe check`), który dodaje reguły układu hosta (`Disk/`, mapa KretM, jedna generacja manifestu).
module Main
// Każda operacja cyklu życia to funkcja KretS bez parametrów.
fn Install() {
}
fn Start() {
log.info("start")
}
fn Suspend() {
}
fn Resume() {
}
fn Update() {
}
fn Repair() {
}
fn Healthcheck() -> Bool {
return true
}
fn Shutdown() {
}
fn Uninstall() {
}
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.// Każda operacja cyklu życia to funkcja KretS bez parametrów.Komentarz autora; nie jest wykonywany.fn Install() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn Start() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.log.info("start")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn Suspend() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn Resume() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn Update() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn Repair() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn Healthcheck() -> Bool {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return trueZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.fn Uninstall() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Oczekiwany wynik: Oba narzędzia akceptują projekt (kod wyjścia 0). Core dodatkowo raportuje generację manifestu i wynik SDK.
Typowy błąd: Kod KretS w `Disk/` — SDK może go przyjąć, ale Core odrzuci projekt (`disk_reserved`): `Disk/` jest zastrzeżony dla danych KretDB.
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 — zgodność i wersje / compatibility and versions
KretL — zgodność i wersje / compatibility and versions
Polski
- KretL 1.0 =
manifestVersion "1.0"; zmiana znaczenia → nowymanifestVersion(np."2.0"). - Poprawka parsera (PATCH) musi przejść korpus i aktualizuje sumę parsera w kontrakcie; kandydat
rc.3+kret.local.3ma nową sumę (oczekiwane, G-02), zachowanie 21/21. - Generacja 0.4.x (
KretL/Main.kret) — LEGACY_COMPATIBILITY: tylko walidacja ikret import-legacy. - MINOR w KretL 1.0 wyłącznie w
metadata.
KretL — kody diagnostyczne / diagnostic codes
KretL — kody diagnostyczne / diagnostic codes
| Kod / code | Polski |
|---|---|
KCS-KRL-0190 | platformSupport rozpoznane, nieinterpretowane (informacja) |
KCS-KRL-0191 | nieznana wartość izolacji (ostrzeżenie) |
KCS-KRL-0202 | nieznane pole (tryb ścisły) |
KCS-KRL-0204 | zła albo brakująca wartość (np. brak shutdown, timeout 5parsecs, id rodziny KLIB) |
KCS-KRL-0206 | uprawnienie spoza katalogu KCS |
KCS-KRL-0301 | handler cyklu życia nie istnieje w KretS |
KCS-KRL-0302 | operacja hosta w kodzie bez zadeklarowanego uprawnienia |
KCS-KRL-0303 | handler zwraca niedozwolony typ |
disk_reserved / mapping_required / ambiguous_generation | reguły układu hosta Core (nie składnia KretL) |
Format: kret-diagnostics/1 (kod, plik, wiersz, kolumna, zakres) / (code, file, line, column, range).
KretL — bezpieczeństwo / security
KretL — bezpieczeństwo / security
Polski
- Deklaracja uprawnienia niczego nie przyznaje (KCS-PERM-3).
- Status FROZEN_1_0 nie nadaje uprawnień KCS ani prawa do Production.
- Host może podnieść izolację, nigdy jej nie obniża; limity są obcinane do sufitów profilu.
- Uprawnienia PROVISIONAL (np.
kretdb.*,logs.own.write, sensory) są w Core blokowane do decyzji D-KCS-01.
KretL — rozwiązywanie problemów / troubleshooting
KretL — rozwiązywanie problemów / troubleshooting
| Problem (PL) | Rozwiązanie (PL) |
|---|---|
KCS-KRL-0202 przy polu, które „powinno działać” | sprawdź listę pól w specyfikacji; dowolne pola tylko w metadata { } |
KCS-KRL-0302 po dodaniu log.info | dodaj logs.own.write do permissions.required |
| Core odrzuca projekt, SDK akceptuje | reguły układu hosta: kod w Disk/, własne foldery bez mapy KretM, dwa manifesty różnych generacji |
| Plugin instaluje się, ale nie startuje w Core | uprawnienie PROVISIONAL zablokowane przez D-KCS-01 (plugin permissions <ID>) |
KretL — samouczek ADVANCED
KretL — samouczek ADVANCED
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: integracja z Core i innymi językami, KretDB, bezpieczny dostęp do API, pluginy, stan, testy, diagnostyka, uprawnienia.
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. Ten sam manifest w SDK i w Kret Engine (Core) (KRETL-A01-CoreCompatibility)
Projekt: ../../Examples/ADVANCED_CoreCompatibility/ · klasyfikacja VALIDATION_ONLY · Playground LOCAL_VALIDATE
Kroki (katalog roboczy: katalog przykładu):
kret check . --json— w wyniku:"succeeded": truecore check {PROJECT}
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
Przeanalizuj CoreCompatibility. Oddziel poprawność manifestu, zgodność wersji i decyzję hosta; wskaż dowód dla każdego z tych trzech etapów.
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. Zestaw minimum Core/API z wersją rzeczywistego hosta. check ocenia projekt według SDK, lecz nie potwierdza polityki instalacji w Core. Nie obniżaj deklarowanej wersji, aby ominąć odmowę: przeczytaj raport zgodności i zmień środowisko testu.
Podsumowanie i następny krok
Zestaw minimum Core/API z wersją rzeczywistego hosta. check ocenia projekt według SDK, lecz nie potwierdza polityki instalacji w Core. Nie obniżaj deklarowanej wersji, aby ominąć odmowę: przeczytaj raport zgodności i zmień środowisko testu.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →