Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Dozwolone i zabronione zależności

INTERMEDIATE30 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.
  • 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.

  1. database Mapped {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  3. table counters {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. value: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  7. }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 / polecenieOpis
kret checkmapa + kod względem mapy
ProjectMap.ToGraph() / MapGraph.ToJson()graf kretm-graph/1 dla narzędzi
Otwórz cały rozdział ze źródłem →
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

ElementStan w KretM
Struktura plikukretm "1.0", project "Nazwa" { version …; layer …; allow/deny …; file/folder … role …; constraints { … }; module … { … }; external …; link … }.
Rozszerzenie.kretm.
Komentarze//.
Wartościkind 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).
Limity512 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.0 FROZEN_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.

Otwórz cały rozdział ze źródłem →
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):

  1. kret check layer-violation --json — oczekiwany błąd — w wyniku: "succeeded": false
  2. kret check grant-attempt --json — oczekiwany błąd — w wyniku: KCS-KRM-0301

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

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

Ć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ć.

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

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 →

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

Polityka prywatności