KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Mapa projektu i modułów
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- W ProjectMap przypisz pliki do modułów i znajdź odwołanie do mapy w manifeście.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
KretM opisuje warstwy i moduły projektu oraz ich pliki. project { map } w KretL włącza sprawdzanie zależności KretS. To kontrola struktury projektu; nie biblioteka funkcji i nie system uprawnień.
Praca z kodem źródłowym
Mapa projektu: warstwy, moduły, mapa lokalna
Szablon SDK `core-plugin`: `project.kretm` (warstwy Ui → Logic → Data, `deny Ui -> Data`, moduły z katalogami, połączenia `link`) i mapa lokalna `Script/Orders/module.kretm`. Manifest włącza mapę blokiem `project { map … }`. KretM **niczego nie przyznaje** — tylko ogranicza zależności.
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: „zamówień: 2, pierwsze miało numer 1”.
Typowy błąd: Własne foldery projektu bez mapy KretM — Core odrzuca taki projekt (`mapping_required`).
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 — wprowadzenie
KretM — wprowadzenie
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.Czym jest
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.
Dla początkujących
Rysujesz plan projektu: które części (warstwy) mogą korzystać z których. Np. interfejs może wołać logikę, logika — dane, ale interfejs nie może sięgać do danych bezpośrednio. Kompilator pilnuje tych reguł.
Dla zaawansowanych programistów
deny wygrywa z allow; cykle zależności są błędem; katalogi modułów nie mogą się pokrywać; mapa lokalna może doprecyzować moduł (pliki, wejścia/wyjścia, właściciel, wyższa krytyczność), ale nie zmienić warstwy/katalogu ani rozszerzyć reguł. Ustalenie tej rundy (EXP-F01): gdy projekt ma mapę, moduły bibliotek KretLib z Libs/ też muszą należeć do modułów mapy (inaczej KCS-KRM-0311 + KCS-KRM-0302). Core: własne foldery wymagają mapy (mapping_required).
Jakie problemy rozwiązuje
Kontrola architektury projektu w czasie kompilacji; dane dla widoku struktury w KretStudio.
Kiedy używać
- mapa projektu i organizacja modułów
- reguły warstw (Ui → Logic → Data)
- projekty z własnymi folderami w Core
Kiedy nie używać
- deklarowanie uprawnień (
KCS-KRM-0301) - publikowanie bibliotek (to KretLib dziś, KretMod w przyszłości)
- importy między projektami (brak w 1.0)
Współpraca z innymi technologiami
KretL (project { map }), KretS (kontrola use/odwołań), KretLib (moduły Libs/ w mapie), Core (mapping_required), KretStudio (kretm-graph/1).
Obecny status
FROZEN_SUPPORTED_SUBSET — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0.
Dalej: ARCHITECTURE.md · SYNTAX_REFERENCE.md · ../Tutorials/BASIC/TUTORIAL_PL.md
KretM — referencja składni
KretM — referencja składni
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.Opisane są wyłącznie konstrukcje potwierdzone implementacją SDK (i, gdzie zaznaczono, testami tej rundy).
layer / allow / deny
Warstwy i reguły zależności.
layer Ui
layer Logic
allow Ui -> Logic
deny Ui -> Data
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
layer UiOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.layer LogicOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.allow Ui -> LogicOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.deny Ui -> DataOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
| Cecha | Wartość |
|---|---|
| Parametry / typy | nazwy warstw |
| Wynik | — |
| Wymagania | — |
| Ograniczenia | deny wygrywa |
| Możliwe błędy | KCS-KRM-0302, 0308 |
| Wprowadzono | 1.0 |
module
Moduł mapy: warstwa, rodzaj, katalog, zależności, pliki, wejścia/wyjścia.
module Orders {
layer Logic
kind library
path "Script/Orders/"
uses Storage
files {
"Orders.krs" role source
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module Orders {Deklaracja modułu KretS; porównaj nazwę z nazwą pliku.layer LogicOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kind libraryOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.path "Script/Orders/"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.uses StorageOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.files {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji."Orders.krs" role sourceOdczytaj 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.
| Cecha | Wartość |
|---|---|
| Parametry / typy | pola wg tabeli wartości |
| Wynik | — |
| Wymagania | zadeklarowane pliki muszą istnieć |
| Ograniczenia | katalogi bez nakładania, bez wyjścia poza projekt |
| Możliwe błędy | KCS-KRM-0303, 0304, 0309, 0311 |
| Wprowadzono | 1.0 |
link / external / constraints
Połączenia (wymagają pasujących output/input), wejścia/wyjścia projektu, ograniczenia.
link App -> Orders kind event name "order.requested"
constraints {
relations data event
localMaps allowed
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
link App -> Orders kind event name "order.requested"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.constraints {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.relations data eventOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.localMaps allowedOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | — |
| Wynik | — |
| Wymagania | — |
| Ograniczenia | — |
| Możliwe błędy | KCS-KRM-0307 |
| Wprowadzono | 1.0 |
mapa lokalna / local map
Doprecyzowanie jednego modułu.
kretm "1.0"
module Orders {
owner "zespół logiki"
criticality critical
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kretm "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.module Orders {Deklaracja modułu KretS; porównaj nazwę z nazwą pliku.owner "zespół logiki"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.criticality criticalOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | — |
| Wynik | — |
| Wymagania | wskazana polem map modułu |
| Ograniczenia | nie zmienia warstwy/rodzaju/katalogu (0305), nie rozszerza reguł (0306), jeden poziom |
| Możliwe błędy | KCS-KRM-0305, 0306 |
| Wprowadzono | 1.0 |
KretM — samouczek BASIC
KretM — samouczek BASIC
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: 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. Mapa projektu: warstwy, moduły, mapa lokalna (KRETM-B01-ProjectMap)
Projekt: ../../Examples/BASIC_ProjectMap/ · klasyfikacja RUNNABLE_LOCAL · Playground LOCAL_EXECUTE
Kroki (katalog roboczy: katalog przykładu):
kret check . --json— w wyniku:"succeeded": truekret run . --policy host-policy.json --data {DATA}— w wyniku:zam
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
W ProjectMap przypisz pliki do modułów i znajdź odwołanie do mapy w manifeście.
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. KretM opisuje warstwy i moduły projektu oraz ich pliki. project { map } w KretL włącza sprawdzanie zależności KretS. To kontrola struktury projektu; nie biblioteka funkcji i nie system uprawnień.
Podsumowanie i następny krok
KretM opisuje warstwy i moduły projektu oraz ich pliki. project { map } w KretL włącza sprawdzanie zależności KretS. To kontrola struktury projektu; nie biblioteka funkcji i nie system uprawnień.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →