KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Błędy kontraktu i stream
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- W ContractErrorsAndStreams wskaż oczekiwany błąd kontraktu i osobne ograniczenie Core.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
Porównuj wersje, typy i nazwy metod na obu końcach kontraktu. Eksport usług, stream w Core i produkcyjne kretlink.* pozostają zablokowane. Nie traktuj pozytywnej walidacji SDK jako testu zdalnego połączenia.
Praca z kodem źródłowym
Błędy kontraktu i strumienie (EXPERIMENTAL)
Nieznany typ parametru jest błędem kompilacji kontraktu. Metoda `stream` kompiluje się z ostrzeżeniem `KCS-LNK-0121`: transport strumieni jest eksperymentalny (D-KCS-13) i nie należy do kontraktu 1.0.
klink "1.0"
service demo.bad {
version "1.0.0"
method add {
param a NoSuchType
returns Int64
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
klink "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.service demo.bad {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.version "1.0.0"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.method add {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.param a NoSuchTypeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.returns Int64Odczytaj 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.Pusta linia oddziela fragmenty źródła.
Oczekiwany wynik: Pierwszy krok: kod 1; drugi: kod 0 z ostrzeżeniem `KCS-LNK-0121`.
Typowy błąd: Traktowanie skompilowanego kontraktu jako zgody na eksport usługi pluginu — eksport usług pluginów i produkcyjne uprawnienia `kretlink.*` są zablokowane (A17, FB-06).
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.
KretLink — API / CLI
KretLink — API / CLI
Polski
| API / polecenie | Opis |
|---|---|
kret link compile <kontrakt.klink> [-o plik.json] | postać kanoniczna |
kret link schema <kontrakt.klink> | JSON Schema żądań i wyników |
kret link call / stream --pipe … --contract … --method … [--secret-env ZMIENNA] | klient RPC (sekret z env) |
KretLink — specyfikacja (zakres kontraktu 1.0)
KretLink — specyfikacja (zakres kontraktu 1.0)
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: klink-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/08_KRETLINK_SPECIFICATION.md- SDK
05_Integration/KretLink/README.md
Elementy języka
| Element | Stan w KretLink |
|---|---|
| Struktura pliku | klink "1.0", service nazwa { version "SemVer"; method …; stream … }. |
| Typy | Bool Int64 Float64 String Bytes Unit (tylko wynik), List<T>, Map<String,T>, T? (złożone w cudzysłowie). |
| Komentarze | //. |
| Logika | brak — tylko kontrakt. |
Zakres poza kontraktem / ograniczenia
- eksport usług pluginów (zablokowany)
- RPC między komputerami (NOT_SUPPORTED)
- rekordy w kontraktach (NOT_SUPPORTED)
- Linux/macOS (tożsamość procesu niedostępna — NOT_SUPPORTED)
klink-1.0+kretlink-rpc/11.0; rekordy, multi-host, strumienie od klienta — NOT_SUPPORTED.kretlink-local/1przyjmuje ramki do 1 MiB, broker czyta 512 KiB — znana niespójność (zgłoszona w SDK).
Pełna referencja konstrukcji: SYNTAX_REFERENCE.md.
KretLink — samouczek INTERMEDIATE
KretLink — samouczek INTERMEDIATE
Status 1.0: `FROZEN_SUPPORTED_SUBSET` — zamrożony dokładnie opisany zakres; reszta poza kontraktem 1.0. Gramatyka/wersja: klink-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. Błędy kontraktu i strumienie (EXPERIMENTAL) (KRETLINK-I01-ContractErrorsAndStreams)
Projekt: ../../Examples/INTERMEDIATE_ContractErrorsAndStreams/ · klasyfikacja VALIDATION_ONLY · Playground LOCAL_VALIDATE
Kroki (katalog roboczy: katalog przykładu):
kret link compile bad-type.klink— oczekiwany błąd — w wyniku:KCS-LNKkret link compile stream.klink— w wyniku:KCS-LNK-0121
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
W ContractErrorsAndStreams wskaż oczekiwany błąd kontraktu i osobne ograniczenie Core.
Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.Podpowiedzi
- KretLink to wersjonowane kontrakty usług (`.klink`) i dwa protokoły: łącze broker↔plugin `kretlink-local/1` (stdin/stdout) oraz RPC `kretlink-rpc/1` na potokach nazwanych (tożsamość procesu, wzajemny HMAC, terminy). Kontrakt można walidować, ale **nie daje on prawa do komunikacji**. Eksport usług pluginów, `stream` w Core i produkcyjne uprawnienia `kretlink.*` są zablokowane (A17, FB-06).
- 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. Porównuj wersje, typy i nazwy metod na obu końcach kontraktu. Eksport usług, stream w Core i produkcyjne kretlink.* pozostają zablokowane. Nie traktuj pozytywnej walidacji SDK jako testu zdalnego połączenia.
Podsumowanie i następny krok
Porównuj wersje, typy i nazwy metod na obu końcach kontraktu. Eksport usług, stream w Core i produkcyjne kretlink.* pozostają zablokowane. Nie traktuj pozytywnej walidacji SDK jako testu zdalnego połączenia.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →