KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Dozwolone i zabronione zależności
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- W MapViolations wskaż zakazane połączenie i jego legalną alternatywę w architekturze.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
allow i deny określają zależności, które kompilator porównuje z kodem. Nie naprawiaj odmowy przez usunięcie całej mapy. Najpierw ustal, czy połączenie jest zamierzone i na jakiej warstwie powinno wystąpić.
Praca z kodem źródłowym
Naruszenia mapy: warstwy i próba przyznania uprawnień
Wariant `layer-violation/`: moduł warstwy Ui woła moduł warstwy Data mimo `deny Ui -> Data`. Wariant `grant-attempt/`: mapa lokalna próbuje zapisać uprawnienie — `KCS-KRM-0301`.
database Mapped {
version = 1
table counters {
name: String primary key
value: Int
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
database Mapped {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.table counters {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.value: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Oczekiwany wynik: Oba sprawdzenia kończą się kodem 1 z diagnostyką KretM/KretS.
Typowy błąd: Oczekiwanie, że `allow` w mapie lokalnej rozszerzy reguły projektu — mapa lokalna może tylko doprecyzować moduł (`KCS-KRM-0306`).
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.
KretM — API / CLI
KretM — API / CLI
Polski
| API / polecenie | Opis |
|---|---|
kret check | mapa + kod względem mapy |
ProjectMap.ToGraph() / MapGraph.ToJson() | graf kretm-graph/1 dla narzędzi |
KretM — specyfikacja (zakres kontraktu 1.0)
KretM — specyfikacja (zakres kontraktu 1.0)
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: kretm-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Źródła normatywne (kopie w Sources/, kolejność pierwszeństwa: decyzje właściciela → zamrożony kontrakt → kod SDK → testy):
LANGUAGE_FREEZE_1_0/10_KRETM_SPECIFICATION.md- SDK
04_Languages/KretM/SPEC.md
Elementy języka
| Element | Stan w KretM |
|---|---|
| Struktura pliku | kretm "1.0", project "Nazwa" { version …; layer …; allow/deny …; file/folder … role …; constraints { … }; module … { … }; external …; link … }. |
| Rozszerzenie | .kretm. |
| Komentarze | //. |
| Wartości | kind plugin|library|flow|ui|app|bridge|data, visibility internal|public, criticality low|normal|high|critical, status planned|experimental|active|deprecated, połączenia data|event|ui|bridge|api|runtime|config, role plików (source data ui style theme config manifest asset test doc build flow ai map bridge library). |
| Limity | 512 modułów, 64 warstwy, 4096 wpisów plików. |
Zakres poza kontraktem / ograniczenia
- deklarowanie uprawnień (
KCS-KRM-0301) - publikowanie bibliotek (to KretLib dziś, KretMod w przyszłości)
- importy między projektami (brak w 1.0)
kretm-1.0FROZEN_SUPPORTED_SUBSET; brak wersjonowania map i migracji, brak map zagnieżdżonych głębiej.- Ekran POST Core pokazuje „KretM / KretLink NOT FROZEN” — tekst nieaktualny wobec freeze (G-14).
Pełna referencja konstrukcji: SYNTAX_REFERENCE.md.
KretM — samouczek INTERMEDIATE
KretM — samouczek INTERMEDIATE
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: kretm-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Cel: moduły, łączenie funkcji, dane, konfiguracja, komunikacja, obsługa błędów, interfejsy SDK.
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. Naruszenia mapy: warstwy i próba przyznania uprawnień (KRETM-I01-MapViolations)
Projekt: ../../Examples/INTERMEDIATE_MapViolations/ · klasyfikacja VALIDATION_ONLY · Playground LOCAL_VALIDATE
Kroki (katalog roboczy: katalog przykładu):
kret check layer-violation --json— oczekiwany błąd — w wyniku:"succeeded": falsekret check grant-attempt --json— oczekiwany błąd — w wyniku:KCS-KRM-0301
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
W MapViolations wskaż zakazane połączenie i jego legalną alternatywę w architekturze.
Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.Podpowiedzi
- KretM opisuje strukturę projektu: warstwy, moduły z katalogami i plikami, dozwolone (`allow`) i zakazane (`deny`) zależności oraz połączenia. Kompilator sprawdza kod KretS względem mapy. **KretM niczego nie przyznaje** i **nie jest językiem bibliotek funkcji** (to rola KretMod). Mapę włącza `project { map }` w KretL.
- 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. allow i deny określają zależności, które kompilator porównuje z kodem. Nie naprawiaj odmowy przez usunięcie całej mapy. Najpierw ustal, czy połączenie jest zamierzone i na jakiej warstwie powinno wystąpić.
Podsumowanie i następny krok
allow i deny określają zależności, które kompilator porównuje z kodem. Nie naprawiaj odmowy przez usunięcie całej mapy. Najpierw ustal, czy połączenie jest zamierzone i na jakiej warstwie powinno wystąpić.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →